Je suis globalement très satisfait de mon passage à Dotclear2 mais je le trouve quand même un peu limité dans sa façon d'intégrer les flux RSS/Atom. En l'occurrence, j'ai besoin de remplacer certains flux définis par défaut par des flux Feedburner qui m'offrent de multiples fonctionnalités supplémentaires. Les URLs de ces flux sont typiquement présentes à 2 endroits :

  • dans des balises link de l'entête d'une page HTML
  • dans des balises a du corps de la même page

La 1ère solution qui vient à l'esprit est de simplement modifier les templates du thème utilisé par le blog pour y mettre en dur les URLs Feedburner. Ca fonctionne pour les flux globaux mais cela oblige à lier un thème à un blog. Cette liaison forte entre contenu et présentation n'a rien de très élégant. De plus dès qu'il s'agit de redéfinir les flux pour chaque catégorie, on entre dans une impasse.

La 2ème solution (il peut y en avoir d'autres mais je me suis arrêté à celle là qui me convient parfaitement) c'est d'intervenir au niveau du moteur de template.
Le moteur de template de Dotclear définit 2 entrées :

  • {{tpl:BlogFeedURL}} pour insérer l'URL associée à l'ensemble des billets du blog.
  • {{tpl:CategoryFeedURL}} pour insérer l'URL associée à l'ensemble des billets de la catégorie active.

J'ai donc écrit un plugin qui intercepte l'appel à ces éléments pour renvoyer une URL personnalisée : en laissant intact les fichiers de thèmes, mes URLs Feedburner sont insérées à tous les endroits où on trouve {{tpl:BlogFeedURL}} et {{tpl:CategoryFeedURL}}.
Une remarque en passant : le widget 'Liens d'abonnement' écrit en dur les URLs par défaut au lieu d'utiliser le contenu de ces éléments. Il ne m'est donc d'aucune utilité dans sa version actuelle.

En poussant un peu plus loin la gestion des flux, on se rend compte que les flux de commentaires (du blog complet, d'une catégorie, d'un billet) ne sont pas définis par un élément de template mais sont toujours contruits par concaténation au sein du template lui-même. Là encore, il y a intrusion du contenu dans la partie présentation.

Par exemple, l'URL pour s'abonner aux commentaires du blog est "{{tpl:BlogFeedURL}}/comments". En standard, {{tpl:BlogFeedURL}} vaut quelque chose comme "http://monblog.com/feed/rss2" et donc le flux de commentaires "http://monblog.com/feed/rss2/comments" fonctionne correctement.
Mais si {{tpl:BlogFeedURL}} devient "http://feeds.feedburner.com/MonBlog" alors le flux de commentaires devrait obligatoirement être "http://feeds.feedburner.com/MonBlog/comments" ce qui m'obligerait à le définir également dans Feedburner et ce même si je n'ai aucun besoin de gestion avancée pour ce flux là.
D'où l'idée de faire évoluer {{tpl:BlogFeedURL}} et {{tpl:CategoryFeedURL}} en leur rajoutant des attributs :

  • {{tpl:BlogFeedURL comments="1"}} pour remplacer {{tpl:BlogFeedURL}}/comments
  • {{tpl:BlogFeedURL entry="1"}} pour remplacer {{tpl:BlogFeedURL}}/comments/{{tpl:EntryID}}
  • {{tpl:CategoryFeedURL comments="1"}} pour remplacer {{tpl:CategoryFeedURL }}/comments

Ces éléments renvoient les URLs par défaut pour les divers flux et permettent de les redéfinir individuellement.

Si quelqu'un trouve un utilité à ce plugin et veut l'installer, il est dispo ici : plugin-customFeeds-1.0.pkg.gz

Je l'ai réalisé avec Dotclear2 beta7. Je ne sais pas s'il fonctionne avec une version antérieure.

Son utilisation est assez simple. Le plugin rajoute une entrée dans la partie admin pour définir les divers flux (ou laisser une zone vide pour obtenir la valeur par défaut).
La figure suivante montre la configuration de mon blog L'Agilitateur pour lequel j'ai un flux de l'ensemble des billets et un flux pour chacune des catégories :