Prosty Blog - Tworzenie Kanału RSS
14 July 2008
Comments
Kanały RSS, Feedy to określenie odnoszące się do plików zawierających dane zapisane w określonym formacie XML. Dla przykładu pobierz jeden z "kanałów" gazety wyborczej: plik xml, strona z kanałami. Oglądając taki plik w edytorze tekstowym zauważymy "nagłówek"
<?xml version="1.0" encoding="ISO-8859-2"?>
<rss version="2.0"><channel xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<title>InternetTechnologie.Gazeta.pl</title>
<link>http://www.gazeta.pl</link>
<description>Internet, technologie</description>
<language>pl</language>
<copyright>Copyright © Agora SA All rights reserved.</copyright>
<lastBuildDate>Wed, 2 Aug 2006 21:29:37 +0200</lastBuildDate>
<image>
<title>Gazeta.pl</title>
<url>http://www.gazeta.pl/img/w/l/gazeta.gif</url>
<link>http://www.gazeta.pl</link>
<width>68</width>
<height>25</height>
</image>
<item>
<guid>http://gospodarka.gazeta.pl/gospodarka/1,68367,3522034.html?skad=rss</guid>
<link>http://gospodarka.gazeta.pl/gospodarka/1,68367,3522034.html?skad=rss</link>
<title>Czy TP SA przemianuje portal wp.pl na orange.pl?</title>
<description>TP SA mianowaa nowego prezesa Wirtualnej Polski. Czy pod jego rzdami portal zmieni mark?na Orange? </description>
<category>InternetTechnologie.Gazeta.pl</category>
<pubDate>Tue, 1 Aug 2006 23:00:00 +0200</pubDate>
</item>
</channel></rss>
Jak zrobić własny kanał RSS ?
Wystarczy kazać PHP na wyświetlenie identycznego kodu. Tworzymy szkieletowy widok news_rss.php:<rss version="2.0"><channel xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<title>Mój Blog</title>
<link>http://www.mojblog.pl</link>
<description>Wieści z Blogu Ryśka</description>
<language>pl</language>
<copyright>Copyright © Rychu SA</copyright>
<lastBuildDate>Wed, 2 Aug 2006 21:29:37 +0200</lastBuildDate>
<image>
<title>Blog Ryśka</title>
<url>http://www.mojblog.pl/img.gif</url>
<link>http://www.mojblog.pl</link>
<width>68</width>
<height>25</height>
</image>
// tutaj dane
</channel></rss>
Teraz trzeba zapełnić "kanał" danymi. Musimy pobrać dane z bazy danych, np 10 ostatnich newsów i wyświetlić co trzeba w pętli. W kontrolerze blog tworzymy metodę:
<?php
function rss_feed()
{
header("Content-Type: text/xml; charset=utf-8");
$this->load->model('News');
$query = $this->News->get_latest_news();
if ($query->num_rows() > 0)
{
$this->load->view('news_rss', array('result' => $query->result()));
}
}
<?php
function get_latest_news()
{
$this->db->orderby("news_id", "desc");
return $this->db->get('news', 10);
}
<rss version="2.0"><channel xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<title>Mój Blog</title>
<link>http://www.mojblog.pl</link>
<description>Wieści z Blogu Ryśka</description>
<language>pl</language>
<copyright>Copyright © Rychu SA</copyright>
<lastBuildDate>Wed, 2 Aug 2006 21:29:37 +0200</lastBuildDate>
<image>
<title>Blog Ryśka</title>
<url>http://www.mojblog.pl/img.gif</url>
<link>http://www.mojblog.pl</link>
<width>68</width>
<height>25</height>
</image>
<?PHP
foreach($result as $val)
{
echo '<item>
<link>'.site_url().'</link>
<title>'.$val->news_title.' </title>
<description>'.substr($val->news_text, 0, 100).' </description>
<category>Blogi</category>
<pubDate>Tue, 1 Aug 2006 23:00:00 +0200</pubDate>
</item>';
}
?>
</channel></rss>
Feed jest praktycznie gotowy. Programy czytające je nie będą miały problemów z naszym:
RkBlog
Comment article