Créer et diffuser un flux RSS
Il existe de nombreuses librairies PHP pour lire et utiliser un flux (feed) RSS sur son site web. Il en existe cependant beaucoup moins qui permettent de créer un fichier RSS correct à partir d'une série d'articles ou de news. La plupart des solutions que l'on trouve sur internet consistent à écrire manuellement le code XML correspondant. Ce n'est pas pratique, et mène souvent à des erreurs...
PHP Universal Feed Generator
Il existe heureusement une bonne librairie pour créer un flux RSS : le PHP Universal Feed Generator. Comme on peut le voir sur l'exemple ci-dessous, l'utilisation en est très simple:
require_once "FeedWriter.php";
require_once "FeedItem.php";
$feed = new FeedWriter();
$feed->setTitle('Titre de mon flux');
$feed->setLink('Adresse de mon flux.xml');
$feed->setDescription('Description de mon flux');
// $posts contient tous les articles à ajouter au flux
foreach ($posts as $post) {
// Pour chaque article, on crée un élément
$newItem = new FeedItem();
$newItem->setTitle($post->title);
$newItem->setLink($post->url);
$newItem->setDate($post->time_published);
$newItem->setDescription($post->content);
// Et on ajoute l'élément au flux...
$feed->addItem($newItem);
}
$feed->genarateFeed();
La version actuelle du fichier FeedWriter.php comporte cependant 2 petits bugs qu'il vous faudra corriger:
- ligne 41, dans CDATAEncoding, il faut ajouter 'title' et 'link', sinon les caractères accentués présents dans les titres ou les liens ne seront pas correctement encodés ;
- à la fin du fichier, supprimer la fonction __autoload car votre application possède probablement déjà sa propre fonction __autoload.
Les clients RSS génèrent énormément de trafic car ils vérifient le flux toutes les 30 min environ. Il faudra donc impérativement prévoir un système de cache, pour éviter de recréer entièrement le flux à chaque requête.
Feedburner
Pour réduire le nombre de requêtes, il est également possible d'utiliser Feedburner. Celui-ci va copier votre flux toutes les 30 min, et vous permet d'ajouter sur votre site un lien vers leur copie du flux, réduisant d'autant le trafic sur votre propre serveur. Il offre également d'autres avantages:
- il compte le nombre d'utilisateurs qui suivent votre flux et vous offre des statistiques détaillées;
- il permet aux utilisateurs de recevoir vos nouveaux posts par email;
- il peut publier automatiquement vos nouveaux posts sur Twitter.
Sur votre compte Twitter, il existe également une option qui publie directement vos tweets sur votre page Facebook. Il suffit donc de publier une nouveauté sur site ou blog pour qu'elle se propage automatiquement à Twitter et Facebook!
Découverte automatique
Certains navigateurs, ou certaines extensions, comme RSS Subscription Extension pour Chrome affichent automatiquement une icone dans la barre de navigation lorsqu'un flux RSS est présent dans la page.
Pour indiquer qu'un flux existe, il faut ajouter le lien suivant dans la section "head" de la page:
<link rel="alternate" type="application/rss+xml" title="Mon site.com" href="http://www.mon-site.com/rss.xml" />