
Boucler sur un flux RSS avec SPIP 3
Publié le
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 :
Voici le code de mon fichier pods/flux_rss.html :
<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] :
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 :
<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 :
Notes
[1] Bien 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
[2] Oui, les intitulés sont absurdes, c’est parfaitement normal
Laissez votre commentaire