RSS kanál v PHP
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.
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():
<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.
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 < a >. 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í.
Autor: PaBi3 ·
Kategória: Programovanie ·
Dátum: 12.06.2005 15:50


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre
obavam sa ze nenajdem, lebo nemam nainstalovany apache, a teda localhost mi nefunguje [wink]