J’ai déjà parlé ici de mes tests de quelques applications de wiki. A la suite de ces tests, nous avons retenu pmWiki pour mettre en place le site du projet Mobikid . Afin de faire apparaître un nuage de tags correspondant aux tags du compte del.icio.us du projet , comme ceci :
nous avons été amenés à nous poser la question d’insérer du HTML dans le wiki. Naturellement, pour de nombreuses raisons, en particulier liées à la sécurité, il n’est pas possible d’écrire directement du HTML dans une page de wiki, il fallait donc trouver une autre solution.
Cette autre solution était de créer une balise personnalisée. La démarche est simple : je définis dans le fichier config.php
situé dans le répertoire local
de PmWiki la balise (:delicious:) et par la suite, toute occurrence de cette chaîne dans le wiki est remplacée par le code HTML.
La définition de nouvelles balises est expliquée ici en français. On utilise pour cela la fonction Markup()
qui fonctionne selon le prototype suivant :
Markup($name,$when,$pattern,$replace)
Le premier paramètre est un nom unique donné à la règle, le deuxième définit quand la règle doit être appliquée (par rapport aux autres règles).
Le troisième paramètre définit une expression régulière, qui est remplacée selon le motif du dernier paramètre. Dans le cas d’une balise simple comme la nôtre où le texte est constant, il suffit d’une expression comme /\(:delicious:\)/e
et d’une chaîne de remplacement également fixe. Au final, la ligne suivante ajoutée au fichier config.php
fonctionne très bien :
Markup('delicious',
'directives',
'/\(:delicious:\)/e',
"Keep('<script type="text/javascript"
src="http://del.icio.us/feeds/js/tags/mobikid?
size=12-38;color=87ceeb-0000ff">
</script>')");