Tout d'abord, un flux RSS s'écrit en XML qui est un langage stricte, ce qui veut dire qu'il naccepte pas d'erreur dans le code sinon il est est illisible par les agrégateur de flux. Il y a plusieurs choses importantes à savoir avant de se plonger dans le code :
Chaque fichier RSS doit avoir le bout de code suivant, qui est indispensable. Pour faire simple, c'est lentête du fichier. Ce bout de code contient les informations sur votre site.
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>Le titre du site</title>
<link>http://www.monsite.com</link>
<description>La description du site, du flux</description>
<language>fr</language>
<copyright>Les infos sur les droits d'auteur</copyright>
<image>
<title>Titre de l'image du flux</title>
<url>http://www.monsite.com/image-de-mon-flux.jpg</url>
<link>http://www.monsite.com</link>
</image>
<pubDate>Sat, 20 Jan 2011 22:00:00 +0100</pubDate>
Un item est une information relative à un article de votre site. C'est simplement un aperçu de votre article original.
<item>
<title>Titre de votre article</title>
<link>http://www.monsite.com/url-de-mon-article.html</link>
<guid isPermaLink="true">http://www.monsite.com/url-de-mon-article.html</guid>
<description>Description de l'aricle originale.</description>
<pubDate>Sat, 20 Jan 2011 22:00:00 +0100</pubDate>
</item>
Ce bloc d'informations sera répété au nombre d'articles présents sur votre site. Il est tout de meme recommandé de le limité à 10 items.
<?php
$str = '<?xml version="1.0" encoding="UTF-8"?>';
$str .= '<rss version="2.0">';
$str .= '<channel>';
$str .= '<title>Titre du flux</title>';
$str .= '<link>http://www.monsite.com</link>';
$str .= '<description>Description du flux</description>';
$str .= '<copyright>Copyright 2011</copyright>';
$str .= '<language>fr</language>';
$str .= '<image>';
$str .= ' <title>Titre du flux</title>';
$str .= ' <url>http://www.monsite.com/image.jpg</url>';
$str .= ' <link>http://www.monsite.com</link>';
$str .= '</image>';
$date_du_jour= date("D, d M Y H:i:s +0100");
$str .= '<pubDate>'.$date.'</pubDate>';
require ('sql.php'); //fichier qui permet de se connecter à la base sql
$req =mysql_query("SELECT * FROM ma_table ORDER BY date DESC limit 0, 10");
while($tab=mysql_fetch_assoc($req)){
$titre=$tab["titre"];
$url=$tab["url"];
$contenu=$tab["contenu"];
$date=$tab["date"];
$date_article = date("D, d M Y H:i:s +0100", $date);
$str .= '<item>';
$str .= '<title>'.$titre.'</title>';
$str .= '<link>'.$url.'</link>';
$str .= '<guid>'.$url.'</guid>';
$str .= '<pubDate>'.$date_article.'</pubDate>';
$str .= '<description>'.$contenu.'</description>';
$str .= '</item>';
};
$str .= '</channel>';
$str .= '</rss>';
//on écrit le tout dans un fichier sur le serveur
$fp = fopen("rss.xml", 'w+');
fputs($fp, $str);
fclose($fp);
echo '<a href="rss.xml">Flux RSS</a>';
?>