Syndication - RSS 2.0 et OPML

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Modifications mineures aux fichiers backend de syndication de SPIP visant à les rendre conformes aux spécifications RSS 2.0 ainsi que l’ajout d’un élément d’information sur le sujet de l’article ou de la brève. Aussi, en option, un squelette très simple d’exportation de tous les sites syndiqués au format OPML. Le tout pouvant être ajouté à n’importe quel jeu de squelettes, sans autre modification ou ajout de fonction supplémentaire.

Ces contributions sont basées sur les fichiers de la version 1.8.2pr3. Ils reprennent certaines fonctionnnalités disponibles uniquement avec la version 1.8.2. L’installation ne nécessite aucune modification particulière ou ajout de fonction supplémentaire.

Fichiers backend.html et backend-breves.html de base

Il s’agit ici de conserver exactement les mêmes fonctionnalités que celles disponibles avec la version de distribution 1.8.2 de SPIP, en y apportant quelques changements mineurs décrits ici.

1. Conformité aux spécifications RSS 2.0

Nous passons la version des fichiers backend à la version
2.0 tout simplement parce que SPIP utilise déjà les spécifications du RSS 2.0 et non plus celles de la version 0.91. Voici, entre autre, certaines caractéristiques des spécifications de RSS 2.0 déjà exploitées par les fichiers de syndication livrés avec SPIP et qui ne font partie des spécifications de RSS 0.91.

  • des contenus <description> de plus de 500 caractères
  • un élément <enclosure> permettant de lier à un item des contenus multimédia (de type podcasting, par exemple) ou tout autre type de document joint.
  • des espaces nommées du type :
    xmlns:dc="http://purl.org/dc/elements/1.1/
  • l’élément <image> est optionnel (en 0.91 il est obligatoire).
  • l’élément <category> permettant d’identifier le sujet ou la catégorie d’un <item> (article ou brève).

Cela dit, la plupart des « parser » RSS sont assez libéraux et ne tiennent pas compte de l’information concernant la version. Donc ce n’est pas vraiment "buggant". C’est juste pour bien identifier les choses et appeler un chat un chat...

2. Validité des dates et auteurs

Les fichiers de syndication livrés par défaut avec SPIP continuent encore à systématiquement générer les 3 erreurs de validation suivantes :

  • Undefined item element : date
    <date>2005-07-30 00:00:00</date>
  • author must include an email address
    <author>Nom Auteur</author>
  • An item must not include both author and dc:creator
    <dc:creator>Nom Auteur</dc:creator>

Donc, nous allons :

  • éliminer l’élément <date>. Le format de date généré par SPIP n’est pas conforme aux spécifications RSS. Et même s’il l’était, ça entrerait en conflit avec <dc:date> - « An item must not include both date and dc:date ». De plus, le format utilisé par <dc:date> (que SPIP filtre déjà tout à fait correctement) s’adapte mieux à la langue du lecteur que <date> qui interprète presque toujours la date en anglais.
  • éliminer <author> au profit de <dc:creator> pour sensiblement les mêmes raisons ainsi que pour des raisons de sécurité anti-spam.

3. Rendre le logo du site optionnel

De plus, les fichiers de syndication de la version 1.8.2 introduisent une autre erreur de validation. En l’absence de logo du site, l’élément <url> est vide. Or cet élément est obligatoire pour <image>.

Nous allons donc rendre optionnel l’élément <image>, conditionnel à l’existence de #LOGO_SITE_SPIP.

Installation

  1. Téléchargez l’archive suivante sur votre poste et décompressez.
  2. Téléversez les deux fichiers qu’elle contient dans le dossier contenant vos squelettes ou le cas échéant à la racine de SPIP.
RSS 2.0 de base
Contient les fichiers backend.html et backend-breves.html

Vérification

Vérifiez la validité de votre fil de syndication à :
-  http://feedvalidator.org/

Ajout d’un sujet à chaque item

Nous reprenons les fichiers de base précédents et ajoutons à chaque article et brève un sujet à l’aide de l’élément <category>.

Nous avons arbitrairement choisi d’utiliser le #TITRE de la rubrique mère plutôt que les mots-clés pour diverses raisons :

  • Dans SPIP, chaque article ou brève possède obligatoirement une et une seule rubrique mère.
  • Pusieurs sites n’utilisent pas de mots-clés ou les utilisent à diverses fins autres que la catégorisation des articles ou brèves.
  • Afin d’assurer une compatibilité avec un éventuel module XMLRPC (en développement ailleurs...) qui utilise aussi le #TITRE des rubriques pour classer les articles par « catégorie » ou sujet.
  • Parce que la plupart des squelettes de type « weblog » développées pour SPIP utilisent souvent la structure hiérarchique des rubriques pour mimer la structure des « catégories » ou sujets caractéristiques des carnets de type « weblog ».
  • Pour la catégorisation des sujets par mots-clés, on pourra toujours éventuellement utiliser l’élément <dc:subject>.

Installation

  1. Téléchargez l’archive suivante sur votre poste et décompressez.
  2. Téléversez les deux fichiers qu’elle contient dans le dossier contenant vos squelettes ou le cas échéant à la racine de SPIP.
RSS 2.0 + Catégories
Contient les fichiers backend.html et backend-breves.html

Un squelette OPML d’exportation de sites syndiqués

Voir article complémentaire :

En complément d’information

Références et historiques :
-  La syndication de contenu - diaporama
-  Comment faire de la veille informative ou d’opinion via Internet
-  RSS et Syndication (1)
-  RSS et Syndication (2)
-  Web sémantique et RSS
-  RSS Quick Summary (dont un comparatif RSS 0.91 et 2.0)
-  Ressources Sur RSS

Spécifications
-  Spécifications RSS 2.0 (français)
-  Spécifications RSS 2.0 (anglais)
-  Spécifications RSS 0.91 (Userland) (anglais)
-  Spécifications RSS 0.91 (Netscape) (anglais)
-  OPML 1.0 Specifications

Les agrégateurs :
Presque tous les lecteurs de nouvelles - Newsreaders et modules d’agrégation

Les lecteurs les plus populaires :

-  Sage (Multi OS - extension pour Mozilla/Firefox - Logiciel libre)
-  RSSOwl (Multi OS - Logiciel libre - CPL)
-  Feed Reader (Windows - libre - GPL)
-  Netnewswire Lite (Mac OS X - freeware)
-  Liferea (Linux/Gnome - libre - GPL)
-  Straw (Linux/Gnome - libre - GPL)

Les annuaires d’agrégation :
-  syndic8 (inscription libre)
-  News is Free

Exemples d’agrégation dans SPIP :
-  REZO
-  Sedna RSS
-  SpipFeeder
-  Brest Ouvert

Les autres contributions portant sur la syndication dans SPIP
-  Un fil RSS 2.0 et un fil ATOM 0.3
-  SpipFeeder : un agrégateur rss.
-  Fils RSS/backends mis en page avec xsl & css

Outil de validation
-  Pour valider vos fils de syndication

Discussion

2 discussions

  • 2

    Est-ce que le squelette d’exportation en opml marche sur un spip 1.9.2.?

    quel modification faire vu le changement de .php3 en .php.

    Merci d’avance

    • j’ai modifier le fichier sites_syndic.html de la maniére suivante

      #CACHE{3600}
      <?php
      $flag_preserver = true;
      	@header('Content-type: text/x-opml[; charset=(#CHARSET)]');
      	echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.">\n";
      ?>
      <opml version="1.1">
      	<head>
      		<title>[(#NOM_SITE_SPIP|texte_backend)]</title>
      		</head>
      	<body>
      	<BOUCLE_syndic(SITES){tout}{syndication=oui}>
      	    <outline 
      			text="[(#NOM_SITE|texte_backend)]"
      			description="[(#DESCRIPTIF|texte_backend)]"
      			title="[(#NOM_SITE|texte_backend)]"
      			type="rss" 
      			version="RSS"
      			htmlUrl="#URL_SITE"
      			xmlUrl="#URL_SYNDIC" />
      	</BOUCLE_syndic>
      
      	</body>
      </opml>

      et ensuite insérer un lien comme ceci <a href="spip.php?page=sites_syndic">lien opml<a> mais tous ceci ne donne aucun résultat.
      Comment peut on modifier tout cela pour que cela marche avec spip 1.9.2

    • Les choses sont devenues beaucoup plus simple avec SPIP 1.9.2.

      • Téléchargez et placez dans votre dossier /squelettes/ le fichier suivant :
      • Vous appelez le fichier OPML dans vos squelettes par :
        <a href="spip.php?page=opml" title="OPML">OPML</a>
      • Dans les zones textes de vos articles, brèves, rubriques, etc... vous insérez :
        [OPML->spip.php?page=opml]

      Exemple :
      www.stages.alternatives.ca/spip.php...

    Répondre à ce message

  • 1

    Dans le fichier : backend.html

    Il faut changer : BOUCLE_podcast(DOCUMENTS) (id_article) (mode=document)

    par : BOUCLE_podcast(DOCUMENTS)(id_article) (mode=document) (0,1)

    Sinon le flux RSS ne peut être validé.

    Fred

    • Oui, tout à fait exact. Merci.

      Et en passant, tous les problèmes signalés dans le présent article ont été corrigés dans la version en développement (1.9) en plus d’apporter un contenu riche pour les lecteurs de nouvelles éclairés.

      André Vincent

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom