Accueil Boite à Outils Syndication de contenu Syndication de contenu - Archives Utilisation de la classe easyRSS

Publié le : 12 mai 2004
Imprimer Imprimer cet article

Auteur :
Alain Sichel

Alain Sichel
Utilisation de la classe easyRSS
Comment parser un fichier RSS avec easyRSS.

Cet article a été publié le 12 mai 2004, il est actuellement complètement dépassé et n’a plus qu’un intérêt "historique". Pour récupérer des fichiers de syndication, je vous conseille plutôt de voir Afficher un fil RSS/Atom sur votre site 1/3, 2/3 et 3/3.

Cet article fait suite à l’article "La syndication de contenu RSS" qui présente la syndication de contenu, ses avantages et quelques méthodes simples de mise en œuvre [1].

Il comment utiliser la classe easyRSS créée par Philippe RODIER pour permettre à des sites PHP la récupération des informations de fichiers RSS [2].

easyRSS non modifié

J’ai eu un peu de mal à trouver la classe easyRSS : plusieurs sites en parlaient, mais les liens de téléchargement étaient obsolètes, alors pour vous éviter cette difficulté, voici le dossier d’origine de Philippe RODIER avec tous ses fichiers, à télécharger zippé : easyRSS.zip.

Ce dossier comprend :


Créer un fichier RSS

Voici le code de l’exemple donné dans le script exemple1.php. Je n’en ai pas vu l’intérêt : s’il faut faire un copié-collé dans le script pour mettre les informations de ses derniers articles, autant le faire directement dans un fichier RSS ou .txt ou avec un formulaire.


Modification d’easyRSS

Par contre, j’ai été satisfait d’easyRSS pour la récupération des données des fichiers RSS, en particulier pour sa mise en œuvre, beaucoup plus simple que d’autres scripts que j’ai essayés puis abandonnés.

J’ai voulu pousser easyRSS un peu plus loin, afin de lui permettre de récupérer les informations sur l’auteur, la date et la description des articles. Vous pouvez télécharger ce fichier modifié : easyRSS.inc.zip et voir la page documentation.html avec le texte de Philippe RODIER auquel j’ai ajouté quelques variables.

Il ne reste plus qu’à réaliser un script PHP pour remettre en forme les données dans la page où on veut présenter les derniers articles du site dont on a récupéré le fichier RSS.


Mise en forme des données

Voici le code de l’exemple donné dans le script exemple2.php [3].

Et maintenant un autre exemple, la page Actualité thématique Allergologie du site du CYES. Tout d’abord, j’ai supprimé la présentation dans un tableau. Ensuite, j’ai ajouté la présentation de l’auteur et la description des articles. J’ai mis en forme en fonction de la feuille de style du site CYES. Je me suis alors aperçu de la présence dans la description de la page d’image (logo) de balises <p> perturbant la présentation et de caractères mal codés, j’ai donc mis en place la fonction preg_replace() pour remplacer les caractères gênants.

Voilà le code de ce script, colorisé pour en faciliter la lecture à la façon de Dreamweaver [4] :

<?php
include('easyRSS.inc.php');
// je n'ai pas changé $phpinfo_rss j'aurais aussi bien pu l'appeler $allergo_rss (à condition d'appliquer cette variable partout à sa place)
$phpinfo_rss = new easyRSS();
// c'est là qu'on indique le fihier RSS à parser et le nombre max d'articles à afficher :
$phpinfo_rss -> parsefile("http://www.allergique.org/backend.php3", 15);
// affichage du titre du site (utilise la class="site" de la feuille de style du site) :
echo '<a href="'.$phpinfo_rss -> get_channel_link().'" target="_blank" class="site" title="Lien externe">'.$phpinfo_rss -> get_channel_title()."</a><br /><br /><ul>\n";

$nbnews = $phpinfo_rss -> get_num_items(); // récupération du nombre d'articles
$news_author = $phpinfo_rss -> get_items_author(); // récupération de l'auteur des articles
$news_title = $phpinfo_rss -> get_items_title(); // récupération des titres des articles
$news_link = $phpinfo_rss -> get_items_link(); // récupération des liens des articles
$news_description = $phpinfo_rss -> get_items_description(); // récupération des descriptions des articles
// on remplace les caractères &lt; et &gt; par < et >
$search = array ("/&lt;/","/&gt;/");
$replace = array ("<",">");
$news_description=preg_replace($search,$replace,$news_description);
// on supprime les images <p> et on redonne un code d'affichage correct à certains caractères spéciaux :
$avant = array ("'<img.*?>'si","'<p.*?>'si","'</p>'si","'&amp;.*?;'si");
$apres = array (" "," "," ","&.*?;");
$news_description=preg_replace($avant,$rapres,$news_description);
// on utilise une boucle pour afficher les différents articles (ici en utilisant la feuille de style avec les class vert et ext) :
for($i=1;$i<=$nbnews;$i++)
{
echo
'<li><span class="vert">'.$news_author[$i].'&nbsp;:</span> <a href="'.$news_link[$i].'" target="_blank" class="ext" title="Lien externe">';
echo $news_title[$i]."</a>&nbsp;:<br />\n".$news_description[$i]."</li>\n";
}
echo
"</ul>";
?>


Adaptation du script

Pour un site qui n’indique pas le nom de l’auteur, ou pour les brèves (Exemple : Actualité thématique : Santé mentale), il suffit de supprimer la ligne : $news_author = $phpinfo_rss -> get_items_author();

et de retirer : <span class="vert">'.$news_author[$i].'&nbsp;:</span>

ce qui donne pour la boucle d’affichage des articles :

for($i=1;$i<=$nbnews;$i++)
{
echo
'<li><a href="'.$news_link[$i].'" target="_blank" class="ext" title="Lien externe">'.$news_title[$i]."</a>&nbsp;:<br />\n".$news_description[$i]."</li>\n";
}
echo
"</ul>";

De la même façon, pour un site qui n’indique pas de description de l’article (ou si vous ne voulez pas pour un site afficher cette description), exemple : Actualité thématique : Actualité santé, il suffit de supprimer la ligne : $news_description = $phpinfo_rss -> get_items_description();

et de retirer : "</a>&nbsp;:<br />\n".$news_description[$i]. ce qui donne pour la boucle d’affichage des articles :

for($i=1;$i<=$nbnews;$i++)
{
echo
'<li><span class="vert">'.$news_author[$i].'&nbsp;:</span> <a href="'.$news_link[$i].'" target="_blank" class="ext" title="Lien externe">'.$news_title[$i]."</a></li>\n";
}
echo
"</ul>";

Pour ne pas être trop long, je n’ai pas voulu donner trop d’explications sur le code qui contient déjà quelques commentaires (en orange), je développerais s’il y a des demandes.


Affichage de la date [5]

Si on veut afficher la date de publication de l’article, il faut ajouter cet élément dans le script de traitement, avec en plus pour le traitement des variables : $news_date = $phpinfo_rss -> get_items_date(); et pour la boucle d’affichage :

for($i=1;$i<=$nbnews;$i++)
{ $date[$i]=strftime("%d/%m/%Y", strtotime($news_date[$i]));
        echo '<li>'.$date[$i].' : <span class="vert">'.$news_author[$i].'&nbsp;:</span> <a href="'.$news_link[$i].'" target="_blank" class="ext" title="Lien externe">';
        echo $news_title[$i]."</a>&nbsp;:<br />\n".$news_description[$i]."</li>\n";
}
echo "</ul>";

La ligne $date[$i]=strftime("%d/%m/%Y", strtotime($news_date[$i])); permet de transformer une date "à l’anglo-saxonne" pour lui donner une allure "à la française". Ici, j’ai choisi d’indiquer le jour de publication, mais pas l’heure exacte, si vous voulez une autre présentation, voyez la page strftime() qui vous donnera le code pour le format choisi.

La classe easyRSS modifiée proposée ici récupère les données du champ <date></date>, mais d’autres fichiers RSS utilisent plutôt <pubDate></pubDate>, il faut alors adapter le code d’easyRSS et du script de traitement en conséquences.


En résumé

Pour la plupart des utilisateurs, la question se résume à : "Je peux créer des pages en php mais je n’y connaît pas grand-chose. Comment insérer simplement un code qui m’affiche le contenu d’un site tiers disposant d’un fichier RSS ?

- Si votre serveur ne permet pas le PHP, il n’y a que les solutions indiquées dans "Syndiquons nous !" qui marchent (Javascript, iframe ou ruse avec page PHP sur un autre serveur).

- Si votre serveur permet PHP, il suffit :

Quelques vérifications :

J’ai supprimé les éléments de code correspondant à la feuille de style du site CYES, j’ai remplacé par :


Plusieurs syndications sur la même page

Si on veut faire plusieurs syndications sur la même page, par exemple, une pour les articles d’un site, l’autre pour les brèves, il ne faut pas remettre exactement le même code sous peine d’avoir un message d’erreur. Voici pour la page Actualité thématique Allergologie le code pour les brèves :

En fait, je n’ai pas remis include('easyRSS.inc.php') ; puisque le fichier est déjà inclus et j’ai remplacé $phpinfo_rss par une autre variable $allergo_rss. En plus, j’ai supprimé la mention "auteur" puisqu’il n’y en a pas pour les brèves.


 

[1] Avant d’utiliser EasyRSS, je vous conseille de le tester comparativement à MagpieRSS en utilisant le lecteur RSS décrit dans les articles 172 et 173 que vous pouvez essayer ici.

[2] Cet article est maintenant dépassé depuis la sortie en novembre 2004 de easyRSS v1.5, disponible sur PHPSPIRIT, qui inclut les suggestions de cet article. De prochains articles donneront des exemples d’utilisation de cette nouvelle version.

[3] Ce script a été modifié le 1/04/05 afin d’éviter l’affichage d’espaces insécables &nbsp; dans le champ "Description".

[4] Ce code est celui utilisé sur le site du CYES où les liens externes sont signalés et affichés d’une couleur différente que les liens internes. Si ce choix ne vous intéresse pas, vous n’avez pas besoin de : class="ext" title="Lien externe".

[5] Ce paragraphe ne faisait pas partie de cet article au moment de sa publication le 12 mai 2004, il a été ajouté le 8 septembre 2004

[6] Vous avez pour cela dans cette page les liens pour télécharger le fichier d’origine ou celui que j’ai modifié pour récupérer en plus l’auteur et la description des articles ; vous pouvez aussi établir un lien vers ce fichier sur un autre serveur, çà marche aussi.




Cliquez ici pour réagir à cet article

Imprimer Imprimer cet article


Réactions à l'article :