Steve Frécinaux

Dotclear : métadonnées de billets (plug-in)

Le nombre limité des champs fournis par Dotclear pour chaque billet est parfois un peu frustrant. Parfois, on se retrouve contraint d’ajouter « en dur », dans le corps d’un billet, des informations qui ne devraient logiquement pas y être, comme une date de dernière mise à jour ou l’URL d’une variantes de l’article. D’autres fois on aimerait, pour chaque billet, ajouter une information que l’on aimerait exploiter spécifiquement, par exemple les fameux tags qui font fureur ces derniers temps. Bref, en un mot comme en cent, associer des métadonnées supplémentaires à ses billets.

C’est dorénavant possible grâce à ce plugin, dénommé sobrement « Métadonnées de billets 0.1 ». Ce plugin vous permet d’associer des paires clefs-valeurs à chacun de vos billets, en d’autre mots, des champs supplémentaires.

Quelques petits exemples d’utilisations possibles :

  • définir, comme ici, des tags pour chaques billets ;
  • donner la localisation du billet pour un blog de voyage ;
  • indiquer l’humeur pendant l’écriture du billet ;
  • différencier la date de publication et la date de rédaction ;
  • indiquer l’adresse d’une traduction du billet ;
  • indiquer les sources d’information relatives au billet ;
  • afficher une image spécifique à chaque billet ;
  • afficher la météo du moment de la publication ;
  • indiquer l’état d’avancement d’un projet dans le cadre d’un blog de projet ;
  • etc.

Bref, ça peut servir à un peu n’importe quoi ;-) (merci à Maurice pour les exemples)

Installation

Mise à jour : Un petit bug dans la pagination ayant été corrigé, c’est la version 0.1.1 qui est dorénavant disponible ci-dessous.

La table dc_post_meta est créée automatiquement lors du premier accès à l’interface d’administration. Il n’y a pas encore d’aide intégrée au plug-in.

Utilisation

Côté administration

Côté administration, rien de plus simple : cliquez sur l’icône en vis-à-vis du billet auquel vous voulez associer une information dans la liste qui se présente lorsque vous accédez à l’interface d’administration du plug-in. Entrez alors un nom de champs, une valeur, et cliquez sur ajouter. Voilà, vous avez ajouté votre premier champ d’information personnalisé :-)

Capture d'écran. Interface d’administration

Comme vous pouvez le remarquer sur la capture d’écran précédente, il vous est possible d’associer plusieurs valeurs à un même champs, lesquelles seront par la suite modifiables séparément. Le but est de laisser la plus grande liberté possible dans la définition des données additionnelles. Je pense que l’interface est suffisament claire que pour se passer d’explications supplémentaires. Dites-le-moi si ce n’est pas le cas.

Dans vos gabarits (templates)

Le plug-in fournit une méthode principale, destinée à être utilisée dans les gabarits : la méthode twPostMeta::field($key, $mode, $rec) (comme pour la classe recordset, un alias twPostMeta::f() est disponible, avec les mêmes arguments). Ses arguments sont :

$key
Le nom du champs dont on veut récupérer la valeur
$mode (optionnel)
Cet argument définit la façon dont le champs doit être traîté. Par défaut (lorsqu’il n’est pas défini), ou lorsqu’il prend la valeur TWPM_F_ALL, la valeur renvoyée par la fonction est un tableau contenant zéro, un ou plusieurs éléments, les valeurs définies pour le champs. Deux autres valeurs sont possibles : TWPM_F_FIRST renverra la première valeur définie (false si le champs n’existe pas), TWPM_F_LAST la dernière.
$rec (optionnel)
Cet argument définit avec quel jeu d’enregistrements il faut se synchroniser. Par défaut, la synchronisation a lieu avec $news, ce qui veut dire que, employé dans la boucle des billets, la valeur renvoyée par la fonction sera celle associée au billet courant. Si l’argument est défini, ça fonctionnera de la même façon, mais en utilisant cet argument plutôt que $news.

Cette fonction suffit à l’emploi du plug-in. Cependant, dans un souci d’efficacité, une seconde fonction existe, pour réduire le nombre de requêtes SQL : twPostMeta::cache($rec), où $rec est un jeu d’enregistrements (par défaut $news). Cette fonction met en cache les métadonnées associées à tous les billets contenus dans $rec, ce qui permet de réduire le nombre de requêtes SQL de une par billet à une par jeu d’enregistrements, rendant le tout plus efficace. Il faut appeler cette fonction au début de votre gabarit, avant le premier emploi de twPostMeta::field().

Mise à jour : Comment utiliser le plug-in Métadonnées de billets ? : deux exemples d’utilisation dans les gabarits, l’affichage d’un champs unique et une implémentation simple des tags.

Pour les développeurs

Une certaine quantité d’autres fonctions sont fournies par ce plug-in. Celles- ci n’ont pas d’intérêt pour l’emploi courant, mais permettent un contrôle complet des champs, comme l’ajout, la suppression ou la modification des valeurs. Elles sont définies et commentées dans le fichier functions.php du plug-in, je vous encourage à y jeter un oeil ;-). Pour ma part je détaillerai prochainement deux exemples d’utilisations : une gestion rudimentaire des tags (comme sur ce site), et un module de gestion de « planètes » (associé à un fil RSS, tous deux compris dans l’archive).