Boucler sur un flux RSS avec SPIP 3

La version 3 de SPIP, sortie en mai 2012, permet désormais de boucler sur des éléments externes à SPIP sans nécessiter l’ajout de codes PHP dans les squelettes, ni même l’emploi de fonctions supplémentaires comme cela aurait été indispensable avec les versions précédentes.

Cependant, ni l’article de base, ni les exemples d’utilisation n’expliquent à mon sens suffisamment la marche à suivre pour pouvoir extraire n’importe quel flux.

Configuration du site

En premier lieu, il s’agit de définir quel champ de SPIP servira à définir les URLs de flux RSS à afficher. On pourrait utiliser un champ préexistant, mais il est préférable d’en créer un nouveau qui lui serait dédié.

Dans le cas de ce site, j’ai créé un champ « RSS » pour les mots-clés de SPIP avec l’aide du plugin Champs Extras.

Intégration du code

J’appelle ensuite, dans le squelette mot.html [1], le code suivant :

[(#INCLURE{fond=pods/flux_rss}{flux=#RSS})]

Voici le code de mon fichier pods/flux_rss.html :

<B_rss>
        <h2>Derniers articles parus</h2>
        <ul id="flux_rss">
        <BOUCLE_rss(DATA){source rss, #ENV{flux}}{0,5}>        
                [<li>
                        <a href="#VALEUR{url}">(#VALEUR{titre})</a>
                </li>]
        </BOUCLE_rss>
        </ul>
</B_rss>

Et voilà le résultat, avec le flux RSS de l’Onironaute [2] :

Intégration du flux RSS de l'Onironaute
Intégration du flux RSS de l’Onironaute

Comment connaître les variables à utiliser ?

Les boucles externes de SPIP retournent un couple de #CLE => #VALEUR. Cependant, aucune documentation ne fournit la liste des variables du flux qui, de fait, ne sont pas les noms des balises du flux RSS, mais une version adaptée à SPIP :

  • title devient titre,
  • link devient url,
  • etc

En cas de doute sur les données à utiliser, il suffit d’exécuter un foreach sur la #VALEUR, comme suit :

<B_rss>
        <h2>Derniers articles parus</h2>
        <ul id="flux_rss">
        <BOUCLE_rss(DATA){source rss, #ENV{flux}}{0,1}>
                [(#VALEUR|foreach)]
        </BOUCLE_rss>
        </ul>
</B_rss>

Ce qui nous donne le résultat suivant :

Liste des paramètres disponibles pour un flux RSS
Liste des paramètres disponibles pour un flux RSS

Notes

[1Bien entendu  ; l’ajout de champ et le placement du code peuvent se faire dans n’importe quel objet de SPIP, je parle juste ici de l’exemple particulier de mon développement

[2Oui, les intitulés sont absurdes, c’est parfaitement normal

Laissez votre commentaire