RSS kanál v PHP

Určite poznáte RSS a chcete si vyskúšať aké je to vytvoriť ho sám. Tvorba RSS kanálu je popísaná v tomto článku a uvidíte, že to nieje nič zložité.
Dnes si ukážeme tvorbu jednoduchého RSS kanálu pre vašu webovú aplikáciu. Všetko čo budete potrebovať je základná znalosť PHP - zhruba po 13.diel nášho seriálu PHP pre začiatočníkov a znalosť (x)html. RSS - Really Simple Syndication je v dnešnej dobe veľmi rozšírené a jeho podpora nemôže chýbať redakčným systémom, blogom a v poslednej dobe ani témam v diskusiách či novinkám. V článku si ukážeme tvorbu RSS kanálu vygenerovaného PHP kódom. Konkrétnejšie budeme generovať RSS kanál vo verzií 2. Môžeme začať.
Prvé čo urobíme je navrhnutie tabuľky. Predpokladajme takúto štruktúru.
CREATE TABLE clanky (

id MEDIUMINT UNSIGNED NOT NULL auto_increment,

nadpis VARCHAR(255) NOT NULL,

uvod TEXT NOT NULL,

obsah TEXT NOT NULL,

datum DATETIME NOT NULL,

rss VARCHAR(255) NOT NULL,

PRIMARY KEY(id)

);
V tabuľke si všimnite stĺpce datum a rss. Do datum sa bude ukladať klasický čas pomocou MySQL - datetime. Ale do RSS sa bude ukladať čas inak. Bude to v tvare, ktorý zabezpečí validitu RSS kanálu a kvalitnú funkčnosť. Dátum pre RSS kanál budeme ukladať v nasledovnom tvare(napr.):
Sat, 11 Jun 2005 14:56:11 GMT
Aby sme ho tak mohli aj ukladať stačí ak si pri vydávaní článku uložíme do stĺpca rss. Tento čas nám PHP vygeneruje v prítomnom čase pomocou funkcie gmdate():
gmdate('D, d M Y H:i:s').' GMT';
Predtým ako si ukážeme výsledný kód pre generovanie RSS kanálu si popíšeme XML tagy, ktoré budú použité v PHP kóde.
<rss> - započatie RSS
<channel> - úvodný začiatok kanálu
<link> - URL stránky/článku
<description> - Popis stránky/článku
<pubDate> - dátum vydania
<lastBuildDate> - posledná úprava
<webMaster> - email administrátora
<image> - logo stránky
<title> - nadpis článku/obrázku
<item> - obsahová časť RSS(články)

Teraz by vám malo byť jasné o aké XML tagy pôjde. A uistí vás o tom aj zdrojový kód RSS kanálu.
<?php #rss.php

header("Content-Type: text/xml; charset=UTF-8");

require_once("mysql.php"); // súbor na pripojenie do databázy

$rss_datum = gmdate('D, d M Y H:i:s').' GMT';

$title = "Názov kanálu RSS";

$url = "http://www.domena.tld/";

$description = "Slogan alebo popis stránky";

$lang = "sk";

$email = "email@domena.tld";

$logo = "http://www.domena.tld/logo.png";



echo '<?xml version="1.0" encoding="UTF-8" ?>';

echo '<rss version="2.0">';

echo '<channel>';

echo '<title>'.$title.'</title>';

echo '<link>'.$url.'</link>';

echo '<description>'.$description.'</description>';

echo '<language>'.$lang.'</language>';

echo '<pubDate>'.$rss_datum.'</pubDate>';

echo '<lastBuildDate>'.$rss_datum.'</lastBuildDate>';

echo '<webMaster>'.$email.'</webMaster>';

echo '<image>';

echo '<title>'.$title.'</title>';

echo '<url>'.$logo.'</url>';

echo '<link>'.$url.'</link>';

echo '</image>';



$sql = mysql_query("SELECT * FROM clanky ORDER BY datum DESC LIMIT 10");

while($kanal = mysql_fetch_array($sql, MYSQL_BOTH)){

$id = $kanal["id"]; // id článku

$nadpis = $kanal["nadpis"];

$nadpis = htmlspecialchars($nadpis); // ošetrenie na entity

$uvod = $kanal["uvod"];

$uvod = htmlspecialchars($uvod); // ošetrenie na entity

$rss = $kanal["rss"];

echo '<item>';

echo '<title>'.$nadpis.'</title>';

echo '<link>'.$url.'clanok.php?id='.$id.'</link>';

echo '<description>'.$uvod.'</description>';

echo '<pubDate>'.$rss.'</pubDate>';

echo '</item>';

}

echo '</channel>';

echo '</rss>';



mysql_close(); // ukončenie práce s DB

?>
RSS kanál budeme volať odkazom na súbor rss.php. Záleží na tom ako si ho nazvete. Externý súbor mysql.php je len predstavovaný. Je to pripojenie do databázy. To môžete vykonať aj priamo v skripte rss.php pomocou funkcie mysql_connect(). Určite neprehliadnete ani funkciu htmlspecialchars(). Slúži na prepísanie znakov ako napr < a > na &lt; a &gt;. Teraz sa vám nemôže stať, že by sa váš RSS kanál poškodil :-). Kódovanie UTF-8 je pre RSS ako stvorené ale záleží na vás v akom kódovaní máte uložené články/novinky alebo pod.. Vždy zvoľte vami používané kódovanie pre spätnú kompatibilitu. Príklad spracovania RSS kanálu nájdete tu. RSS kanál, ktorý sme vytvorili je len miernym započatím k jeho tvorbe. Verím, že ešte urobíte veľa vylepšení.
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 12.06.2005 15:50

Komentáre

#1 LittleMan Web
11.04.2006 23:15
Príklad spracovania RSS kanálu
nájdete tu.

obavam sa ze nenajdem, lebo nemam nainstalovany apache, a teda localhost mi nefunguje [wink]

#2 admin Web E-mail
12.04.2006 13:51
admin Sorry, chybu som už opravil [wink].

#3 pato1 Web E-mail
29.10.2009 20:34
Sú povinné tie dátumy?

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti