Portrait Olivier Duffez

Olivier Duffez

Créateur de WebRankInfo,
consultant en référencement

Intégrer dans ses pages un flux RSS externe

Dans le cas qui nous intéresse, la syndication de contenu correspond à la mise à disposition par un éditeur de site web d'une sorte de résumé des dernières mises à jour effectuées sur son site, de façon que d'autres éditeurs puissent intégrer ce résumé sur leur site ou le consulter à l'aide d'un logiciel spécifique (appelé "agrégateur" ou lecteur de flux).

L'exemple le plus courant est celui d'un site d'actualités qui propose sous la forme d'un fichier XML la liste des derniers messages d'actualité (titre + introduction + lien vers l'article). Les formats les plus courants sont RSS et Atom. On appelle ça un flux de syndication ou aussi un fil RSS / Atom.

Flux RSS

Objectif du flux XML pour le référencement

Le flux XML permettent d'afficher les titres des derniers articles, avec un lien.
Notez qu'il s'agit d'une intégration complète avec des liens "en dur", à la différence des solutions basées sur un code JavaScript.

Intégration d'un flux RSS dans une page web

Cet article n'aborde pas la création d'un flux RSS (ceci pourra faire l'objet d'un autre article).

Si vous souhaitez afficher de cette façon des liens vers les derniers articles de l'actualité de WebRankInfo (ou de votre site préféré...), il faut utiliser un code qui sache lire le fichier XML situé sur WebRankInfo. Je vous propose d'utiliser un outil en PHP disponible sous licence GPL : il s'agit de MagpieRSS - "a simple RSS integration tool".

Parmi les fonctionnalités de MagpieRSS, citons :

  • support des formats RSS v0.91 et v1.0 (et dans une moindre mesure la v2.0)
  • support du format Atom (testé sur des blogs de Blogger par exemple)
  • interface très simple, orientée objet
  • code accompagné de nombreux commentaires

Pour l'installer, il suffit de copier le répertoire quelque part sur votre site. Dans mon exemple je l'ai copié dans un répertoire nommé magpierss situé à la racine de mon site.

La seule configuration à effectuer se trouve dans le fichier rss_cache.inc dans lequel vous pouvez choisir le répertoire utilisé pour la gestion du cache, et la durée de vie du cache en secondes (si vous mettez 300, le cache sera recréé si le fichier dans le cache date de plus de 300 secondes).

Pour l'utiliser, je vous conseille de créer une fonction nommée FeedParser() qui sera chargée de formater la liste des derniers éléments des flux à lire. De cette façon, si vous souhaitez changer l'aspect, vous n'aurez qu'à le changer à cet endroit. Voici le code de cette fonction, que j'ai écrit dans le fichier feedparser.php stocké à la racine de mon site :

<?php
// inclusion de la classe magpierss
require_once("magpierss/rss_fetch.inc");

function FeedParser($url_feed, $nb_items_affiches=10)
{
  // lecture du fichier distant (flux XML)
  $rss = fetch_rss($url_feed);

  // si la lecture s'est bien passee,
  // on lit les elements
  if (is_array($rss->items))
  {
   // on ne recupere que les elements les + recents
   $items = array_slice($rss->items, 0, $nb_items_affiches);

   // debut de la liste
   // (vous pouvez indiquer un style CSS
   // pour la formater)
   $html = "<ul>n ;

   // boucle sur tous les elements
   foreach ($items as $item)
   {
    $html .= "<li> ;
    $html .= "<a href="".$item['link']."">".$item['title']."</a> ;
    $html .= "</li>n ;
   }
   $html .= "</ul>n ;
 }

 // retourne le code HTML a inclure dans la page
 return $html;
}
?>

Exemples d'intégration

Pour intégrer une liste à puces contenant les derniers éléments d'un flux XML, il suffit de deux lignes de code.

Par exemple pour intégrer les 10 derniers messages de l'actualité de WebRankInfo, il suffit de mettre ce code sur votre page :

<?php
require_once("feedparser.php");
echo FeedParser("https://www.webrankinfo.com/dossiers/feed");
?>

Si vous souhaitez afficher des liens vers les 5 dernières définitions du Dico du Net, il suffit de mettre ce code sur votre page :

<?php
require_once("feedparser.php");
echo FeedParser("http://www.dicodunet.com/rss.php", 5);
?>

L'URL du fichier XML à utiliser est indiquée en général par un petit logo RSS, Atom, ou XML.

Ressources sur les flux RSS

Source image : Shutterstock (sous licence)

Cet article vous a-t-il plu ?

Note : 3.0 (4 votes)
Cliquez pour voter !

Laisser un commentaire

Remarques :

  • Si vous souhaitez poser une question ou détailler un problème technique, il ne faut pas utiliser le formulaire ci-dessous qui est réservé aux avis. Posez votre question directement dans le forum Gmail de WebRankInfo. L'inscription est gratuite et immédiate.

  • En postant un avis, vous acceptez les CGU du site WebRankInfo. Si votre avis ne respecte pas ces règles, il pourra être refusé. Si vous indiquez votre adresse email, vous serez informé dès que votre avis aura été validé (ou refusé...) ; votre adresse ne sera pas utilisée pour vous envoyer des mailings et ne sera pas revendue ou cédée à des tiers.

31 commentaires

FANTOME

Bonjour la réponse des caractères remplacé par des  ?" pour ActifPub svp ça serait sympa car aucune réponse à était donné

Répondre
Elisabeth de Texte Faire-Part

Merci Olivier, même un article qui date de 8 ans est d'actualité! Plusieurs personnes parlent du déclin du RSS pourtant, pour moi, il s'agit encore de ma façon de choix pour consommer mon information.

Je ne connaissais pas Magpie avant de lire votre article et de mon côté, j'utilisais RSSPHP qui est gratuit et qui fait un bon travail.

Répondre
soussita

mercii bcpp pour vow conseils il fallait justement changer dans le fichier parse et utiliser un serveur de php pour pouvoir interpréter le code et tout marchera nickel!!!et reste qu'appliquer un style CSS

Répondre
Homme

Merci bcp,en 40 minutes j'ai reussi a integré le flux rss dans mon site.Les conseils des uns et des autres de site sont tt a fait apreciable!!!Merci

Répondre
flyerawayd

Bonjour,

J'ai utilisé la méthode avec magpierss 0.51 mais rien ne marche. Le flux RSS de webrankinfo n'est pas affiché, que du blanc sur ma page html test.

Merci de votre aide.

Répondre
Luc

Bonjour,

Pour ceux qui utilisent WordPress, il existe un excellent plugin permettant d'insérer facilement un flux RSS externe dans une page ou un widget : Lexi

Sinon, j'ai une question : dans quelle mesure les flux RSS externes affichées posent-ils des problèmes de duplicate. Et sont-ils considérés comme des mises à jour régulières de la page où ils sont affichés par Google ? (En résumé, est-ce bénéfique pour le référencement de la page qui récupère et affiche des flux RSS externes ?)
Merci pour votre éclairage

Répondre
apsinthos

Bonjour, je viens de créer un site et je souhaite insérer des flux RSS externes de différents sites. Je n'arrive pas à trouver la documentation m'indiquant les différentes étapes à suivre. J'ai déjà insérer le module Blog et j'ai vu l'onglet "Flux rss" mais c'est là que ça se complique. existe t'il un tutoriel expliquant les différentes étapes à suivre pas à pas.
La page dans laquelle je souhaite insérer les flux comprendra plusieurs flux. Je vais donc créer des tableaux dans lesquels je ferais des liens. Mais comment faire en pratique ???

Répondre
Scorps

Merci pour cette source, elle fonctionne merveilleusement bien avec les quelques modifications suggérées dans ce fil (UTF8, etc.).

Répondre
math

J'ai le même soucis que EC,

et la solution de changer le code iso par utf-8 ne fonctionne pas...
"juste les apostrophes sont remplacé par des  ?"... Je ne trouve pas la solution

Répondre
steph

bonjour j'utilise ce systeme , mais j'ai une erreur quand je viens pour la premiere fois sur la page ou je recupere le flux :

Suggestion : Undefined property: MagpieRSS::$etag dans le fichier /var/www/vhosts/monsite/httpdocs/site/magpierss/rss_fetch.inc à la ligne 156

cette erreur disparait aprés rafraichissement .

Répondre
nico

Bonjour, j'essaye de trouver une solution au probleme d'affichage des images sur magpierss. sur certains flux rss les liens des images dans le xml sont entier avec http://... d'autres ne comportent pas le nom de domaine ex : \images\images.jpg, donc l'image ne s'affiche pas.

Savez vous comment je peux déclarer le site du flux.

je vous donne deux liens ci dessous un qui marche et l'autre qui marche pas:

- http://www.soleya.fr/index.php?journal1=rugbyramalaune

- http://www.soleya.fr/index.php?journal1=lequiperugby

merci d'avance

nicolas

Répondre
Taaazzz

EC

la solution à été donné ici un peu plus haut

dans le fichier rss_fetch.inc tu dois modifier ISO-8859-1 par UTF-8

Répondre
EC

Merci pour ces bonnes sources, juste un soucis, mon apostrophe est remplacé par des  ?"... Je ne trouve pas le problème

Répondre
Marc

Merci Jerome pour l'UTF-8.

Quelques bugs que j'ai rectifié aussi dans le fichier rss_parse.inc :

Remplacer
$this->feed_version = $attrs['version'];
PAR
if (isset ($attrs['version'])) $this->feed_version = $attrs['version'];

Remplacer
split
PAR
explode

Remplacer
if ( isset($attrs['rel']) and $attrs['rel'] == 'alternate' )
{
$link_el = 'link';
}
else {
$link_el = 'link_' . $attrs['rel'];
}

PAR
if ( isset($attrs['rel']) and $attrs['rel'] != 'alternate' )
$link_el = 'link_' . $attrs['rel'];
else
$link_el = 'link';

Répondre
Marie-Micheline

Merci pour les infos...je vais maintenant essayer...
J'en redonnerai de nouvelles pour vous dire si ça fonctionné.

Répondre
Marie-Micheline

Bonjour
Je trouve tout ça bien compliqué...je suis encore novice, mais j'ai hâte de maîtriser tout ça.
Marie-Micheline

Répondre
jerome

Pour le probleme des caractères accentués ("cela fonctionne parfaitement mais m’affiche un « ? » à la place des lettres avec accent"), il faut modifier dans le fichier rss_fetch.inc qui est a la racine du répertoire modpierss la ligne de code de l'encodage:

Remplacer
if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
}
PAR
if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
}

Répondre
jerome

Merci pour ce script, j'ai testé la méthode rapide avec actifpub mais j'ai également un pb avec les caractètes accentués (un « ? » à la place des lettres avec accent). Merci au brave et valeureux développeur qui va venir à notre secours !!!

Répondre
kowalski

Bonjour,
cela fonctionne parfaitement mais m'affiche un  ?" à la place des lettres avec accent, ai je loupé quelque chose ?, je ne peux pas l' intégrer à mon futur site comme cela.....
merci

Répondre
Axiom

Bonjour à tous,

je cherche depuis plusieurs heures à modifier l'apparence des liens avec le fichier feedparser.php mais je n'y arrive pô. Si j'ai bien compris, je dois créer un fichier style.css (à moins que je puisse inclure le code directement dans le feeparser.php ?), mais comment (avec quel code) dois-je appeler la feuille de style dans ce fichier feedparser.php? Je seche complètement. Si quelqu'un pouvait poster un feedparser.php et un style.css types ce serait sympa.

Merci d'avance à tous!

Répondre
Alpha

Bonjour,
Je cherche le moyen d'ajouter des images qui sont pourtant presentes sur le flux.
Avez vous une solution ?

Répondre
billy.bob

bonsoir;
j'ai fais comme indiqué plus haut, mais sur ma page il s'affiche le message suivant :

Warning: main(feedparser.php) [function.main]: failed to open stream: No such file or directory in essais.php on line 125

Fatal error: main() [function.require]: Failed opening required 'feedparser.php' (include_path='.:/include/') in essais.php on line 125

Que dois-je faire ?
Merci d'avance pour votre aide si précieuse.

Répondre
Xenon

Et bien moi j'ai beau avoir fait exactement comme l'exemple (dossier à la racine toussa) ca ne fonctionne pas :(
Il y à quelque chose à activer dans PHP ?

Répondre
olybop

Bonjour, Térence à emis un soucis concernant les caractères spéciaux, Je voulais savoir si une solution a été trouvée.
Merci bien en tout cas. A part ce soucis ça marche au poil ;)

Répondre
jacky

Bonjour Tribal,
En effet, ne te fais pas de souci pour cet avocat. D'abord, t'a-t-il écrit par courrier ? Qui te dit qu'il est avocat ? Comment désire-t-il être payé ? Par chèque ? Très bien , dans ce cas, demande lui son nom et son adresse.....tu n'obtiendras aucune réponse ! Ce type n'est pas un avocat .
C'est un escroc qui cherches à se faire du fric! A quel titre te réclame-t-il ce fric? sur quoi se base-t-il pour évaluer le montant de son "indemnité" ?
N'hésite pas à me contacter si tu as des problèmes.

Répondre
Gérard

Ne t'inquiète pas trop.
Il essaie une manoeuvre de "chantage".
À partir du moment où ton article se contente de citer et que tu as mis en clair les sources, tu ne risque absolument rien, d'autant plus que l'article que tu as écrit était édité sur un site public.
Bon week-eng.
Gérard

Répondre
Tribal

Bonjour, je viens de recevoir un mail d'un avocat me poursuivant pour plagiat parce que j'ai affiché le flux rss de google news qui affichait 2 de ces articles du site de sont client. Il prétent que j'ai brimé les droit d'auteur de son client. Pourtant, le flux RSS est simplement un titre et une courte description avec un lien vers son site Web. Tous pour avantagé son classement sur les moteurs de recherche.

En suite il me demande 200 Euro pis il sèsse les poursuites et il me dis que si je paye pas les 200 E. Ça va me couter plus cher.

Qu'est-ce que vous en pensez ?

Répondre
Alexis Chatougri

MERCI MON SEIGNEUR DIEU DE BOUZOUC
J'avais essayé il y a des mois de faire marcher magpierss sur mon site wordpressé, en suivant les instructions de divers sites. Et puis j'y arrivais pas, et puis j'essayais de bidouiller, et puis j'y arrivais encore pas, et puis je re faisais des recherches, et je re bidouillais, et j'arrivais encore pas. J'étais encore une biquette en RSS et tout ça il y a 6 mois - et j'en suis toujours une menfin - du coup j'ai franchement eu du mal et j'ai fini par abandonner.

Et puis aujourd'hui je me dis "oh tiens et si je réessayais", et je tombe sur vote site, je suis les instructions, et ça marche nickel.

Hé ba merci beaucoup et gros bisou.

=)

Répondre
Térence

Hello,

En utilisant votre fonction PHP j'ai un problème avec les caractères sépciaux, sur cette page par exemple : .

Comment régler ce problème s'il vous plaît ?

Répondre
Julien

Sympa la fonction, mais attention au '"' oublié !
$html .= n ;
$html .= "n ;

Répondre