How to create your own rss feed

Utiliser un flux RSS est une manière efficace de permettre aux utilisateurs de votre site de rester en phase avec son contenu. C'est donc en partie une raison pour laquelle c'est largement utilisé par les célèbres blogs et sites.

Une fois qu'un utilisateur s'abonne à un flux RSS, il recevra une notification dès que vous posterez un nouvel article. Cela permet de fidéliser vos utilisateurs et du coup d'augmenter votre trafic. Cela vaut donc le coup d'être implémenté.

Ce tutoriel va vous guider à travers les différentes étapes nécessaires à la réalisation de votre propre flux RSS à partir du contenu de votre site.
  • Ressource Précédente
  • Télécharger
  • Ressource Suivante

Implémentation

Etape 1: La chaine de flux

La première chose qu'il faut savoir, c'est que les flux RSS ne vont pas se délivrer tout seul jusqu'à l'utilisateur. La première étape de ce tutoriel consiste donc à créer un transport pour eux. Ce transport suit une structure standard, c'est en fait un fichier XML comprenant une node appelée channel.

Cet élément XML possède plusieurs paramètres qu'il sera nécessaire de renseigner, comme un titre, un lien url, et une description pour commencer. Le code pour cette première étape pourrait donc s'apparenter à ceci:

  1. <?php
  2. header("content-type: text/xml"); //Tells the browser that we are going to
  3. write some xml with php
  4. ?>
  5.  
  6. <rss version="0.91">
  7.  
  8. <channel> //Start of the channel definition
  9.  
  10. <title>jdmweb</title> //Channel Title
  11. <link>http://www.jdmweb.com</link> //Channel Link
  12. <description> //Channel Description
  13. jdmweb.com is a website about web development,
  14. website creations and handy web tools for developpers
  15. by Jeremy Desvaux de Marigny.
  16. </description>
  17. <language>en-us</language> //And finally the language
  18.  
  19. </channel>
  20. </rss>

Voila qui est fait pour la définition de la chaine, une node XML appelée channel (ligne 8), un titre (ligne 10), un lien (ligne 11) et une description (lignes 12 à 16). Vous pouvez aussi ajouter une node langage si vous voulez spécifier dans quelle langue votre flux sera interprété (ligne 17). Enfin, fermez la node channel.

Etant donné que j'écris le code XML avec du PHP, je spécifie au navigateur ligne 2 que le résultat sera du XML et non du PHP, et donc qu'il devra être interprété comme tel.

Il est possible mais pas obligatoire, d'ajouter une image descriptive pour illustrer le flux RSS quand l'utilisateur l'affiche dans son navigateur, voyons donc comment il est possible de faire cela.

Etape 2: Ajouter une illustration

Il n'y a rien de bien compliqué ici non plus. Juste la node 'language' dans le code précédent, nous allons ajouter une autre node XML appelée image. Cette node contient elle aussi un titre (le titre de l'image), une url (l'emplacement de l'image), un lien (où aller quand on clique sur l'image, et finallement les dimensions, (hauteur et largeur). Notre code deviendrait donc:

  1. <?php
  2. header("content-type: text/xml"); //Tells the browser that we are going to
  3. write some xml with php
  4. ?>
  5.  
  6. <rss version="0.91">
  7.  
  8. <channel> //Start of the channel definition
  9.  
  10. <title>jdmweb</title> //Channel Title
  11. <link>http://www.jdmweb.com</link> //Channel Link
  12. <description> //Channel Description
  13. jdmweb.com is a website about web development,
  14. website creations and handy web tools for developpers
  15. by Jeremy Desvaux de Marigny.
  16. </description>
  17. <language>en-us</language> //And finally the language
  18.  
  19. <image> //The code to add your image goes here
  20. <title>jdmweb</title>
  21. <url>http://www.jdmweb.com/Images/style/apple-touch-icon.png</url>
  22. <link>http://www.jdmweb.com</link>
  23. <width>57</width>
  24. <height>57</height>
  25. </image>
  26.  
  27. </channel>
  28. </rss>

Etape 3: Ajouter les éléments au flux

Maintenant que notre transport est prêt, nous allons passer à l'étape la plus importante du tutoriel, l'ajout d'éléments, car après tout, un flux RSS vide ne sert pas à grand chose.

Ces éléments doivent suivre une structure spécifique, définie par des standards. Vous pourrez trouver plus d'information sur les spécifications RSS 2.0 sur le site de l'organisme RSS Advisory Board.

Pour expliquer rapidement, chaque élément du flux RSS est une node XML, contenant plusieurs sous node. Certaines sont obligatoires, d'autres optionnelles:

Les Éléments Obligatoires :

  • title - Le titre de l'élément, par exemple: <title>Venice Film Festival Opening</title>
  • link - L'url de l'élément, par exemple <link>http://nytimes.com/2004/12/07FEST.html</link>
  • description - Une bref description de l'élément, par exemple: <description>Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.</description>

Les Éléments Optionnels:

  • author - Adresse email de l'auteur de l'article
  • category - La catégorie dans laquelle est inclus l'article
  • comments - L'adresse de la page où l'on peut laisser des commentaires pour cet article
  • enclosure - Description d'un media qui peut être associé à l'article
  • guid - Identifiant unique de l'élément
  • pubDate - Date de publication
  • source - Provenance de l'élément

Connaissant ces contraintes de structure, nous allons maintenant voir comment il est possible de sélectionner des articles provenant d'une base de données et des les convertir en élément du flux. Pour le besoin de cet exemple, nous allons utiliser une table intitulée 'post' qui contient les champs suivant:

  • post_id - Identifiant unique de l'article
  • post_title - Titre de l'article
  • post_text - Contenu de l'article
  • post_thumb - Url d'une image qui illustre l'article
  • post_category - La catégorie de l'article
  • post_date - Et enfin sa date de parution

Nous pouvons maintenant envoyer une requête à la base de données afin de sélectionner les derniers articles de cette table, puis nous créerons un élément RSS à partir de chacun d'eux:

  1. <?php
  2.  
  3. //Items dynamic building
  4. $sql="SELECT * FROM post ORDER BY post_date DESC LIMIT 10"; //SQL Query
  5. $req = mysql_query($sql) or die("Erreur SQL !: ".$sql." - ".mysql_error());
  6. while($post= mysql_fetch_assoc($req)) { //Loop throught the results
  7. echo' //Build the item
  8. <item>
  9. <title>'.htmlentities($post[post_title]).'</title> //With the title
  10. <link>http://www.yourwebsite/post_'.$post[post_id].'</link> //Link
  11. <description> //And the description
  12. '.htmlentities($post[post_text],ENT_QUOTES).'
  13. </description>
  14. </item>';
  15. }
  16.  
  17. ?>

Comme vous pouvez le voir dans le code précédent, ligne 1 nous créons la requête SQL qui va retrouver les 10 articles les plus récents suivant leur date de parution. Cette requête est envoyée à la base de données ligne 2. Ligne 3 on commence une boucle qui va crée un élément RSS pour chaque ligne retournée depuis la base de données (lignes 5 à 11).

Je voudrais simplement ajouter que les titres et description de chaque article est passé à travers la fonction htmlentities() afin de remplacer les caractères interdis en XML, comme par exemple &, ", ', > or < par leur valeur html, car sinon le code XML génèrera une erreur.

En ajoutant cette boucle à notre code existant, notre générateur RSS devient donc:

  1. <?php
  2. header("content-type: text/xml");
  3. ?>
  4.  
  5. <rss version="0.91">
  6.  
  7. <channel>
  8.  
  9. //Channel Definition
  10. <title>jdmweb</title>
  11. <link>http://www.jdmweb.com</link>
  12. <description>
  13. jdmweb.com is a website about web development,
  14. website creations and handy web tools for developpers
  15. by Jeremy Desvaux de Marigny.
  16. </description>
  17. <language>en-us</language>
  18.  
  19. // Illustrating Image
  20. <image>
  21. <title>jdmweb</title>
  22. <url>http://www.jdmweb.com/Images/style/apple-touch-icon.png</url>
  23. <link>http://www.jdmweb.com</link>
  24. <width>57</width>
  25. <height>57</height>
  26. </image>';
  27.  
  28. <?php
  29.  
  30. //Items dynamic building
  31. $sql="SELECT * FROM post ORDER BY post_date DESC LIMIT 10"; //SQL Query
  32. $req = mysql_query($sql) or die("Erreur SQL !: ".$sql." - ".mysql_error());
  33. while($post= mysql_fetch_assoc($req)) { //Loop throught the results
  34. echo' //Build the item
  35. <item>
  36. <title>'.htmlentities($post[post_title]).'</title> //With the title
  37. <link>http://www.yourwebsite/post_'.$post[post_id].'</link> //Link
  38. <description> //And the description
  39. '.htmlentities($post[post_text],ENT_QUOTES).'
  40. </description>
  41. </item>';
  42. }
  43.  
  44. ?>
  45.  
  46. </channel>
  47. </rss>

Avec ce code, vous avez maintenant un générateur de flux RSS travaillant en relation avec votre base de données. Du coup, dès que vous allez poster un nouvel article sur votre site ou blog, les abonnées à votre flux RSS recevront une notification.

Voila pour les éléments minimum requis pour faire marcher un flux RSS valide. Nous allons maintenant couvrir certaines techniques que vous pouvez utiliser pour l'améliorer un peu.

Comment puis-je être sure que mon Flux RSS marche et est valide?

Idéalement, maintenant que le code est prêt, il faudrait le tester. Pour cela, enregistrez ce code sous un fichier, par exemple monrss.php, et uploadez ce fichier sur votre site, dans un endroit que vous pouvez accéder, par exemple, http://monsite.com/monrss.php. Le mien se trouve ici: RSS

Si quand vous affichez cette page aucune erreur ne survient c'est déjà un bon début, mais nous allons quand même le faire tester par un juge impartial et intransigeant: The Feed Validator, que vous pourrez trouvez à l'adresse suivante: http://www.feedvalidator.org/. Pour valider votre flux, soumettez simplement l'url de votre générateur (http://monsite.com/monrss.php) et lancez la validation. Si vous apercevez le message "Congratulations! This is a valid RSS feed.", félicitation, votre flux est valide. Sinon, corrigez simplement les erreurs survenues et renouvelez l'opération.

Si vous n'êtes toujours pas sure, abonnez vous à votre propre flux. Ainsi vous pourrez surveiller son comportement au fil du temps.

Comment puis-je faire en sorte que mon navigateur sache qu'un flux RSS est disponible?

Vous avez peut être remarqué que quand vous visitez un site qui possède un flux RSS, le navigateur peut le remarquer, et vous proposer de le voir ou de vous y abonner facilement. Mais ceci n'est pas un comportement par défaut, il faut tout simplement ajouter cette ligne de code dans le header de vos pages pour y parvenir:

<link rel="alternate" type="application/rss+xml" title="My Feed" href="/myrss.php"/>

Comment puis-je ajouter une image à chaque élément dans le flux?

Il existe une technique permettant d'associer chaque élément avec une image illustrative. Nous allons pour cela modifier la manière dont nous générons la node description dans notre code précédent:

  1. <?php
  2.  
  3. //Items dynamic building
  4. $sql="SELECT * FROM post ORDER BY post_date DESC LIMIT 10"; //SQL Query
  5. $req = mysql_query($sql) or die("Erreur SQL !: ".$sql." - ".mysql_error());
  6. while($post= mysql_fetch_assoc($req)) { //Loop throught the results
  7. echo' //Build the item
  8. <item>
  9. <title>'.htmlentities($post[post_title]).'</title> //With the title
  10. <link>http://www.yourwebsite/post_'.$post[post_id].'</link> //Link
  11. <description> //And the description
  12. <![CDATA[
  13. <img align="left" hspace="10" src="'.$post[post_thumb].'" />
  14. '.$post[post_text].'
  15. ]]>
  16. </description>
  17. </item>';
  18. }
  19.  
  20. ?>

Les lignes 12 à 15 ont été changées par rapport à la version précédente. Nous utilisons maintenant une balise spéciale appelée CDATA, dans laquelle nous plaçons notre image et notre description. L'image est tirée du champ post_thumb et est placée devant la description. Vous pouvez utiliser les propriétés hspace et align afin de contrôler la position et l'alignement de l'un par rapport à l'autre.

Conclusion

Une fois que vous êtes conscient des contraintes et spécifications du format RSS, vous êtes potentiellement à une requête SQL près de votre propre générateur RSS. En suivant ces simples étapes, vous pouvez utiliser la plateforme existante de votre site ou blog afin de générer un flux que vos visiteurs pourront utiliser afin de rester en phase avec votre travail.

Donc allez y, créez votre channel, illustrez là avec une image, ajoutez vos éléments et vous obtiendrez une manière simple de faire passer le mot sur la dernière adition de votre site.

Partager:

  • Tweet this
  • Buy the author a coffee
  • Bump this
  • Digg this
  • Post this on Del.icio.us
  • Post this on StumbleUpon
  • Post this on Reddit
  • Post this on Technorati
  • Post this on Google
  • Post this on Facebook
  • Email this to a friend

Vous seriez peut être aussi intéressé par::

  • Wordpress SchmancyBox Plugin
  • How to turn any jQuery plugin into a WordPress one
  • How to easily integrate a PayPal Checkout with PHP
  • Creating a simple image gallery with PHP & jQuery
  • jQuery ThickBox Plugin
  • jQuery Form Validation Plugin

Poster un Commentaire

Commentaires récents

jdmweb
No comments have been posted so far. Be the first!
De jdmweb à 19:05 29/07/10 { Répondre }