La directive template
est fournie par le module d'extension template.
Cette directive permet d'utiliser des pages de wiki comme modèles. Ces modèles peuvent être remplis et insérés dans d'autres pages du wiki. La page templates liste les modèles utilisables avec cette directive.
Cette directive possède un paramètre id
qui identifie le modèle à
utiliser. Les autres paramètres servent à remplir le modèle.
Exemple :
[[!template id=note text="""Here is the text to insert into my note."""]]
Cette expression remplit le modèle note
, remplaçant le champ text
par la
valeur spécifiée, et insérant le résultat dans la page.
Utilisation d'un modèle
Une valeur peut contenir tout marquage autorisé dans une page de wiki externe au modèle. On peut même inclure des guillemets dans la valeur, il suffit de les tripler. Avec des valeurs sur plusieurs lignes entre guillemets, on peut ainsi insérer de longs passages de texte dans un modèle.
[[!template id=foo name="Sally" color="green" age=8 notes="""
* [[Charley]]'s sister.
* "I want to be an astronaut when I grow up."
* Really 8 and a half.
"""]]
Création d'un modèle
Le modèle est une simple page de wiki, située dans le sous-répertoire
templates/
du répertoire source du wiki.
Alternatively, templates can be stored in a directory outside the wiki, as
files with the extension ".tmpl". By default, these are searched for in
/usr/share/ikiwiki/templates
, the templatedir
setting can be used to
make another directory be searched first. When referring to templates
outside the wiki source directory, the "id" parameter is not interpreted as
a pagespec, and you must include the full filename of the template page,
including the ".tmpl" extension. E.g.:
[[!template id=blogpost.tmpl]]
Le modèle utilise la syntaxe du module Perl HTML::Template qui permet de faire des choses assez compliquées. Consultez la documentation mais vous n'avez besoin de connaître que peu de choses :
- Chaque paramètre passé à la directive template créera une variable pour le modèle. Certaines variables sont prédéfinies comme PAGE et BASENAME.
- Pour insérer la valeur d'une variable, utilisez
<TMPL_VAR variable>
. Le marquage wiki dans la valeur sera d'abord converti en HTML. - Pour insérer la valeur brute d'une variable, sans conversion en HTML du
marquage wiki, utilisez
<TMPL_VAR raw_variable>
. - Pour rendre un texte dépendant d'une variable, utilisez
<TMPL_IF variable>text</TMPL_IF>
. - Pour utiliser un texte quand une variable est définie et un autre texte
quand elle n'est pas définie, utilisez
<TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>
Voici un exemple :
<span class="infobox">
Name: [[<TMPL_VAR raw_name>]]<br />
Age: <TMPL_VAR age><br />
<TMPL_IF color>
Favorite color: <TMPL_VAR color><br />"
<TMPL_ELSE>
No favorite color.<br />
</TMPL_IF>
<TMPL_IF notes>
<hr />
<TMPL_VAR notes>
</TMPL_IF>
</span>
Le modèle rempli sera formaté comme le reste de la page dans laquelle il se trouve. Vous pouvez donc inclure des WikiLinks ou d'autres marquages wiki dans le modèle. Cependant ces WikiLinks n'apparaîtront pas comme des rétroliens vers la page qui utilise ce modèle.
Remarquez l'utilisation de "raw_name" dans WikiLink de l'exemple ci-dessus. Ainsi, si le nom peut être confondu avec un marquage wiki, il n'est pas converti en html avant d'être créé en tant que WikiLink.