Tag Archives: dotclear

Plugins Dotclear2 et patterns d’URL

Après avoir ajouté le support des flux RSS 1.0 sous Dotclear 2 en modifiant le source (oui, je sais c’est moche), je m’attaque à la même chose, plus propre, sous forme de plug-in, qui sera probablement la première brique d’un plugin Web Sémantique pour Dotclear2 (waouh !).

L’API de DC2 pour l’écriture de plugins permet entre autre de définir des patterns d’URLs pour lesquels des actions vont être déclenchées. Problème: définir un pattern d’URL déjà pris en charge par un autre composant de DC2, via une autre expression rationnelle. Dans mon cas ^feed/(.+)/rdf$ déjà reconnue par ^feed/(.+)$ (dans la gestion des flux). La solution réside dans le nom que vous donnez à la forme de base de l’URL, à savoir le 2nd paramètre de la fonction register.

En effet, DC2 ordonne la liste des patterns d’URL par ordre alphabétique inverse de ces identifiants.

Dans le cas présent, la forme pour le matching de flux étant simplement feed, le fait d’identifier la nouvelle URL par feed/rdf fera que l’expression régulière associée sera matchée avant l’expression classique de traitement des flux, et qu’ainsi le plug-in “surchargera” le coeur de DC2 à ce niveau, le nouveau pattern-matching étant appelé avant celui pour les flux classique:

Edit 15:30: … j’avais oublié le pattern pour les tags, nommé feed/tag. Pour régler l’ordre, il faut donc dans ce cas – par exemple – nommer l’URL feed_rdf pour régler le problème, afin d’appeler le pattern avant celui nommé feed/tag:

 $core->url->register('rdf_feed','feed_rdf','^feed((.+)rdf(.*))$',array('dcSemwebURL','rdf_feed')); 
About these ads

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.

Migration réussie

Ce blog tourne maintenant sous Dotclear2.

Migration sans soucis (a part un cafouillage en migrant du répertoire temporaire vers la prod), tags conservés, et une rewrite rule temporaire pour conserver les anciennes URLs en attendant de voir (ou pas) comment indiquer à DC de conserver l’ancien schéma d’adresses pour les nouveaux billets.

Le flux RSS1.0 est également disponible à la même adresse qu’auparavant. DC2 ne fournit qu’un flux Atom ou RSS2, la méthode de template est très intuitive et remettre un flux RSS1.0 – donc RDF – a été très rapide. Je fais la partie pour les commentaires, et je mets ça en ligne.

Edit 01h10: Je viens de voir que mes billets ont été réagrégés sur planete web-sémantique (puisque nouvelle URL, chose à laquelle je n’avais pas pensé), desolé pour ceux qui suivent le fil de la planète et qui vont ravoir les billets en double !

SIOC Exporter pour Dotclear, v.1.4.3

Quelques corrections dans l’API d’export SIOC afin de régler des problèmes de RDF/XML mal formé ainsi qu’un problème d’identification du blog dans les différents fichiers (cf ce thread), et donc une nouvelle version du plugin:

Le format RDF/XML produit est ainsi accessible en utilisant la Semantic Web Client Library, sur laquelle je reviendrai un peu plus tard dans la soirée.

SIOC Exporter pour Dotclear, v.1.4.1

Quelques correctifs sur l’installeur suite à la mise en place du plugin chez biologeek.com, et une nouvelle version disponible:

Le plugin:

C’est aussi l’occasion de signaler que SIOC dispose d’un nouveau site sur http://sioc-project.org.

SIOC Exporter pour Dotclear, v1.4

Les évolutions précédentes sont passées un peu inaperçues – aucun billet à ce sujet – mais une nouvelle version du plugin SIOC pour DotClear est aujourd’hui disponible.

Ce plugin permet donc d’exporter le contenu de votre blog (billets, commentaires, utilisateurs) en RDF en utilisant l’ontologie SIOCSemantically-Interlinked Online Communities – que David de Biologeek mentionnait d’ailleurs récemment dans un de ces posts. Le weblog complet est ainsi représenté avec un formalisme défini et accessible, permettant toutes sortes de requêtes et d’interaction avec les autres blogs utilisant ce format, quelqu’en soit l’outil d’origine, comme on peut le voir ici. A la manière de RSS donc, mais avec un export total du système donc non seulement des billets mais aussi des groupes, des rôles …

Concernant l’exporter en lui-même, il est maintenant packagé comme un plugin DotClear, et vous pouvez donc l’installer (en théorie) depuis le back-office de votre blog. Il exporte les billets (logique ;) ), les commentaires et les utilisateurs. Pour chaque billets sa catégorie et ses tags (avec le plugin qui va bien) sont également exportés via la propriété sioc:topic, et les liens vers d’autres URL avec sioc:links_to.

Il est maintenant codé à partir de l’API PHP pour SIOC, qui lie dorénavant les billets aussi bien au compte utilisateur qu’à l’utilisateur lui-même, utilisant donc à la fois FOAF[1] que SIOC, permettant ainsi de faire le lien entre utilisateurs enregistrés ou non de différents blogs et d’entrevoir les premieres apparitions de réseaux sociaux avec SIOC.

Ah oui, dernier détail, le changelog et autres infos sur le plugin sont disponibles dans sa description DOAP[2]. J’y reviendrai partiellement en fin de soirée dans un autre billet.

Enfin si vous l’utilisez, n’hésitez pas à vous lister sur cette page, et si SIOC vous interesse à rejoindre la mailing-liste ou #sioc sur freenode si vous avez des questions précises sur le sujet.

Le plugin:

Edit 14/09 @ 15:40: Correctifs et nouvelle version ici.

Notes

[1] D’ailleurs, il se pourrait bien qu’un plugin FOAF plus poussé pour DC voit le jour avec Harisson

[2] Description Of A Project, ontologie pour décrire … des projets informatiques.

Export SIOC pour Dotclear v0.2

Nouvelle version du plug-in d’export SIOC pour Dotclear:

  • Affichage des posts dans une page dediée à sioc:Forum, et ajout de lien vers les posts précédents (de manière à ce qu’un browser / scrapper puisse tout visualiser / agréger);
  • Export de la catégorie du billet, et de ses tags (si le plug-in twTags est installé) via sioc:topic;
  • Export des liens (pas de distinction interne / externe) du post via sioc:related.

Cette version se base sur les specs en cours, et non pas sur les changements proposés recemment.

Si vous utilisez le plug-in sur votre blog, pensez à l’indiquer sur cette page wiki.

Edit 12h10: Avec le lien, ca sera plus pratique: http://apassant.net/share/semweb/dotclear-sioc-0.2.phps

Edit 25/05 07:10 Bugfixes sur l’export du forum et le content-type avec la v0.2.1.

Suppression massive de commentaires

J’ai beau utiliser Spamplemousse, j’ai encore plein de trucs qui passe au travers. Généralement, un bon coup de 20/30 trackbacks de suite avec des mots-spam non encore référencés… sympa !

Je ne suis pas (encore ?) passé à la nouvelle release, mais en attendant, j’ai codé rapidement un plugin pour supprimer massivement les commentaires sans devoir se connecter manuellement à la base: on lui donne l’ID du premier et celui du dernier commentaire à supprimer et il s’occupe du reste.

Edit 21/04/06 11:02: En fait, il ya le plugin MComments qui fait la même chose en plus convivial.