Accueil Boite à Outils Syndication de contenu Abandonnons RSS 0.91 !

Publié le : 22 janvier 2006
Publication antérieure :
6 septembre 2005

Imprimer Imprimer cet article

Auteur :
Alain Sichel

Alain Sichel
Abandonnons RSS 0.91 !

La syndication de contenu est un très bon moyen de faire connaître son site. Avec SPIP, les fichiers de syndication sont générés automatiquement à partir de modèles (squelettes).

Je vous propose dans cet article d’améliorer l’efficacité de vos fils en abandonnant le format RSS 0.91 et en complétant les informations fournies [1]. Pour utiliser les propositions de cet article, la version 1.8.2 de SPIP est nécessaire, en raison des filtres texte_backend url_absolue et liens_absolus.

Les squelettes d’origine ne sont pas conformes !

Avec l’installation de SPIP, vous avez 2 fichiers de syndication qui sont automatiquement réalisés :

- backend.php3 il s’agit d’un fil au format RSS 0.91 présentant les 10 derniers articles publiés sur le site, avec aussi depuis SPIP 1.6 la possibilité de présenter les derniers articles d’une rubrique [2],
- backend-breves.php3 c’est également un fil au format RSS 0.91 présentant les 10 dernières brèves publiées sur le site.

Si vous présentez un de ces fichiers à Feed validator, vous verrez qu’ils ne respectent pas le format RSS 0.91 [3]. Ils présentent en effet des éléments <date> et <author> non compatibles [4].

Ceci n’est pas une critique des auteurs de SPIP : je suppose que ce choix a été fait pour faciliter la récupération des informations par les premiers lecteurs RSS disponibles. Si le lecteur ne comprend pas <dc:date> ou <dc:creator>, il reconnaitra peut-être <date> ou <author>. Les lecteurs RSS/Atom ont évolué, aussi je crois préférable d’avoir des fichiers de syndication respectant les formats.

Mais ce n’est pas tout, le format RSS 0.91 est limité :

- <title> ne doit pas dépasser 100 caractères et <description> 500,
- il n’est pas prévu d’utiliser des modules complémentaires comme par exemple Dublin Core,

en conclusion RSS 0.91 ne peut pas être adapté pour présenter un fil de syndication correct. Ce n’est pas un problème, car avec quelques modifications simples, on obtiendra des fichiers de syndication RSS 2.0 valides [5].

Des fichiers de syndication RSS 2.0

Ce n’est pas une idée nouvelle puisque André Vincent l’a déjà proposée : Syndication - RSS 2.0 et OPML ainsi qu’Yves Grenier : Un fil RSS 2.0 et un fil ATOM 0.3. Il semble bien que ce choix soit retenu pour la prochaine version 1.9 de SPIP d’utiliser des fichiers de syndication backend.html et backend-breves.html au format RSS 2.0, mais cette sortie n’est pas encore pour tout de suite...

Aussi, je voudrais proposer ma contribution en proposant 2 squelettes backend.html et backend-breves.html avec quelques différences avec les articles ci-dessus ce qui vous permettra de choisir.

Plus d’informations dans vos fils

Le format RSS 2.0 permet d’indiquer des informations complémentaires sur votre site, je vous propose d’ajouter :

- generator : il me semble utile d’indiquer que les fils sont générés par SPIP, le code indiqué ici affichera la version de SPIP installée :

<generator>SPIP <?php echo $spip_version_affichee; ?> - www.spip.net</generator>

- la largeur et la hauteur de l’image peuvent être précisés [6] :

<width>[(#LOGO_SITE_SPIP||extraire_attribut{width})]</width>   <height>[(#LOGO_SITE_SPIP||extraire_attribut{height})]</height>

- description : l’élément description du channel est prévu, mais vide, ainsi que l’élément description de image, autant les utiliser,

- copyright : si vous souhaitez indiquer une mention de copyright, utilisez cet élément,

- pubDate : est la date de mise à jour du fil, calculée en prenant la date de l’article le plus récent. Cette date doit être au format rfc822date il faut pour cela une fonction de mise en forme qui est installée ici plutôt que dans mes_fonctions car ce format est peu utilisé ailleurs :

<BOUCLE_date_du_dernier_article(ARTICLES){lang ?}{branche ?}{par date}{inverse}{0,1}><pubDate><?php echo date("D, d M Y H:i:s", strtotime('#DATE')); ?> +0200</pubDate></BOUCLE_date_du_dernier_article>

On peut écrire les informations de ces différents éléments directement dans le fichier backend.html puisqu’ils ne changent pas. Pour ne pas avoir de problème d’affichage avec les caractères accentués, j’utilise des mots clés pour webmestre, page contact webmestre, description (channel et image) et copyright. Pour cela j’ai créé un groupe de mots clés particulier [7] : ELEMENTS_FIL réservé aux administrateurs, en ayant veillé à ce qu’il ne soit pas proposé pour les articles et brèves, et j’écris 5 mots clés : Copyright, Webmaster, uri_Webmaster, Description_image et Description_site en utilisant Texte explicatif pour noter l’information souhaitée. Il faut alors mettre dans le fichier backend.html (à adapter pour chaque mot clé) :

<BOUCLE_motcle_Copyright(MOTS){titre="Copyright"}>
[<copyright>(#TEXTE|texte_backend)</copyright>]</BOUCLE_motcle_Copyright>

Si vous ne souhaitez pas créer des mots clés spécifiques, une autre façon de faire est d’utiliser le fichier local_fr.php3 [8], par exemple en notant :

'copyright' => 'Copyright Médecins Maîtres-Toile francophones',

il faudra alors mettre dans backend.html :

<copyright><:copyright:></copyright>

- webmestre :

<BOUCLE_motcle_Webmaster(MOTS){titre="Webmaster"}>
[<dc:creator>(#TEXTE|texte_backend)</dc:creator>
<BOUCLE_motcle_uri_Webmaster(MOTS){titre="uri_Webmaster"}>[ - (#TEXTE|texte_backend)]</BOUCLE_motcle_uri_Webmaster>]</BOUCLE_motcle_Webmaster>

Je vous suggère de noter dans le mot clé Webmaster "Votre prénom, nom" et dans uri
Webmaster "Votre page de présentation" où votre page de présentation est la page auteur vous concernant (généralement "auteur.php3 ?id_auteur=1") qui permet l’envoi d’un message par un formulaire.

On peut utiliser <webMaster></webMaster> mais uniquement pour indiquer son email, ce qui n’est pas conseillé pour limiter le spam.

Et puis, pourquoi afficher seulement les 10 derniers articles, pourquoi pas 15 ? Je vais aussi vous proposer de simplifier la boucle d’affichage [9] qui devient :

<BOUCLE_15recents(ARTICLES){lang ?}{branche ?}{par date}{inverse}{0,15}{unique}>
<item>
 <title>[(#TITRE|supprimer_numero|texte_backend)]</title>
 <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
<dc:date>[(#DATE|date_iso)]</dc:date>
 <dc:format>text/html</dc:format>
 <dc:language>#LANG</dc:language>
<dc:creator><BOUCLE_auteurs(AUTEURS){id_article}{" / "}>[(#NOM|texte_backend)][ - (#URL_AUTEUR|url_absolue)]</BOUCLE_auteurs></dc:creator>
[  <description>[&lt;img src="#URL_SITE_SPIP/(#LOGO_ARTICLE||extraire_attribut{src})" align="right" hspace="4" vspace="4"&gt;](#INTRODUCTION|liens_absolus|texte_backend)]</description>
</item>
</BOUCLE_15recents>

Ceci permet d’afficher à côté du nom de l’auteur l’URL de sa page de présentation permettant l’envoi d’un message par un formulaire.

Ce code permet l’affichage des URL absolues pour les images et les liens dans <description>, donc utilisables pour un fil, contrairement à la dernière mise à jour 1.8.2e de SPIP où pour l’élément <description> le logo de l’article, les images et les liens s’affichent avec des URL relatives.

J’ai fait le choix pour ce fichier d’afficher la présentation de l’article, mais pas le texte entier (contenu "riche"), mais je présenterai d’autres fichiers offrant cette posssibilité dans un second article. Attention, si vous utilisez une version de SPIP comprise entre la 1.8.2 et la 1.8.2d, le fichier backend.html par défaut présente vos articles entiers sans vous demander votre avis ! Ce problème est corrigé avec la mise à jour 1.8.2e.

Valorisation sur votre site

Les navigateurs modernes comme Firefox signalent la présence d’un fil de syndication par le symbole à droite de la barre de navigation (en bas à droite des pages pour les versions antérieures à Firefox 1.5).

Afin que pour votre site les fichiers de syndication soient signalés par cette image, il faut indiquer dans le code de la page entre <head> et </head> la balise :

<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="backend.php3">

<:syndiquer_site:> sera remplacé par "Syndiquer tout le site", si vous voulez modifier cette phrase, il faut ouvrir le fichier "/ecrire/lang/public_fr.php3" pour mettre à la place par exemple "Syndiquer les 15 derniers articles", il faut également mettre à jour les autres fichiers de langue si votre site est multilingue. Vous pouvez faire de même pour les brèves, avec pour un site uniquement en français :

<link rel="alternate" type="application/rss+xml" title="Syndiquer les 15 dernières brèves" href="backend-breves.php3">

Pour un site multilingue, on préférera :

<link rel="alternate" type="application/rss+xml" title="<:syndiquer_breve:>" href="backend-breves.php3">

à condition de créer un fichier "/ecrire/lang/local_fr.php3" [8] dans le quel on indiquera par exemple : 'syndiquer_breve' => 'Syndiquer les 15 dernières brèves', on fera de même pour les fichiers correspondant aux autres langues du site.

Dans les fichiers par défaut de SPIP, la balise pour les articles est déjà placée dans le squelette de la page d’accueil sommaire.html, mais pas la balise pour les brèves. Si vous souhaitez que le symbole soit visible dans toutes les pages du site, placez également les balises dans le squelette article.html, et pour les brèves dans breve.html. La page rubrique.html contient déjà une balise proposant les 15 derniers articles de la rubrique :

<BOUCLE_rubrique(RUBRIQUES) {id_rubrique}>
<link rel="alternate" type="application/rss+xml" title="<:syndiquer_rubrique:>" href="backend.php3?id_rubrique=#ID_RUBRIQUE">
</BOUCLE_rubrique>

à vous de voir si vous voulez également ajouter dans cette page une balise pour les 15 derniers articles ou pour les 15 dernières breves.

Conclusion

Cet article vous présente les éléments pour avoir des fichiers backend.php3 et backend-breves.php3 plus complets et conformes au format RSS 2.0 (Voir en bas de l’article le fichier à télécharger contenant des exemples de squelettes).

Dans l’article Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP, je vous proposerai également des fils aux formats RSS 1.0 et Atom, j’en profiterai pour vous présenter des fichiers avec le texte complet des articles pour ceux qui veulent cette possibilité.

Quelques explications sur le document joint

Le document joint à cet article, backend_4.zip : contient les exemples de fichiers backend.html et backend-breves. html. Il a été fait pour pouvoir être installé tel quel sur un site SPIP afin de pouvoir être utilisé par ceux qui ne sont pas habitués à modifier les squelettes. Ainsi, si les mots clés proposés dans cet article pour Copyright, Webmaster, Description_image et Description_site n’ont pas été réalisés, ils ne seront pas affichés ; si on n’a pas précisé quelle image utiliser pour #LOGO_SITE_SPIP tous les éléments correspondant à <image> n’apparaitront pas, si la largeur de l’image dépasse 144 pixels ou sa hauteur 400 pixels, ces dimensions ne seront pas mentionnées pour que le fichier soit conforme au standard RSS 2.0 (Pour cela j’ai du ruser en ajoutant un peu de PHP dans le squelette).

 


 

 

[1] Cet article a été publié le 6/09/05 (son titre était alors "Pour avoir des fils propres, nettoyez vos squelettes !"). Il a ensuite été modifié le 16/12/05, le 26/12/05, le 3/01/06, le 10/01/06 et le 22/01/06. Le fichier à télécharger tient compte de ces modifications. Merci à André Vincent pour ses conseils pour améliorer cet article.

[2] Par exemple backend.php3?id_rubrique=3 affichera uniquement les derniers articles de la rubrique 3.

[3] Voir Backend.UserLand.Com et RSS 0.91 Spec, revision 3.

[4] Je ne détaille pas les raisons d’abandonner <date> et <author>, si cela vous intéresse, lisez FichiersDeSyndication.

[5] Informations sur le format RSS 2.0 : RSS 2.0 Specification (en anglais) et RSS 2.0 (en français).

[6] Si vous ne savez pas comment utiliser #LOGO_SITE_SPIP il faut aller dans le back-office et cliquer sur Edition, vous avez alors la possibilité de choisir le LOGO STANDARD DES RUBRIQUES qui sera reconnu par #LOGO_SITE_SPIP
Quand vous faites cela, le logo du site sera aussi le logo par défaut pour toutes vos rubriques. Si ce n’est pas ce que vous voulez, il faut indiquer autrement le logo de votre site dans vos fils, par exemple en notant les valeurs dans backend.html et backend-breves.html :

<image>
   <title>[(#NOM_SITE_SPIP|texte_backend)]</title>
   <url>#URL_SITE_SPIP/adresse_de_l_image</url>
   <link>#URL_SITE_SPIP/</link>
   <width>largeur_en_pixels</width>
   <height>hauteur_en_pixels</height> <BOUCLE_motcle_Description_image(MOTS){titre="Description_image"}>[<description>
(#TEXTE|texte_backend)</description>]</BOUCLE_motcle_Description_image>
 </image>

[7] J’adapte ici l’astuce présentée par Yves Grenier dans Un fil RSS 2.0 et un fil ATOM 0.3 pour le "Sous_titre_site".

[8] C’est dans les fichiers de langue de spip, dans /ecrire/lang/. Si vous n’avez pas l’habitude d’utiliser local_fr.php3, voyez la page Internationalisation du squelette qui donne des explications et un exemple.

[9] Cette unique boucle permet l’affichage des 15 derniers articles parus, ou si le fichier est appelé par backend.php3?id_rubrique=44 des 15 derniers articles de la rubrique indiquée.


Document joint à l'article

backend_5.zip - Contient les fichiers backend.html et backend-breves.html décrits dans l’article.

Cliquez ici pour réagir à cet article

Imprimer Imprimer cet article


Réactions à l'article :