Fil RSS 1.0 avec Dotclear2

DC2 installé depuis quelques jourt, et damned, pas de flux RSS 1.0 ! Premier plongeon dans ses entrailles (bien pensées, pour ce que j'en ai vu) pour l'ajouter. Le patch complet est disponible ici et l'explication pas à pas ci-dessous, les liens vers des fichiers correspondant aux fichiers modifiés (à partir de ceux de la 2.0beta2[1]).

Concernant l'écriture du flux en lui-même, il s'agit d'un "banal" template à réaliser - en se basant sur les exports RSS 2.0 et Atom existants afin de récupérer les noms de variables. Les 2 templates rdf.xml et rdf-comments.xml sont à placer dans le répertoire inc/public/default-templates/. Je n'ai pas ajouté de feuille de style pour afficher ces flux en HTML comme c'est le cas pour RSS 2.0 et Atom, notamment puisque Firefox2 s'en charge très bien - et un peu par flemme aussi, il faut bien l'avouer.

La seconde partie consiste à faire accepter à DC un flux nommé 'rdf' et non pas 'rss2' ou 'atom', et se fait en 2 étapes:

  • Dans inc/public/class.dc.template.php, il faut modifier les fonctions BlogFeedURL (l.542) et CategoryFeedURL (l.637) de façon à pouvoir passer l'argument 'rdf' aux fonctions de template qui vont générer les liens de syndication, sans qu'il soit remplacé par 'rss2', la valeur par défaut;
  • Dans inc/public/lib.urlhandlers.php, il faut maintenant gérer les URL correspondantes (l.346 et l.353) et en profiter pour définir un mime-type application/rdf+xml (l.400) pour le flux en question.

Ces étapes sont à répéter pour les flux par tags, mais tout ce fait cette fois-ci dans le fichier plugins/metadata/_public.php.

Troisième partie, intégrer ce flux dans les templates. Dans les fichiers category.html, post.html et tag.html de votre template (ou du template par défaut si vous voulez ensuite que la modification s'applique à tous vos thèmes qui ne surchargent pas ces fichiers), remplacer respectivement dans les appels de fonctions de template CategoryFeedURL, BlogFeedURL et TagFeedURL l'argument type="rss2" par type = "rdf". Ne modifiez pas ceux des entêtes mais ajoutez la ligne suivante dans _head.html:

 <link rel="alternate" type="application/rdf+xml" title="RSS 1.0" href="http://apassant.net/blog/feed/rdf" />

Dernière étape, facultative, modifier les liens de syndication du widget dedié. Pour cela, dans widgets/_defauls_widgets.php, ajoutez RDF aux options l.42, et dans widgets/_widgets_functions.php, modifiez la fonction subscribe pour authoriser 'rdf', avec le bon mime-type. D'ailleurs ici, ca serait pas mal que le flux choisi soit récupéré par défaut dans les différentes fonctions XXFeedURL, pour éviter d'avoir à changer les templates - ou alors j'ai loupé un truc[2] ?

Et voila, vous avez maintenant un DC2 avec un flux RSS1.0 'de base', accessible via l'URI /feed/rdf que vous pourrez enrichir avec FOAF par ex, ou d'autres vocabulaires RDF (en attendant un plugin dedié Web Sémantique ;)

Notes

[1] La 2.0beta3 vient de sortir pendant que je finissais ce billet.

[2] Et tant qu'à faire, un flux RDF en natif dans DC2, ça serait également sympa.