Voir aussi
Dans la même rubrique :
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Syndication pour phpBBDu même auteur :
Suivi de vos articles
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Page contact en PHP 3/3
Afficher plusieurs flux RSS/Atom sur une page
Accueil du nouveau rédacteur
Installer un script PHP pour les nuls
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 1/3
Page contact en PHP 2/3
Positionnement fixe... même avec Internet Explorer !
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Quand JavaScript est désactivé... 2/2
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Menu de navigation sans JavaScript
Astuce pour les images fréquemment utilisées
Gestion d’une rubrique... en attendant SPIP
Page Erreur 404 en PHP
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique informatique
Nettoyer son disque dur
Tirage du loto
Installer et exploiter le serveur web local IIS sur un système d’exploitation Windows XP 2/3
Installer et exploiter le serveur web local IIS sur un système d’exploitation Windows XP 1/3
Un serveur dédié pour les nuls
Installer et exploiter le serveur web local IIS sur un système d’exploitation Windows XP 3/3Syndication
Utilisation de la classe easyRSS
Droit-médical.net
Un Editeur RSS pour votre site 1/2
Atoute
Fédération des Acteurs de l’Alcoologie et de l’Addictologie
Collège des Médecins Généralistes Enseignants - Université Pierre et Marie Curie
Un lecteur RSS pour votre site 1/2
Syndication, comment s’y retrouver
Généralistes 2002
Editer plusieurs fichiers de syndication 1/3
Un Editeur RSS pour votre site 2/2
Comité Départemental d’Education pour la Santé des Yvelines
Femiweb
Editer plusieurs fichiers de syndication 3/3
Editer plusieurs fichiers de syndication 2/3
Droit-medical.com
La syndication de contenu RSS
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Proposer plusieurs styles pour votre site
Page Erreur 404 en PHP
Quiz en PHP 3/3
Editer plusieurs fichiers de syndication 3/3
Page contact en PHP 3/3
Menu dépliant pour les rubriques
Installer un script PHP pour les nuls
Quand JavaScript est désactivé... 1/2
Editer plusieurs fichiers de syndication 1/3
Gestion d’une rubrique... en attendant SPIP
Positionnement fixe... même avec Internet Explorer !
Page contact en PHP 1/3
Javascript : n’oubliez pas Mac OS !
Syndication, comment s’y retrouver
Quiz en PHP 2/3
Menu de navigation sans JavaScript
Page contact en PHP 2/3
Quiz en PHP 1/3
Editer plusieurs fichiers de syndication 2/3
Quand JavaScript est désactivé... 2/2
La syndication de contenu RSS
Conseils aux rédacteurs
Ecrire ce qu’on veut dans SPIP
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Editez vos flux avec Fil_LE 1/2
Joindre un document à un article
Joindre un logo à un article
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Syndication de contenu
Afficher plusieurs flux RSS/Atom sur une page
Cet article suppose que vous avez pris connaissance des articles précédents Afficher un fil RSS/Atom sur votre site 1/3, 2/3, 3/3 et Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom ; je suppose que vous utilisez Fil_LE avec le système de cache décrit dans l’article Afficher un fil RSS/Atom sur votre site 3/3 avec en plus l’astuce décrite dans l’article Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom, je reparts donc de ce script en l’adaptant.
Je prends pour exemple les fichiers de syndication de Femiweb. Il y a en a un pour les articles et un autre pour les brèves, on va les lire tous les deux :
// chemin relatif vers le fichier cache (le repertoire "cache" doit etre autorise en ecriture) |
Ensuite, j’ai supposé que nous pouvions avoir deux flux dont l’encodage des caractères est différent [1]. On va donc d’abord regarder quel est l’encodage de chaque flux :
function encodage($flux) { // détermination de l'encodage et ecriture de celui-ci dans chaque item |
et noter celui-ci dans chaque item avant que la fonction de récupération des données intervienne, en utilisant l’astuce décrite dans Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom :
$apres = encodage($flux1); // articles |
Comme je l’ai indiqué dans Afficher un fil RSS/Atom sur votre site 2/3, la mise en forme de l’élément description nécessite parfois une mise en forme pour améliorer la présentation, voire une véritable correction pour les fils qui n’indiquent pas les adresses absolues des images ou qui utilisent des tags HTML de mise en forme du texte non suivis de tags de fermeture [2]. Ce nettoyage peut être différent pour chaque fil, on va donc préparer des fonctions de nettoyage :
function nettoyage($description, $options = '') { |
Selon les lettres indiquées dans $options on va réaliser [3] :
la suppression des paragraphes (remplacé par un retour à la ligne simple),
la suppression des lignes horizontales (remplacées par un retour à la ligne simple),
l’alignement à droite des images à gauche de la page (ce qui perturbe l’alignement des items),
l’indication d’une rubrique,
l’indication de mots clés.
Pour indiquer les opérations nécessaires pour chaque item, on utilise la même astuce que pour l’encodage des caractères. La fonction encodage() devient :
function encodage($flux, $options) { // détermination de l'encodage et ecriture de celui-ci dans chaque item |
L’appel se fait en précisant les options de nettoyage souhaitées :
$apres = encodage($flux1,"dm"); |
On prévient si un fil est absent :
if (!$fil1) { |
On place les 2 fils dans le même tableau associatif [4] :
$items = array_merge($items1,$items2); |
Pour trier les items par date, j’ai créé la fonction tri_date() qui récupère les informations d’une date au format anglais US, la transformer en timestamp Unix (le nombre de secondes depuis le 1er Janvier 1970 à 00:00:00 GMT). On retire ensuite -3000000000 pour obtenir un nombre négatif, afin que le tri se fasse dans le bon sens (du plus récent au plus ancien) :
function tri_date($date) { // pour le tri par date |
Le tri des items par date peut alors se faire par [5] :
usort($items, create_function('$a,$b',' return strcmp(tri_date($a["pubdate"]),tri_date($b["pubdate"]));' )); |
Le reste du script est très proche de celui pour parser un seul fil, à ceci près que l’on récupère $encode que l’on avait écrit tout à l’heure [span class="base64" title='PGNvZGUgY2xhc3M9J3NwaXBfY29kZScgZGlyPSdsdHInPiRlbmNvZGU8L2NvZGU+' ] :
$data.= "<ul>\n"; |
A noter,
la boucle for($i = 0; $i < 20; $i++) c’est là qu’on indique le nombre d’items que l’on veut afficher dans la page (ici 20),
la condition if (trim($items[$i]['title'])!='') permet de ne pas afficher la ligne si on a récupéré moins d’items que le nombre prévu par la boucle,
la ligne $data .= str_replace("(...)","[".$lien."Lire la suite...</a>]",$description); est placée ici plutôt que dans la fonction nettoyage() afin de permettre l’écriture du lien vers l’article (sur le site d’origine du flux).
[1] Ce n’est pas le cas pour les flux de syndication de Femiweb qui sont tous les deux encodés iso-8859-1 mais en testant ce script j’ai vu la nécessité de cette astuce quand les encodages sont différents.
[2] On peut avoir ainsi la mise en forme des autres items perturbée avec tout le texte en gras, en petits caractères, etc.
[3] D’autres exemples de corrections sont donnés dans Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom.
[4] Pour 3 fils il suffit d’écrire $items = array_merge($items1,$items2,$items3); etc...
[5] Il y a sûrement plus simple, mais çà marche. Si vous avez une formule plus élégante, je suis preneur...
[span class="base64" title='PGNvZGUgY2xhc3M9J3NwaXBfY29kZScgZGlyPSdsdHInPiRlbmNvZGU8L2NvZGU+' ] est utilisé pour décoder les caractères encodés en utf-8 :
if ($encode == 'utf-8') { $text = utf8_decode($text); }

Bonjour,
merci et bravo pour ce tuto complet.
Comment peut-on faire pour récupérer les variables channel. Avec 1 fil c’est simple mais avec plusieurs... merci