Jak na (šablonu) RSS 2.0 v PHP?
Posílal jsem včera Jirkovi Lahvičkovi, weblogy.cz, šablonu pro RSS 2.0, aby měl její zapracování na jeho web poněkud rychlejší. A myslím, že by to mohlo pomoci více lidem, takže, uvádím jednoduchý algoritmus pro vytvoření RSS 2.0 šablony v PHP.
Jednotlivé funkce jsou komentované přímo v kódu, takže nepotřebují moc dalšího komentáře:
// exportuje posledních 20 článků jako RSS function exportRSSS(){ putHeader(); $q=mysql_query( 'select title, body, link, '. ' UNIX_TIMESTAMP(datum) as dt '. 'from items '. 'order by dt desc '. 'limit 0,20'); while ($row=mysql_fetch_object($q)) putItem($row); putEnd(); }
A vlastní implementace funkcí:
// hlavička function putHeader(){ // nastavení typu aplikace XML header ("Content-type: text/xml"); echo '<?xml version="1.0" encoding="iso-8859-2">'; ?> <rss version="2.0"> <channel>" <title>Občasný O'blog</title> <link>https://myego.cz/</link> <description>Vše o Nucleusu</description> <language>cs</language> <generator>Nucleus CMS</generator> <copyright>(c) Radek Hulan</copyright> <category>weblog</category> <image> <url>http://hulan.cz/logo.gif</url> <title>Občasný O'blog</title> <link>https://myego.cz/</link> </image> <docs>http://backend.userland.com/rss</docs> <?php }
// musíme odstranit XHTML tagy function encode_xml($data){ return strip_tags( str_replace( '</p>', "n", str_replace( '<br />', "n", $data))); } // zapsání jedné položky function putItem($o) { // odstranění tagů.. $itemtitle=encode_xml($o->title); $itembody=encode_xml($o->body); $itemlink=$o->link; // datum jako Sat, 15 May 2004 01:20:56 +0200 $itempubdate=strval(date("r",$o->dt)); echo "<item>"; echo "<title>$itemtitle</title>"; echo "<link>$itemlink</link>"; echo "<description>$itembody</description>"; echo "<pubDate>$itempubdate</pubDate>"; echo "</item>"; }
// patička function putEnd() { echo "</channel>"; echo "</rss>"; }
Pro praktické využité je to samozřejmě více než vhodné "obalit objektem", zejména z důvodu možnosti podědění funkce exportRSS().