Mes flux Feedburner dans Dotclear 2
Par Oaz, le 5 août 2007, 14:16 - Amanèls
- Lien permanent
-
Je viens de transférer mes blogs de Nucleus vers Dotclear2. Cela m'a donné l'occasion de développer un plugin Dotclear pour paramétrer facilement mes flux Feedburner.
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 :



Commentaires
Le plugin "Widget FeedBurner" http://boldr.fr/weblog/post/2006/12...
Ne faisait-il pas déjà ça? (sauf pour fr-en)
En fait le plugin "Widget FeedBurner", comme son nom l'indique, ne fournit qu'un widget et non pas une redéfinition des templates fournissant les flux.
Par exemple, avec seulement le widget, les <head><link type="application/rss+xml"> restent toujours à leur valeur par défaut.
Pour donner un exemple d'utilisation, si je saisis dans mon Google Reader un abonnement à http://blogrss.lefebvrepe.com/lefeb... que tu as mis en lien sur ton blog je serai effectivement abonné au flux feedburner.
Mais si, comme je le fais souvent, je me contente de saisir http://blog.lefebvrepe.com/, le reader va charger la page, trouver le <head><link> adéquat et m'abonner à http://blog.lefebvrepe.com/feed/rss... sans passer par feedburner !
C'est un des effet de bord d'un mélange contenu/présentation. Le web utilise de plus en plus des informations sémantiques se trouvant sur les pages et auxquelles échappe l'oeil humain...
C'est la raison pour laquelle je pense qu'il est préférable d'éviter l'utilisation d'un widget dédié dans ce cas là.
De manière générale, si on se retrouve à écrire un widget pour présenter quelque chose qui, fonctionnellement, existe déjà mais avec un contenu différent, ça sent mauvais : cela signifie que ce même contenu pourrait être obtenu via une autre présentation et qu'il vaut mieux alors agir directement sur l'accès à ce contenu.
Merci de l'explication ;)
C'est vrai que je n'avais pas pensé au link :)
Bien vu ;) je crois que je vais changé de plugin :D
salut,
merci pour ce plugin, mais j'ai qq petit soucis avec ;). je veux juste rediriger le flux principal, or:
- dans le widget, le flux principal n'est pas redirigé
- le flux "Fil des commentaires de ce billet" est redirigé vers feedburner/comments/n° qui n'existe pas ...
- pour la balise link, parfois ca marche (acceuil, post), parfois non (catégories, tags)
- Pour le widget, c'est "normal" (si l'on peut dire) car il a été écrit en encodant directment l'adresse du flux dotclear et non pas en tenant compte de ce que donne {{tpl:BlogFeedURL}}
- pour tous les endroits des thèmes où il y a un souci, il faut modifier le contenu du fichier template avec la balise qui va bien.
Par exemple, pour le fil des commentaires du billet, il faut remplacer {{tpl:BlogFeedURL}}/comments/{{tpl:EntryID}} par {{tpl:BlogFeedURL entry="1"}} dans post.html
Merci pour cette extension. Petit souci : à la place du bouton de validation "enregistrer", j'ai "Fatal error: Call to undefined method dcCore::formNonce() in /home.10.13/brunchma/www/marketing-internet/plugins/customFeeds/index.php on line 42
"
L'erreur sur dcCore::formNonce est probablement due à une version de dotclear antérieure à 2beta7.
2 solutions : soit upgrader dotclear, soit aller dans le fichier index.php de l'extension et enlever à la ligne 42 l'appel $core->formNonce() qui n'existe (et est obligatoire) que depuis la beta7.
J'ai installé ce plugin et défini mes flux http://feeds.feedburner.com/Fantast... et http://feeds.feedburner.com/Fantast... , mais le code source de ma page reste identique : il indique toujours les anciennes url... est-ce normal ?
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://yann.universfantastiques.org..." />
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="http://yann.universfantastiques.org..." />
J'ai donc fait un .htaccess qui les redirige, mais cela permet-il toujours l'autodétection par les lecteurs de flux ?
Ce n'est bien sûr pas "normal".
Quant à la raison, je ne sais pas trop.
La case 'Activer les flux personnalisés' est bien cochée ?
Peut-être essayer de vider le cache serveur de dotclear ?