Créer un système de flux RSS

Introduction

Les flux RSS sont un moyen d'être tenu rapidement informé lors des mises à jour, de nouveaux articles, ...

Principalement intégrés au navigateur ou au logiciel de messagerie, les lecteurs de ces flux notifient les utilisateurs dès qu'un évènement se produit et peut permettre à l'utilisateur d'être redirigé sur une page web contenant plus d'informations.

J'utilise ce système pour mon blog : lors de la création d'un nouvel article, les visiteurs suivants mon flux RSS sont directement informé ; le titre de mon article est envoyé et ils ont la possibilité d'avoir plus d'informations en étant redirigé vers l'article.

Nous allons voir dans cet article comment ajouter cette fonctionnalité sur votre site (blog, actualité, ...).

Mise en forme du RSS

Le RSS est à écrire en XML.

On commence tout d'abord notre page en précisant la version du XML :

1 <?xml version="1.0" encoding="utf-8" ?>

On précise ensuite la version du RSS :

1 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
2     ...
3 </rss>

Il nous faut maintenant insérer notre flux à l'intérieur, englobé par la balise <channel> :

1 <?xml version="1.0" encoding="utf-8" ?>
2 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
3     <channel>
4         ...
5     </channel>
6 </rss>

Les En-têtes

On commence par fournir quelques informations sur ce flux.

  • Lien du flux :
1 <atom:link href="http://www.dewep.net/Blog/rss.xml" rel="self" type="application/rss+xml" />
  • Titre du flux :
1 <title>Blog Dewep.net</title>
  • Description du flux :
1 <description>Mes derniers articles informatiques.</description>
  • Lien du site :
1 <link>http://www.dewep.net</link>

Les articles/items

On y insère ensuite nos derniers items (les 20 derniers par exemple).

Chaque item doit être englobé par la balise <item>. On peut ensuite y mettre comme informations :

  • Le titre (balise <title>)
  • Le lien (<link>)
  • La date de publication (<pubDate>) : le format de la date doit être RFC 2822 (date("r") en PHP).
  • La description (<description>)
  • Un identifiant unique (<guid>) : l'attribut isPermaLink="true" permet de préciser que l'identifiant est un lien (c'est plus facile de mettre le lien de l'article par exemple)
  • Adresse E-Mail de l'auteur (<author>)

Exemple :

1 <item>
2 <title>Créer un thème sur GFXBoot (Grub Legacy graphique)</title>
3     <link>http://www.dewep.net/Blog/Article-16/Creer-un-theme-sur-GFXBoot-Grub-Legacy-graphique</link>
4     <guid isPermaLink='true'>http://www.dewep.net/Blog/Article-16/Creer-un-theme-sur-GFXBoot-Grub-Legacy-graphique</guid>
5     <pubDate>Thu, 31 Jan 2013 13:25:47 +0100</pubDate>
6     <description>Ce tutoriel permettra de créer un thème pour son GFXBoot (un Grub Legacy graphique), grâce au fichier menu.lst présent dans /boot/grub.</description>
7 </item>

Il suffit de faire ceci pour chacun de vos items.

Le lecteur de flux RSS de l'utilisateur verra donc dès qu'un nouvel article est disponible.

Si vous souhaitez fournir plus d'informations, vous pouvez regarder la doc du RSS 2.0 : http://feed2.w3.org/docs/rss2.html.

Headers

Afin que le lecteur de flux et/ou le navigateur interprète bien votre page comme un fichier RSS, il faut lui préciser dans les headers de la page.

Il suffit de désactiver le cache de la page et lui dire de la considérer comme application/rss+xml.

En PHP, il faut utiliser la fonction header :

1 header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
2 header('Content-Type: application/rss+xml; charset=utf-8');

Démonstration

Si vous souhaitez avoir un fichier complet pour vous aider, vous pouvez tout à fait regarder la source de celui de mon blog : /realisations.rss.


PHP RSS

Article publié le 7 Mars 2013.

Commentaires