RSS Syndication · 5 min read · Sep 14, 2025

Syndication RSS facile avec MagpieRSS

Syndication RSS facile avec MagpieRSS

Qu’est-ce que MagpieRSS ?

MagpieRSS, affectueusement connu sous le nom de Magpie, est un parseur RSS et Atom pour PHP. Il vous permet d’afficher les derniers articles de sites Web avec des flux RSS ou Atom sur votre propre site. C’est un excellent moyen d’ajouter des informations nouvelles, fraîches et pertinentes à votre site. Il analyse RSS 0.9, RSS 1.0, et a un certain support pour RSS 2.0 ainsi qu’Atom 0.3.

De quoi ai-je besoin pour utiliser Magpie ?

Pour utiliser Magpie, votre serveur doit prendre en charge la version PHP 4.2.0 avec support XML, ou PHP5 avec support libxml2. Après cela, la configuration et l’utilisation de Magpie sont un jeu d’enfant.

D’accord, j’en ai assez entendu, où puis-je l’obtenir ?

Vous pouvez télécharger Magpie depuis SourceForge en cliquant ici.

Et maintenant ?

Il suffit d’extraire le fichier et de télécharger les fichiers suivants sur votre serveur : rss_fetch.inc, rss_parser.inc, rss_cache.inc, et rss_utils.inc ainsi que l’ensemble du répertoire nommé extlib. Vous pouvez placer ces fichiers dans n’importe quel répertoire à la racine de votre serveur Web. J’ai tendance à les télécharger dans un répertoire nommé rss.

Ensuite, vous devez décider où vous souhaitez que le contenu syndiqué aille. Par exemple, si vous souhaitez syndiquer du contenu sur l’index de www.example.com, vous devrez modifier le fichier index.html(php). Si votre fichier ne se termine pas par php, vous devrez le changer pour qu’il le fasse, car nous allons y ajouter du code php.

Ensuite, nous allons réellement modifier le fichier index.php. Nous devons ajouter le code suivant en haut de la page sur laquelle vous souhaitez afficher les flux :

Veuillez noter que votre chemin peut être différent selon le nom que vous avez donné au répertoire et où se trouve votre index.php dans l’arborescence. Pour ajouter réellement les flux à votre page, vous devez également ajouter les lignes suivantes pour récupérer et analyser le RSS :

et remplacer l’adresse par l’adresse du flux que vous souhaitez afficher.

Cela renverra un tableau, $rss qui inclut le contenu syndiqué ainsi que quelques informations sur l’éditeur. Les autres informations renvoyées (généralement) sont le nom de l’éditeur, stocké dans $rss->channel[‘title’], une description de l’éditeur stockée dans $rss->channel[‘description’], et un lien général vers l’éditeur stocké dans $rss->channel[‘link’].

Les éléments peuvent être accessibles via $rss->items et une simple boucle peut être utilisée pour traverser les éléments un par un. Le code pour la boucle est :

foreach ($rss->items as $item)  
        { // Code pour manipuler les éléments ici  
        }

Chaque élément contient un titre, un lien et une description. $item[‘title’] contient le titre de l’article, $item[‘link’] est le lien vers l’original et $item[‘description’] est la description de l’histoire qui est souvent les premières lignes de contenu. Une liste de base du contenu syndiqué peut être obtenue en utilisant le code suivant :

channel['link'].">".$rss->channel['title']."";  
foreach ($rss->items as $item) {  
        $href = $item['link'];  
        $title = $item['title'];  
        $desc = $item['description'];  
        echo "  

$title
"; if($desc) echo $desc; }?>

C’est assez basique, mais vous devriez être en mesure de le personnaliser pour répondre à vos besoins.

Problèmes généraux et solutions

Le contenu syndiqué est trop long pour mon site.

Si le contenu que vous syndiquez est trop long ou contient trop d’éléments et commence à rendre votre site étrange, vous pouvez simplement ajouter les lignes suivantes pour définir le nombre d’entrées affichées et définir la longueur de la description.

$items = array_slice($rss->items, 0, 5);

Cette ligne ne renvoie qu’un sous-ensemble du flux, dans ce cas seulement les 5 premières entrées. Pour raccourcir la description, vous utiliseriez les lignes suivantes :

if (strlen($desc) >= 100)  
{  
        $desc = substr($desc,0,99)."...";  
}

Ce que cela fait, c’est vérifier si la longueur de la chaîne pour la description est supérieure à 100 caractères, ce qui, si c’est le cas, affichera les 99 premiers et … ensuite pour faire savoir au lecteur que cela continue.

Je voudrais activer la mise en cache des flux pour réduire la bande passante et accélérer le chargement. Est-ce possible ?

Bien sûr ! Magpie a la mise en cache activée par défaut, mais vous devrez probablement changer le répertoire dans lequel il met en cache ainsi que le rendre accessible en écriture par l’utilisateur sous lequel le serveur s’exécute. Il essaie d’écrire dans le répertoire de travail dans lequel le script est appelé. Par exemple, si vous ajoutez le flux à votre page d’accueil, le script tente de créer le répertoire de cache à la racine de votre serveur. Les lignes suivantes activent le cache et définissent le répertoire dans lequel il met en cache :

define('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');  
define('MAGPIE_CACHE_ON', 1);

Par défaut, Magpie ne met en cache les éléments que pendant une heure, mais cela peut être changé avec la ligne suivante :

define('MAGPIE_CACHE_AGE', 1800);

Cela définit Magpie pour mettre en cache les éléments pendant 30 minutes. Il est important de noter que l’intervalle est spécifié en secondes.

D’accord, j’ai ajouté ces lignes, mais la mise en cache ne fonctionne toujours pas !

Vous devez vous assurer que le répertoire que vous avez défini pour le cache existe et est accessible en écriture par l’utilisateur sous lequel le serveur s’exécute. Sous Debian, c’est www-data. Je suis désolé, mais je ne sais pas quel utilisateur apache s’exécute par défaut sur d’autres distributions. Vous pouvez accomplir cela avec les commandes suivantes (en tant que root) :

mkdir /tmp/magpie_cache  
chown www-data:www-data /tmp/magpie_cache

Veuillez noter que le cache n’a pas besoin d’être dans /tmp et il est en fait judicieux de le changer si vous utilisez un hébergement partagé. Après cela, rafraîchissez la page et vous devriez voir des fichiers avec des noms très étranges dans le répertoire de cache. Si c’est le cas, tout va bien. Sinon, veuillez vous référer à la FAQ sur la page d’accueil de MagpieRSS.

Mettre le tout ensemble

Voici comment les options doivent être combinées, et c’est un exemple fonctionnel avec des modifications mineures de mon propre site.

items, 0, 5);  
foreach ($items as $item) {  
        $href = $item['link'];  
        $title = $item['title'];  
        $desc = $item['description'];  
        echo "  

$title
"; if($desc) if (strlen($desc) >= 125) { $desc = substr($desc,0,124)."..."; } echo $desc; } ; ?>

Cela récupère le flux de www.digg.com dans la section Linux et affiche les 5 premières entrées avec une description de 125 caractères de long. Il met également en cache dans le répertoire /var/cache avec le temps de cache par défaut d’une heure.

Et voilà, une syndication RSS rapide et facile avec MagpieRSS ! Si vous avez besoin de plus d’informations, d’aide ou de quoi que ce soit d’autre, je vous encourage vivement à consulter la page d’accueil de MagpieRSS. Ils ont également une liste de diffusion active et maintiennent des archives qui ont répondu à mes questions chaque fois que j’ai eu besoin d’aide.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.