SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 172 visiteurs en ce moment

Accueil > Interactivité, échanges > Syndication > Archives Syndication > Un fil RSS 2.0 et un fil ATOM 0.3

Un fil RSS 2.0 et un fil ATOM 0.3

24 novembre 2004 – par Yves Grenier – 22 commentaires

0 vote

Deux squelettes permettant de placer un fil RSS 2.0 ou un fil Atom 0.3 sur un site SPIP (construits sur le modèle du squelette backend).

Introduction

Mettre sur son site un lien vers un fil RSS ou un fil Atom a pour but de permettre au visiteur de se tenir au courant des nouveautés du site. Cette contribution propose des squelettes pour fournir ces informations dans les deux formats récents que sont la version 2.0 de RSS et la version 0.3 de Atom. Si vous ne savez pas à quoi sert un fil RSS ou Atom, les liens ci-dessous vous l’expliqueront (on emploie le mot « fil » pour évoquer le fil d’une conversation).

Aujourd’hui, SPIP propose déjà avec le couple backend.php3/html un fil RSS 0.91. Ma proposition d’un rss2.php3/html emploie la version 2.0 plus récente. Quand à Atom, c’est un autre format, une autre manière de présenter les informations, que ce soit à destination du logiciel de lecture de fils, ou à destination d’un site qui en syndique d’autres. Il n’est pas rare de voir sur un site, côte à côte, plusieurs icônes ou plusieurs liens pointant sur chacun des formats, afin que le visiteur puisse choisir dans quel format il veut s’abonner aux nouvelles du site.

Pour en savoir plus sur RSS :
-  la description sur feedvalidator (en anglais),
-  une page donnant de nombreuses ressources en français sur klogfr.

Pour en savoir plus sur Atom :
-  le site de Atomenabled (en anglais),
-  Une version (brouillon, en anglais) de la spécification 0.3,
-  Une présentation en français sur la-grange.net.

Mode d’emploi

Appelés avec un argument id_rubrique=NN, les deux squelettes rss2.html et atom03.html renvoient (comme le fait backend.html en RSS 0.91) la liste des 10 derniers articles dans la rubrique NN. Exemple :

http://www.transactiv-exe.org/rss2.php3?id_rubrique=2

ou encore

http://www.transactiv-exe.org/atom03.php3?id_rubrique=2

Appelés sans argument, les mêmes squelettes renvoient une liste de tous les articles datant de moins de 5 jours, et si il n’y en a pas au moins 8, ils donnent les 8 articles les plus récents du site.

Les couples html/php3 correspondant à ces deux squelettes se trouvent dans l’archive zip jointe à cet article.

Dans la version initiale de cette contrib, les squelettes ajoutaient la liste des 10 plus récents messages publiés dans les forums. J’ai maintenant supprimé cette fonctionnalité. Mais on trouvera encore dans l’archive jointe les versions initiales incluant cette fonctionnalité (sous les noms atom03forum et rss2forum).

J’ai aussi corrigé les éléments Dublin Core « date » et « creator » que j’avais écrits avec une majuscule. Les spécifications sont en effet trompeuses, car ils donnent le nom de ces éléments avec une majuscule au début, mais précisent dans le paragraphe 4.2 d’un autre document que les éléments doivent écrits en minuscules.

Fonctions requises

Ces squelettes utilisent quatre fonctions php qui doivent être placées dans mes_fonctions.php3. Ce sont :
-  la fonction pasdecrochet qui supprime le caractère « > » en début des titres de forum (au moment où j’écris cette contrib, je ne me souviens même plus du problème que ce caractère posait, mais je me souviens que ça en avait posé un),
-  la fonction w3cdate qui permet de formatter une date en accord avec W3C.NOTE-datetime-19980827 comme le demande la spécification d’Atom,
-  la fonction tagdate est utilisée pour construire à partir de #DATE une date qui sera incluse dans une chaîne de caractères unique et permanente pour chaque article (ce qui définit un <tag> dans Atom),
-  la fonction supprimehttp retire simplement les caractères « http:// » au début d’une URL.

Voici le code de ces fonctions (désolé, j’ai mis tous les commentaires en anglais, une vielle habitude) :

On remarquera aussi dans le code de ce squelette la boucle

<BOUCLE_motcle_soustitre(MOTS){titre="Sous_titre_site"}>
[(#TEXTE|texte_backend)]
</BOUCLE_motcle_soustitre>

J’ai en effet défini un mot-clé nommé « Sous_titre_site » qui résume le site en une phrase. J’ajoute à cela les 100 premiers caractères de l’article numéro 1. Si vous voulez utiliser ce squelette, je vous conseille de personnaliser ce tag (<description> dans le fil RSS, ou <tagline> dans le fil Atom) en fonction de vos besoins si le choix que j’ai fait ne vous convient pas.

Version de SPIP requise

Ces squelettes fonctionnent sur la version 1.7.2 (ils nécessitent la fonction texte_backend).

Validation

Ces squelettes ont été testés avec http://feedvalidator.org/ pour rss2 et atom03, ainsi que http://rss.scripting.com/ pour rss2.

Dans l’ensemble des essais que j’ai faits, le résultat est valide, mais avec l’appel sans argument, comme les forums sont inclus, il peut y avoir des caractères qui sont codés sous forme numérique, du style &nnnn; ce que le validator n’accepte pas quand on lui a déclaré que le texte était codé en iso-8859-1. J’avoue que ce détail ne m’a pas beaucoup préoccupé, mais j’apprécierais un commentaire me proposant un moyen de corriger cela (à tous les coups, il y a une fonction simple pour faire cela).

Améliorations

Ajouté le 15 mai 2005 :

Après passage à la version 1.8, j’ai retravaillé mes fichiers rss2 et atom03 pour qu’ils soient de nouveau complétement valides.

-  j’ai déplacé la ligne @header("Content-type: application/rss+xml"); qui se trouve dans rss2.php3, et l’ai mise en début du squelette rss2.html, ce qui donne :

<?php
   @header("Content-type: application/rss+xml");
   echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.'>';
?>


-  de même, j’ai déplacé la ligne @header("Content-type: application/atom+xml"); qui se trouvait dans atom03.php3 et l’ai mise en début du squelette atom03.html, ce qui donne :

<?php
   @header("Content-type: application/atom+xml");
   echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.'>';
?>

Ceci supprime un avertissement de feedvalidator sur le type mime des fichiers qui était text/html.

-  j’ai ajouté dans mes_fonctions.php3 les lignes

function supprimetags($texte) {
   // supprime les tags html d'un texte de backend (appeler avant texte_backend).
   $texte = strip_tags($texte);
   return $texte;
}

-  j’ai remplacé dans rss2.html et atom03.html toutes les chaînes #INTRODUCTION|texte_backend par #INTRODUCTION|supprimetags|texte_backend

Ce filtre supprimetags retire tous les tags html du descriptif de l’article. C’est un peu sauvage, mais efficace. Si on veut conserver les codes html, il faudrait inclure ces chaines entre <![CDATA[ et ]]> mais je ne suis pas certain que tous les lecteurs de fils sachent traiter ces attributs CDATA (Spip 1.8 sait le faire). Je pense que dans les squelettes, il faut aussi « échapper » ces caractères [ et ].

Dernière modification de cette page le 27 août 2005

Retour en haut de la page

Vos commentaires

  • Le 2 décembre 2004 à 16:55, par Vampyre En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    Cela fonctionne à une exception près parfaitement chez moi.

    Dans un article, n’y faisant pas attention, j’ai placé un sigle €, qui semble très mal accueilli par les validateurs RSS et Atom.

    Pour le reste, validation impeccable et compatibilité remarquable sur RSS 2.0 et Atom.

    Merci car la validation du backend.html est complètement foireuse sur mon site original spip...

    • Le 2 décembre 2004 à 19:15, par Yves Grenier En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Le caractère euro n’est pas inclus dans tous les ensembles de caractères (charset). Quel est le charset de ton site ? Si c’est iso-8859-1, le caractère euro n’en fait pas partie (il faudrait passer en charset iso-8859-15, très peu utilisé), ce dont on ne s’aperçoit pas car les navigateurs se débrouillent fort bien pour l’afficher, mais le validateur hurle.

      Si le charset est utf-8, l’euro devrait en faire partie (mais je me suis aperçu que sous debian, on pouvait distinguer des charset utf-8 avec et sans euro, ce qui m’a laissé perplexe).

    • Le 30 mai 2013 à 18:19, par eldk En réponse à : Un fil RSS 2.0 et un fil ATOM 0.3

      Bonjour,

      Pour le symbole euro, il faut modifier le filtre texte_backend, fonction text_backend dans /ecrire/inc_filtres.php3. Pour ceux qui utilisent encore d’anciennes versions de SPIP

      ajouter : $texte = str_replace(chr(128), '&#8364;',$texte) ; //symbole euro

      après : if (lire_meta(’charset’) == ’iso-8859-1’)

      Cordialement,

      Eric

    Répondre à ce message

  • Le 24 juin 2005 à 09:49, par Suske En réponse à : > Heure de publication fil RSS 2.0

    Salut et merci pour cette contrib.

    Je l’ai mise ici : http://blogs.brubel.net/rss2.php3

    Un petit problème : dans ThunderBird, la date de publication est à +2h (ce qui doit correspondre à la différence hébergement en france/GMT. Est-ce un problème de Thunderbird (v. 1.0.2) ou est-il possible de corriger ça dans le fil ?

    • Le 24 juin 2005 à 20:49, par ? En réponse à : > Heure de publication fil RSS 2.0

      La date est codée dans le fil en supposant que c’est bien l’heure GMT qui est associée à chaque article. J’ai déjà remarqué que Thunderbird était assez pointilleux sur le codage des dates (sur les mails, j’ai parfois 2h de décalage). La date qui apparaît dans le texte du fil rss est-elle la même que celle qu’affiche Thunderbird ?

      Sinon, tu peux essayer de modifier la date affichée en jouant sur la fonction w3cdate qui est dans mes_fonctions.php3. Il faudrait corriger l’heure, mais en modifiant aussi le jour si cela te fait basculer la veille ou le lendemain. Assure-toi cependant que ce n’est pas un problème que seul thunderbird rencontre.

      Cordialement

      Yves Grenier

    • Le 25 juin 2005 à 15:29, par Suske En réponse à : > Heure de publication fil RSS 2.0

      J’avais pas pensé à regarder le fil en format texte :-( . L’heure est OK. Apparemment, ThunderBird décide tout seul comme un grand que l’heure est GMT et il adapte donc.

      J’ai par exemple <dc:date>2005-06-25T11:15:00Z</dc:date> et ThunderBird affiche 13:15 .

      Je ne connais pas ces conventions. J’imagine que « T » indique « Time » et « Z » indiquerait « Zone » ? Peut-être faut-il rajouter une indication de zone après Z ?

    • Le 25 juin 2005 à 15:50, par Suske En réponse à : > Heure de publication fil RSS 2.0

      Merci pour l’info. En effet, l’heure passée par le fil était OK mais Thunderbird l’intérprète comme GMT et affiche donc +02:00

      J’ai alors trouvé http://websemantique.org/SourcePhpD... et http://developpeur.journaldunet.com..., d’où j’ai déduit que je pouvais modifier le filtre comme suit :

      function w3cdate($texte) {
              // sets date (from #DATE) to W3C format
              $texte = substr($texte,0,10)."T".substr($texte,11,8)."+02:00";
              return $texte;
      }       

      Je sais pas si c’est compliant mais Thunderbird s’y retrouve à présent ;-) Evidemment, ça marchera plus à l’heure d’hiver. Il doit y avoir une notation générale mais je n’ai pas (encore) trouvé...

    • Le 20 novembre 2006 à 12:56, par Suske En réponse à : > Heure de publication fil RSS 2.0

      Elle n’y est plus depuis le passage en 1.9.1, bien sûr...

    • Le 22 novembre 2006 à 20:29, par Yves Grenier En réponse à : > Heure de publication fil RSS 2.0

      Elle n’y est plus depuis le passage en 1.9.1

      Qu’est-ce qui n’y est plus ?

    Répondre à ce message

  • Le 21 juillet 2005 à 10:41, par Benoit En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    Salut,
    je suis complète novice de spip et encore plus des formats RSS, et je n’arrive pas à installer cette contrib qui pourtant me semble des plus utiles.

    pour info : je rénove un site (www.cedej.org.eg) en local pour le moment. Je suis sous la version 1.8, et j’ai donc effectué les quelques modifications citées plus haut.
    Je teste le fil RSS avec Firefox d’une part (j’ai inclut le code du petit rectangle orange), et avec NetNewz d’autre part. Tout marche bien avec backend-dist.html mais avec ces fichiers rss2.html / atom03.html, j’obtiens « Echec du chargement » sous Firefox, et NetNewz m’affiche le titre du site mais aucun message ou nouveauté.

    Merci pour votre aide.

    • Le 21 juillet 2005 à 22:18, par Yves Grenier En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Tout marche bien avec backend-dist.html mais avec ces fichiers rss2.html / atom03.html, j’obtiens « Echec du chargement » sous Firefox, et NetNewz m’affiche le titre du site mais aucun message ou nouveauté.

      Merci pour votre aide.

      Difficile de t’aider avec ce peu d’informations. Est-ce bien rss2.php3 que tu appelles ? Le message sous Firefox laisserait entendre que le fichier n’existe pas, mais le fait que NetNewz affiche le titre laisse entendre que le fil est vide. As-tu vérifié le contenu du fichier ? Firefox permet-il d’afficher le code de la page ?

      Est-ce que la version dans le zip, sans les modifications ultérieures, fonctionne ?

      Cordialement

    • Le 28 juillet 2005 à 10:06, par Benoit En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Merci pour ta réponse, en effet, mon lien recherchait /rss2.php3 au lieu de rss2.php3 tout court.

      Tout marche très bien à présent.
      Cordialement

    Répondre à ce message

  • Le 14 septembre 2005 à 12:00, par ? En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    Même après avoir fait les modifs du 15 mai, ça ne marche pas : ni Safari ni Firefox arrivent à lire les flux. Firefox 1.0.5 me propose de sauvegarder les fichiers .php3 !

    • Le 17 septembre 2005 à 14:39, par Yves Grenier En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Un fil RSS n’est pas prévu pour être ouvert par un navigateur (certains navigateurs le font, d’autres pas). Un fil RSS, c’est un fichier de type xml, pour qu’un navigateur sache l’afficher, il faudrait lui indiquer une feuille de style de type xsl.

      Le meilleur moyen d’exploiter un fil RSS, c’est en utilisant un lecteur de fil RSS, ou alors en syndiquant ce fil depuis SPIP (ou tout autre CMS...).

    Répondre à ce message

  • Le 14 septembre 2005 à 11:53, par ? En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    Les modifs du 15 mai n’ont pas été portées sur l’archive ZIP. Il faudrait indiquer clairement que ces modifs sont à faire à la main, ou alors (encore mieux) proposer 2 archives, selon la version de SPIP.

    Répondre à ce message

  • Le 9 mars 2005 à 08:45, par bmr En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    Ca fonctionne très bien. Merci beaucoup pour cette contrib.

    Mais je voulais avoir le petit carré orange en bas du navigateur, permettant le marque-pages dynamique sous Firefox. En matant le code source de pages qui l’affichaient, j’ai trouvé ce qu’il fallait mettre :

    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss2.php3" />
    <link rel="alternate" type="application/xml" title="Atom" href="/atom03.php3" />

    Il faut espérer que ces instructions seront également valables pour IE7, quand il sortira.

    Répondre à ce message

  • Le 29 janvier 2005 à 08:35, par Juan En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    ceci est pour la syndication et ca fait avancer :) qu’en es t’il pour l’aggregation ? une solution est-elle en place ?
    Je recherche plus l’aggregation que la syndication.
    merci

    • Le 30 janvier 2005 à 12:54, par Yves Grenier En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Qu’entends-tu par aggrégation ? Si tu veux dire la réception de plusieurs fils rss et l’affichage de leur contenu, cela est déjà possible sous SPIP. La version 1.7 le permettait avec des fils RSS 0.91. La version 1.8 (au jour où j’écris, nous en sommes à la beta4) lit et affiche les fils provenant d’autres sites, que ce soit en RSS 0.91, 1.0, 2.0 ou Atom0.3.

    • Le 31 janvier 2005 à 04:18, par Juan En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      autant pour moi, je vais mettre a jour vers la 1.8 alors :)

    Répondre à ce message

  • Le 20 décembre 2004 à 20:21, par Bionet En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

    la fonction pasdecrochet qui supprime le caractère « > » en début des titres de forum

    Mais la fonction |attribut_html ne peut-elle pas donner exactement le même résultat ?

    • Le 20 décembre 2004 à 21:55, par Yves Grenier En réponse à : > Un fil RSS 2.0 et un fil ATOM 0.3

      Non ! La fonction attribut_html retire les tags html, qui sont toute chaine commençant par « <" et se terminant au premier "> » suivant, puis cette fonction remplace les quotes (") par "

      La fonction pasdecrochet se contente de retirer le premier « > » fermant si il n’est pas précédé par un « < » ouvrant. Elle ne peut donc pas êtr remplacée par attribut_html.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • cimobile : plugin « détection et aiguillage des téléphones mobiles »

    20 septembre 2011 – 113 commentaires

    Le plugin « cimobile » détecte les téléphones mobiles et les aiguille vers le jeu de squelettes correspondant. Pour détecter un mobile, il prend en compte le « User-Agent », un cookie, un paramètre d’URL, une URL spécifique pour mobile. Il n’utilise pas (...)

  • ScolaSPIP 4

    19 janvier 2016 – 276 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • SPIP 3, Agenda et FullCalendar

    6 août 2012 – 317 commentaires

    Depuis SPIP 3, l’affichage d’un agenda sous forme de calendrier par jour/semaine/mois à changé. Les filtres |agenda_memo et apparentés sont désormais obsolètes. Il en est de même pour les filtres agendafull_memo et apparentés du plugin Agenda. (...)

  • Couleur de Rubrique

    9 juin 2012 – 58 commentaires

    Le plugin Couleur de rubrique est maintenant adapté à SPIP3. Il permet d’attribuer une couleur par rubrique de façon très simple : un bloc est ajouté sur la page rubrique de l’administration de votre site, qui vous permet de déterminer une couleur, de (...)

  • Passer un site SPIP sous https://

    23 février – 15 commentaires

    Comment migrer simplement votre site SPIP de http:// vers https:// Le protocole https:// devient de plus en plus courant : C’est mieux pour la vie privée de tous La plupart des grands sites l’a déjà adopté Certains navigateurs commencent à afficher (...)