Mixer plusieurs flux RSS différents avec SimplePie
Ces derniers temps j’ai cherché à optimiser la page d’accueil d’un site que j’ai créer bêtement il y’à quelques années pour créer un peux de « liens » vers mes sites de « e-commerce ». Site qui relaye uniquement les flux RSS de plusieurs sites/blogs orientés commerce & vente par internet.
Jusqu’à hier ce site tournait d’une part avec le bon vieux magpierss, (paix à son âme (R.I.P.)) et d’autre part pour la home page avec un flux remasterisé via rssmix.com. Cependant, le succès de rssmix d’une part, et la notoriété acquise avec ce site d’autre part ont rendu le chargement de cette home page interminable, et enchainés le déclassement total du dit site sur les moteurs.
Je me suis donc mis à la recherche d’une nouvelle solution pour palier à ce problème, et j’ai enfin pris le temps de me pencher sur le ptit dernier des scripts php open source pour la lecture de flux RSS. Il s’agit en effet de SimplePie. Un nouvel outil léger, simple et puissant B-) (oui oui, tout ça en même temps.) & gratuit qui plus est.
Vous n’imaginez pas le nombre de chose que j’envisage déjà de développer grâce à cette rencontre avec ce script. (à commencer bien sur par la refonte de tous les flux rss de himselfprod, & la mise à disposition d’un flux global regroupant tous les autres.) (bah quoi, c’est plus facile non ?) Bref…
Nous allons voir ici comment j’ai réussi à combiner plusieurs flux rss grâce à simplepie. Bon j’avoue, webmaster source m’a mis sur la voie de départ, il à fait le plus gros du travail :D. Je me suis contenté de mettre à jour & optimiser tout ça pour un affichage sur un site web.
1ère étape : Appel de simplepie, & initialisation des flux rss à combiner : Insérer le bout de code php suivant dans la partie supérieure de votre page. (avant l’endroit ou vous souhaitez afficher les flux.)
// Accès à SimplePie # remplacez par votre chemin d'accès à simplepie.inc include_once('././includes/simplepie/simplepie.inc'); // Appel de SimplePie $feed = new SimplePie(); // Mise des flux RSS sous forme de tableaux. $feed->set_feed_url(array( 'http://www.buzzinessman.com/feeds/', 'http://blog.himselfprod.com/feeds/' )); // Gestion du cache (secondes) avant nouvel appel des flux $feed->set_cache_duration (600); $feed->enable_xml_dump(isset($_GET['xmldump']) ? true : false); // Initialisation de SimplePie $success = $feed->init(); // Contrôle de l'encodage des caractères. $feed->handle_content_type(); |
2ème étape : Affichage du résultat : (séparer le code si nécéssaire.). Mettez le code suivant entre balises php à l’endroit ou vous souhaitez afficher le résultat.
// Si on à bien des résultats issus des flux if ($success) { $itemlimit=0; // On crée une boucle d'affichage pour le tout foreach($feed->get_items() as $item) { if ($itemlimit==10) { break; } // mise en variable $permalink = $item->get_permalink(); $date = $item->get_date(); $title = $item->get_title(); // si nécéssaire, décommentez les lignes ci-dessous pour une adaptation de l'utf-8 //$title = utf8_decode($title_no_clean); // perso je vire tout code html de la description. utilisez la ligne ci-dessous si non nécéssaire & commentez la suivante. //$description = $item->get_description(); $description = strip_tags($item->get_description()); // si nécéssaire, décommentez les lignes ci-dessous pour une adaptation de l'utf-8 //$description = utf8_decode($description); echo ' <a title="'. $title .'" href="'. $permalink .'" target="_blank">'. $title .'</a> - <small><strong>['. $date .']</strong></small> '."\n"; echo substr($description,0,255) .' '; $itemlimit = $itemlimit + 1; } } |
voilà, j’espère que ce bout de code vous aura été utile. N’hésitez pas à faire des suggestions, ou carrément à l’améliorer et à renvoyer le code par la suite. Have Fun guys !
Un article proposé par Gregory J., expert référencement
» 1963 lectures, 1 ce jour,
» 5 Réctions lire les réactions | ajouter une réaction
» Classé sous : I'm a Geek, Php / Mysql
Besoin d'un conseil sur l'optimisation de votre site ?
Contactez moi via la plateforme de conseil wengo.fr



janvier 31st, 2009 at 11:16
Très intéressant. je cherchais un tel script depuis des lustres.
avril 15th, 2009 at 12:10
Vraiment très bien, par contre les flux ne sont pas littéralement mixés, je m’explique: si j’ai 2 sources avec 10 articles chacune dans leur flux, et que je demande l’affichage simultané de 5 articles du total seulement, je récupère (logiquement) les 5 de tête de mon 1er flux, et ceux du second ne sont jamais visibles…
Il faudrait compliquer un peu en mettant en table l’ensemble des articles, shaker le tout et afficher ;)
avril 15th, 2009 at 13:07
Hello,
c’est que tu as des problèmes de dates dans tes flux.
car ici le script affiche les news par dates !
exemple ici : http://www.himselfprod.com/les-amis/
avril 27th, 2009 at 12:04
Merci beaucoup, exactement ce que je cherchais… ;)