Voir aussi
Dans la même rubrique :
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
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 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Syndication pour phpBBDu même auteur :
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
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
Afficher un fil RSS/Atom sur votre site 1/3
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
Exécuter un Javascript dans une page SPIP
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 Web
Exécuter un Javascript dans une page SPIP
Réaliser un formulaire de contact (4/4)
Editer plusieurs fichiers de syndication 3/3
Gestion d’une rubrique... en attendant SPIP
Installer un script PHP pour les nuls
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Editer plusieurs fichiers de syndication 1/3
Un Editeur RSS pour votre site 1/2
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Proposer plusieurs styles pour votre site
Webmasters : Comment mieux se référencer ?
Un lecteur RSS pour votre site 1/2
xhtml - 4 : Les entités
Quiz en PHP 2/3
Etablir un questionnaire statistique en ligne
Quand JavaScript est désactivé... 2/2
Réaliser un formulaire de contact (3/4)
Syndication, comment s’y retrouver
Belles icônes pas chères !
Un lecteur RSS pour votre site 2/2
Conseils pour débuter un site web
Positionnement fixe... même avec Internet Explorer !
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Un serveur dédié pour les nuls
Page Erreur 404 en PHP
Quiz en PHP 1/3
Menu de navigation sans JavaScript
Javascript : n’oubliez pas Mac OS !
Editer plusieurs fichiers de syndication 2/3
Publication Spip : forme et typographie
Réaliser un formulaire de contact (2/4)
Tri et Histogramme
Comment intégrer Snap Shots à Rapidweaver ?
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Soigner en ligne, un art impossible ?
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Page contact en PHP 1/3
Initiation au xhtml - 1
La Netiquette des forums
Page contact en PHP 2/3
Un Editeur RSS pour votre site 2/2
Utilisation de la classe easyRSS
Analyser les réponses à une liste de questions
Contrôler l’accès d’une partie du site avec .htaccess
Astuce pour les images fréquemment utilisées
Quiz en PHP 3/3
Page contact en PHP 3/3
Le web structuré et sa présentation
Ecrire ce qu’on veut dans SPIP
Créer un forum à l’aide de phpBB
Réaliser un formulaire de contact (1/4)
Initiation au xhtml - 2
Comment faire migrer son site ?
Créer une liste de QCM
Réaliser un formulaire de contact (5/4)
La syndication de contenu RSS
Lire nos fichiers de syndication
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
Syndication pour phpBB
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 SPIPSyndication
Utilisation de la classe easyRSS
Syndication, comment s’y retrouver
Atoute
Collège des Médecins Généralistes Enseignants - Université Pierre et Marie Curie
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Généralistes 2002
Un Editeur RSS pour votre site 1/2
Droit-médical.net
Editer plusieurs fichiers de syndication 3/3
Un Editeur RSS pour votre site 2/2
Fédération des Acteurs de l’Alcoologie et de l’Addictologie
Un lecteur RSS pour votre site 1/2
Comité Départemental d’Education pour la Santé des Yvelines
Femiweb
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Lire nos fichiers de syndication
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
Quiz en PHP 3/3
Page contact en PHP 3/3
Gestion d’une rubrique... en attendant SPIP
Quiz en PHP 2/3
Quand JavaScript est désactivé... 2/2
Page contact en PHP 2/3
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 1/3
Astuce pour les images fréquemment utilisées
Page contact en PHP 1/3
Javascript : n’oubliez pas Mac OS !
Ecrire ce qu’on veut dans SPIP
Editer plusieurs fichiers de syndication 3/3
Exécuter un Javascript dans une page SPIP
Page Erreur 404 en PHP
Syndication, comment s’y retrouver
Installer un script PHP pour les nuls
Menu dépliant pour les rubriques
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 1/2
Menu de navigation sans JavaScript
Editer plusieurs fichiers de syndication 2/3
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Conseils aux rédacteurs
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Ecrire ou modifier un article
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
Reprendre un document Word
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
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Joindre un logo à un article
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 SPIP
Accueil
Boite à Outils
Syndication de contenu
Afficher un fil RSS/Atom sur votre site 1/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.
Dans un article précédent, j’ai présenté l’utilisation de la classe easyRSS pour permettre à des sites PHP la récupération des informations de fichiers RSS. Dominique WOJYLAC a repris le code et nettement amélioré ce lecteur en réalisant fil_LE. Depuis la version 2.0 [1], cette classe est plus rapide et plus performante, elle reconnait les formats RSS 0.91 1.0 et 2.0 et le format Atom 0.3.
Trois articles permettront de voir ses possibilités :
Le lecteur fil_LE version 2.1, téléchargeable ici, comprend 12 fichiers :
Le lecteur Fil_LE utilise 2 fichiers :
Transférez les 2 fichiers rss_read.inc.php et exemple-1.php sur votre site. Attention, ces fichiers doivent être dans le même répertoire, sinon il faut modifier exemple-1.php à la ligne 54 :
include 'rss_read.inc.php'; |
en indiquant le chemin pour se rendre au fichier rss_read.inc.php
Affichez ensuite la page exemple-1.php mise sur votre site dans votre navigateur et regardez le résultat : l’affichage du fil de syndication du site MacDigit.
Pour afficher le fil de syndication de votre choix, ouvrez le fichier exemple-1.php, et indiquez, à la place des lignes 70 à 79 l’adresse de ce fichier, par exemple :
$rss -> parsefile('http://www.generalistes2002.net/backend.php3',15); |
Le nombre 15 indique que seuls les 15 premiers items seront affichés. Si on n’indique pas de valeur, tous les items du fichier seront affichés.
Vous pouvez aussi renommer la page exemple-1.php, pourquoi pas generalistes_2002.php pour cet exemple ? Il ne reste plus qu’à transférer votre fichier sur votre serveur et regarder le résultat dans votre navigateur.
La classe rss_read retourne les informations récupérées dans le fichier de syndication sous forme de tableaux associatifs :
- Le premier pour channel :
Une fois qu’on a écrit (ligne 103 de exemple-1.php) :
$channel = $rss -> get_channel();
on peut récupérer tous les éléments en les écrivant tout simplement sous la forme : $channel['link'] $channel['title'] $channel['description']
Cela fonctionne également s’il s’agit d’un fichier Atom, les éléments de <feed> sont présentés dans le tableau $channel.
- Le deuxième pour image :
De même, on écrit (ligne 108 de exemple-1.php) :
$image = $rss -> get_image();
on peut ainsi retrouver tous les éléments : $image['link'] $image['url'] $image['width'] $image['height'] $image['title']
- Le troisième pour item :
Après avoir écrit (ligne 113 de exemple-1.php) :
$items = $rss -> get_items();
on peut ainsi avoir tous les éléments : $items['pubdate'] $items['author'] $items['category'] $items['link'] $items['title'] $items['description']
Si un élément est appelé autrement, rss_read le récupère :
<date> <dc:date> <modified> et <published><dc:subject><summary> et <dc:description><dc:creator><dc:rights> et <rights>- Un dernier pour textinput :
Le principe est le même (voir les lignes 143 à 150 de exemple-1.php) pour afficher les éléments, mais les formulaire textinput n’est pas utilisé dans la plupart des fichiers de syndication.
Choisir son affichage :
Une fois compris la récupération des données, si le résultat obtenu n’est pas exactement ce que vous voulez, vous n’avez plus qu’à choisir les éléments que vous voulez présenter (et dans quel ordre ?), puis à les afficher dans un tableau, un div, une liste à puces, des paragraphes... et à les mettre en valeur (style, couleur...) en utilisant les moyens du HTML et des CSS.
Bien sûr, pour cela, il faut être un peu habitué à jongler avec le code, si ce n’est pas votre cas, je vous conseille plutôt de partir d’un exemple de présentation qui vous convient, exemple-1.php ou exemple_a.php qui est expliqué ci-dessous.
Le fichier exemple_a.php montre une autre façon de présenter un fichier de syndication. Je ne vais évoquer ici que les différences avec exemple-1.php.
La présentation est ici sous forme de liste à puces et non pas comme précédemment dans un div, sous forme de paragraphes.
Le format de date choisi est différent, sous forme chiffrée courte "JJ/MM/AAAA" (exemple : 23/06/2005), cette mise en forme est faite à la ligne 44 par : $date = date('d/m/Y', strtotime($date)); au lieu de :
setlocale(LC_TIME, 'fr_FR');
$date = strftime("%A %d %B %Y à %Hh", strtotime($date));
Les conditions comme par exemple if (!empty($items[$i]['pubdate'])) sont remplacées par if (trim($items[$i]['pubdate'])!=''). En apparence, le fonctionnement est le même, mais on évite ainsi l’affichage de caractères inutiles lorsque l’élément existe, mais est vide, ce qui arrive quand le fil contient <pubDate /> <author /> ou <description />
A noter un choix tout à fait personnel pour les liens : echo '<a class="ext" title="Lien externe" href="'.$items[$i]['link'].'" target="_blank">' les liens s’ouvrent dans une nouvelle fenêtre, class="ext" leur donne une couleur différente des liens internes au site, title="Lien externe" est destiné aux non voyants qui ne peuvent pas voir la couleur différente, ils sont ainsi informés par leur logiciel de lecture. Si vous préférez présenter les liens autrement, il est facile de supprimer class="ext" title="Lien externe" de même que le target="_blank".
Si vous mettez le fichier exemple_a.php sur votre serveur, vous remarquerez sous le titre "Articles de Fulmedico - Fédération des utilisateurs de logiciels médicaux et communicants :" une répétition "Fulmedico - Fédération des utilisateurs de logiciels médicaux et communicants" qui correspond au titre et au lien de l’image, mais on ne voit pas de logo ! Ceci est assez fréquent avec des fils RSS générés automatiquement (comme avec SPIP) : le webmestre n’a pas remplacé l’image proposée par défaut par une image réelle. Dans ce cas, tant que le webmestre n’a pas modifié son fichier, il vaut mieux ne pas afficher ceci en bloquant les lignes 77 à 81 par exemple en tapant /* avant et */ après, ce qui neutralisera le code, mais vous permettra de le remettre par la suite.
Comment faire si on veut afficher plusieurs fils sur la même page ?
Vous pourrez voir le code d’un tel fichier avec exemple_b.php. Ce fichier reprend le même code, mais au lieu de le répéter exactement :
$rss = new rss_read();
$encode = $rss -> get_encoding();
$rss -> parsefile('http://www.chemg.org/backend.php3',15);
if ($rss) {
$channel = $rss -> get_channel();
on remplace $rss par une autre variable $fil par exemple, en indiquant bien sûr l’URL du nouveau fil :
$fil -> parsefile('http://www.chemg.org/backend-breves.php3',15);
Autres changements, par rapport à exemple_a.php, cette fois-ci :
J’ai disposé titre et logo sur la même ligne (ce sont les 2 cellules d’un tableau).
L’écriture de certains éléments de $channel (description) et de $image (width) et (height) n’a lieu que s’ils existent, par exemple :
if (trim($channel['description'])!='') { |
J’ai changé le format de date, pour montrer à quel point c’est simple, en remplaçant $date = date('d/m/Y', strtotime($date)); par
setlocale(LC_TIME, 'fr_FR');
$date = ucfirst(strftime("%A %d %B %Y", strtotime($date)));(lignes 43-44) [3].
Si vous regardez le résultat, vous verrez que cela fonctionne très bien, mais que l’affichage des brèves n’est pas très esthétique.
Peux-t-on faire quelque chose pour éviter d’afficher tous ces espaces et les lignes horizontales ? Oui, bien sûr, je l’ai même réalisé, mais si on veut modifier cet affichage, cela mérite bien un deuxième article.
[1] La dernière version disponible est la 2.1.
[2] Le code de rss_read.inc.php ne doit pas être modifié, il ne sera donc pas expliqué dans ces articles, sauf si j’ai plusieurs demandes sur ce sujet.
[3] La fonction ucfirst() met la première lettre de la chaine en majuscule, pour voir les autres possibilités d’affichage avec la fonction strftime(), voir cette page.

j’ai un problème : voici ce que affiche exemple-1.php :
Fatal error : Call to undefined function : xml_parser_create() in ......./public/www/rss_read.inc.php on line 152
problème du coté de l’hébergeur ?
merci
J’ai moi-même effectuer un code PHP permettant d’afficher sur mon site des fils RSS. Mon code étant nettement moins bien structuré, j’ai choisi d’utilisé fil_LE. Il y a que 2 informations que je n’ai pas obtenu avec fil_LE :
1) Comment récupérer la version rss ? Alors que le fil RSS donne : < rss version="2.0" ... > ...
2) De même pour le fil RSS du journal "Le Monde", dans les tags < item > il y a le tag "enclose" qui est structuré ainsi : < enclose url="..." type="image/jpeg" >< /enclose > Comment récupérer l’URL ? Dans items[$i][’enclose’] il n’y a qu’un "blanc" car entre < enclose > et < /enclose > il n’y a rien...
Merci pour votre aide et aussi à Dominique WOJYLAC pour le code existant !
ça avait l’air facile, j’ai essayé mais ça donne ça dans ma page exemple-1.php :
Flux : http://www.liberation.fr/rss.php Encodage : Date modification :
C’est le serveur ? quelqu’un peut m’aider siouplait ?
Très bien votre article, mais il me semble qu’il faudrait mettre à jour en fonction de la dernière version du fichier exemple-1.php de Dominique WOJYLAC, pour que ce que vous décrivez dans le paragraphe ’Afficher le fichier de votre choix’ puisse fonctionner.
Si on conserve les lignes 81 à 86 on obtient ’Fichier rss incorrect ou erreur pendant l’analyse !’
Si on les supprime, ça se passe mieux.
Bonjour.
Les éléments d’un flux RSS sont parfois longs ou même contiennent l’article in extenso tel que sur la page originale
Je n’ai pas trouvé dans tes exemples le moyen de les raccourcir à une longueur donnée sur la page d’accueil (une ou deux lignes par exemple).
Mais peut-être ai-je mal cherché...
Merci de ton aide.
Effectivement, ce n’est pas dans l’article. Si on veut limiter à 200 caractères la longueur de $description, il faut ajouter dans le script :
if (strlen($description) > 200) { |