Tikriausiai ne vienoje interneto svetainėje matėte galimybę užsiprenumeruoti naujienas per RSS srautą. Jei dar nežinote, kas tai yra, (nors tuo abejoju), tuomet „pagooglinkit“.
Šiame straipsnyje parodysiu, kaip tokį pasigaminti patiems.
Kaip viskas vyksta?
Jūsų PHP skriptas sugeneruoja XML failą, kurį RSS skaitytuvai iškoduoja ir atvaizduoja tvarkingą naujienų sąrašą.
Pradedame
Situacija:
Turime lentelę MySQL duomenų bazėje, kurioje saugomi visi įrašai, tarkim, lentelėje ‘posts’, kuri atrodo taip: id | title | post.
Taip pat kiekvienas įrašas turi savo puslapį svetainėje, tarkim, tokiu adresu: http://adresas.lt/post.php?id=<id>
Pasirašykim skriptą, kuris ištrauks įrašus iš duomenų bazės ir įdės juos į masyvą. Tame pačiame faile vėliau atvaizduosim ir RSS srautą, tik reikės vienos antraštės (header). Įsivaizduokime, kad jau esame prisijungę prie MySQL serverio ir duomenų bazės, todėl šios skripto dalies nerašysiu.
<?php
// ištraukiam visus įrašus mažėjimo tvarka pagal ID (naujausias įrašas - pirmas masyve)
$feed = mysql_fetch_assoc(mysql_query("SELECT * FROM posts ORDER BY id DESC"));
Dabar truputį aptarsime generuojamo XML failo struktūrą.
<rss version="2.0">
<channel>
<title>Pavadinimas</title>
<link>http://nuoroda.i.svetainę</link>
<description>Aprašymas</desription>
<item>
<!-- Čia apsirašo srauto įrašai.
Naujas įrašas, nauja <item> žymė.
Žymės tokios pačios, kaip ir aukščiau.
-->
<title>Įrašo pavadinimas</title>
<link>Nuoroda į įrašą</link>
<description>Įrašas</description>
</item>
</channel>
</rss>
Kaip matot, nieko sudėtingo, paprastas XML failas.
Tęsiame skriptą
Reikia nurodyti naršyklei, jog čia yra RSS srauto failas, todėl siunčiame antraštę ir, kadangi toliau aprašysime RSS, užbaigiam PHP kodą (?>):
header("Content-Type: application/rss+xml;charset=utf-8");
?>
Apsirašom RSS taip, kaip anksčiau:
<rss version="2.0">
<channel>
<title>Pavadinimas</title>
<link>http://nuoroda.i.svetainę</link>
<description>Aprašymas</desription>
Atvaizduojant įrašus patogu naudoti foreach sakinį, kadangi turime rezultatų masyvą.
<? foreach($feed as $post): ?>
<item>
<title><?= $post['title'] ?></title>
<link>http://adresas.lt/post.php?id=<?= $post['id'] ?></link>
<description><?= $post['post'] ?></description>
</item>
<? endforeach; ?>
</channel>
</rss>
Štai tiek, tikrai nėra nieko sudėtingo. O dabar visas skriptas:
<?php
// ištraukiam visus įrašus mažėjimo tvarka pagal ID (naujausias įrašas - pirmas masyve)
$feed = mysql_fetch_assoc(mysql_query("SELECT * FROM posts ORDER BY id DESC"));
header("Content-Type: application/rss+xml;charset=utf-8");
?>
<rss version="2.0">
<channel>
<title>Pavadinimas</title>
<link>http://nuoroda.i.svetainę</link>
<description>Aprašymas</desription>
<? foreach($feed as $post): ?>
<item>
<title><?= $post['title'] ?></title>
<link>http://adresas.lt/post.php?id=<?= $post['id'] ?></link>
<description><?= $post['post'] ?></description>
</item>
<? endforeach; ?>
</channel>
</rss>