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 fonctionsBlogFeedURL(l.542) etCategoryFeedURL(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-typeapplication/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.

hello Alex,
le format de syndication Atom 1.0 est déjà un format xml/rdf (extensible) et, amha, sera l’avenir pour ce type de flux. RSS 1.x n’évolue plus beaucoup et les "gros acteurs web" du marché comme apple itunes ou yahoo mrss ont déjà spécifié leur format proprio basé sur le format "populaire" xml RSS 2.0.
Bonjour, Je ne pense pas qu’on intègre dans une version future par défaut un fil rss 1.0. En effet rss 1.0 est un format sympa et extensible, mais il n’évolue plus et n’est même pas cohérent avec la dernière version de rdf, donc bof. La validation syntaxique n’est pas des plus agréables, l’implémentation de rss 1.0 dans les agrégateurs est de qualité assez variable (le fait d’avoir un document rdf bien formé ne suffit pas, la plupart des agrégateurs utilisent le flux comme un fichier xml) De notre coté, on est plutôt tournés vers atom, et si ça ne tenait qu’à moi, on fournirait uniquement de l’atom… (ce qui n’est pas incompatible avec la production de documents rdf, faisant référence à un rdfs atom par ex., ou encore la mise en place d’un endpoint sparql)
Harisson> T’es sur ? Il me semble plutot qu’un flux Atom est basé sur XML, mais qu’il existe des mappings et outils pour le tranformer en RDF avec AtomOWL par exemple.
biou> Ok, pas de problème pour DC2, ça pourra de toute façon faire partie du plugin WS qu’on envisage avec Harisson justement. Par contre, t’entends quoi par pas cohérent avec la dernière version de RDF ? Pour l’évolution, à partir du moment ou on peut rajouter ses vocabulaires, ça ne pose pas de soucis selon moi (même si c’est sur que c’est pas forcément le plus évident pour celui qui souhaite mettre simplement en place un flux sur son site)
oui tu as raison c’est uniquement XML ( AtomAsRDF ), par contre il est extensible et accepte du FOAF par exemple ( Article IBM sur Atom 1.0+FOAF ).
Alex> pour ce qui est de mon avis sur rss 1.0, il me semble que la spec est plus ancienne que la dernière version de rdf (2004) et donc ne prend pas en compte certains avantages, notamment le fait de pouvoir se passer de "l’échappement" du html, ce qui rend le format pas très pratique à utiliser. J’ai retrouvé un vieux post chez Danny Ayers qui dit à peu près la même chose : http://dannyayers.com/2006/01/17/wo…
A noter la piste de la spec rss 1.1 qui utilise la dernière version de la spec rdf, mais je ne sais pas ce que ça vaut, ni si ça passe bien dans les agrégateurs de base.
ah j’oubliais, si vous faites un plugin WS pour dotclear 2, je suis grandement intéressé, dans la mesure où je travaille sur des projets en rapport avec le web sémantique au boulot, ça me permettrait de joindre l’utile à l’agréable
Je veux bien beta-tester en tout cas.
Merci pour les infos, je n’avais jamais remarqué pour RSS1.0.
Pour le 1.1 je l’ai rarement vu (jamais en fait je crois) en prod, ni dans des API comme MagpieRSS ou FeedParser.
Ah, et pour le plugin, ça peut le faire je pense, on se disait justement qu’on allait avoir du mal à rentrer dans l’architecture de DC2
ok n’hésitez pas à me contacter si vous avez besoin d’infos sur le développement de plugins pour dc2.
bon courage!