Tein Paulan korusivuille RSS-syötteen uusista koruista. Syöte on tässä tapauksessa yksinkertainen PHP-skripti, joka hakee kannasta uusimmat korut ja liittää mukaan tarvittavat metatiedot.

Toteutuksessa oli hyötyä seuraavista linkeistä:
RSS 2.0 spesifikaatio
Feed Validator
RSS Wikipediassa

Lopullinen syötte näyttää jotakuinkin tältä (vähän karsittuna):

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Paulan korut</title>
  <link>http://www.paulaminni.fi</link>
  <language>fi</language>
  <lastBuildDate>Sat, 03 May 2008 21:11:18 +0300</lastBuildDate>
  <item>
    <title>3.5.2008</title>
    <link>http://www.paulaminni.fi/korut/80</link>
    <guid>http://www.paulaminni.fi/korut/80</guid>
    <author>[sähköpostiosoite] (Paula Minni)</author>
    <description>
    <![CDATA[
        <img src="http://www.paulaminni.fi/kategoriat/Kaulakorut/_DSC0190.jpg" alt="" />
    ]]>
    </description>
  </item>
  <atom:link href="http://www.paulaminni.fi/feed.php" rel="self" type="application/rss+xml" />
</channel>
</rss>

Syötteen päivittymisajankohtana voidaan käyttää uusimman korun julkaisuajankohtaa. Julkaisuajankohta on MySQL:n timestamp-muodossa, josta se saadaan haluttuun muotoon esimerkiksi seuraavalla koodinpätkällä:

$lastBuildDate = date("D, d M Y H:i:s O", strtotime($timestamp));

Itemien descriptioneiden sisällä voi käyttää HTML-koodia, kunhan muistaa merkitä sen character dataksi:

<description>
<![CDATA[
    <!-- html-koodit tähän -->
]]>
</description>

Muuta huomionarvoista

RSS-syöte pitää tarjoilla palvelimelta application/rss+xml -muodossa. Helpoiten tämä onnistuu kun PHP:ssä sanoo ennen syötteen tulostamista: header('Content-type: application/rss+xml');

Selaimelle voi kertoa, että sivusta löytyy myös RSS-versio lisäämällä linkin syötteeseen XHTML-tiedoston head-osioon: <link rel="alternate" type="application/rss+xml" href="http://www.paulaminni.fi/feed.php" title="Tilaa syöte" />

Syötteen tekeminen oli yllättävän helppoa. Skriptiä voisi vielä jatkokehittää niin, että se cachettaisi valmiin syötteen, eikä rakentaisi sitä joka kerta uudestaan tyhjästä. Nykyisillä liikennemäärillä tämä ei vielä ole ongelma.

Kategoriat: web-kehitys PHP