La directive template
est fournie par le module d'extension [[!iki
plugins/template desc=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, en
les triplant. 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.
Il est aussi possible de conserver les modèles dans un répertoire extérieur
au wiki, comme des fichiers avec l'extension ".tmpl". Par défaut ces
fichiers sont recherchés dans /usr/share/ikiwiki/templates
. Le paramètre
templatedir
peut être utilisé pour commencer la recherche dans un autre
répertoire.
Le modèle utilise la syntaxe du module Perl [[!cpan 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 [[ikiwiki/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
[[ikiwiki/WikiLink]].
[[!meta robots="noindex, follow"]]