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().