Cette page présente comment créer un modèle, comment documenter et quelles sont les possibilités techniques.
Avant de créer un nouveau modèle, il faut s’assurer qu’un modèle équivalent n’existe pas sous un titre différent. La méthode de création d’un modèle est similaire à celle de la création d’une page.
Le nom de la nouvelle page doit commencer par « Modèle: » (Modèle:<Nom du modèle>) et peut contenir des espaces. Le plus simple est d’insérer un appel au modèle dans une page, puis de cliquer sur le lien qui apparaîtra en rouge ; l’appel s’effectue en tapant le code {{''Nom du modèle''}}
.
Un modèle peut inclure un ou plusieurs autres modèles. Les redirections entre modèles fonctionnent.
Nécessité de la documentation[]
Un modèle est un outil partagé par tous ceux qui souhaitent l’utiliser. Il est donc indispensable de fournir une documentation expliquant : à quel besoin le modèle répond, dans quels cas il est adapté / inadapté, ce qu’il fait et comment il doit être utilisé. Se reporter au chapitre Comment documenter un modèle ? qui explique comment procéder.
Langage particulier[]
Comme vous pourrez le remarquer, certains modèles complexes font appel à un langage informatique particulier. Pour plus de détails sur les caractères spéciaux en langage html, les ParserFunctions ou les mots magiques voir : Syntaxe.
Modèles à paramètres[]
Un modèle peut dépendre de paramètres (ou arguments) extérieurs.Les paramètres sont spécifiés à l'inclusion, et suivent le nom du modèle ; ils sont isolés par des séparateurs « | » (la liste des paramètres se terminant donc par « }} ») : {{Nom du modèle|<paramètre1>|<paramètre2>…}}
.
Désignation des paramètres[]
Sur la page du Modèle:, ils sont désignés entre triple accolade : {{{paramètre 1}}}
. Prenons par exemple la page fictive Modèle:Modèle de chose qui contiendrait :
La {{{objet}}} est un {{{type}}}.
Si vous effectuez l’appel :
{{modèle de chose | objet = pomme | type = fruit }}
Les paramètres seront « remplacés » par leur valeur (la valeur pomme sera attribuée au paramètre objet) et le modèle affichera :
Modèle:Modèle de chose
Il ne doit pas y avoir de retour à la ligne dans une valeur, mais
est permis. Une valeur peut-être un lien externe ou interne (la syntaxe des liens wiki est possible : [[page visée|texte qui apparaîtra]]
).
Afin d’améliorer la lisibilité, des retours à la ligne peuvent apparaître dans l'appel au modèle (comme ci-avant).
Nom de paramètre implicite : les paramètres positionnels[]
Par défaut, les paramètres sont désignés par leur nombre ordinal (ou rang), ils sont numérotés à partir de 1 dans leur ordre d’apparition dans l'appel. Le paramètre 2, exprimé par le code {{{2}}}
, fait référence à la valeur du deuxième paramètre.
Pour reprendre l'exemple du Modèle:Modèle de chose, présenté précédemment, et pour obtenir le même résultat, il faut procéder de la manière suivante :
Code du modèle | Appel du modèle | Rendu lors de l'appel du modèle |
---|---|---|
La {{{1}}} est un {{{2}}}. |
Modèle:Modèle de chose
|
La pomme est un fruit. |
Les paramètres {{{1}}} est remplacé par la valeur pomme, et le paramètre {{{2}}} est remplacé par la valeur fruit, |
Nom de paramètre explicite : les paramètres nommés[]
L’usage de modèles peut être facilité par des paramètres nommés ; cette pratique est aussi recommandée pour faciliter le contrôle par des robots.
Pour nommer un paramètre, il suffit d’utiliser un nom représentatif de son rôle (au lieu des noms par défaut 1, 2, 3 …) en précisant un couple paramètre=valeur. Par exemple, le code {{Avancement|42}}
n'est pas très explicite ; {{Avancement|pourcentage=42}}
serait plus clair.
Dans le code source du modèle « Avancement », il suffit d'utiliser {{{pourcentage}}}
en lieu et place de {{{1}}}
.
On peut noter que l’on peut appeler les paramètres nommés dans n’importe quel ordre.
Note : les espaces, retours chariots, sauts de ligne, tabulations, … au début et à la fin des paramètres nommés sont automatiquement enlevés.
Le signe « = » dans la valeur d'un paramètre[]
On a vu que le signe « = » permet d'associer un paramètre et une valeur. Mais il est possible que l'on veuille utiliser « = » dans une valeur (par exemple si on veut utiliser une URL).
- Pour les paramètres explicites,
{{MonModèle|paramètre=aaa=bbb}}
associe bien la valeur « aaa=bbb ». - Pour les paramètres implicites, il faut les rendre explicites. Par exemple, dans
{{MonModèle|1=aaa=bbb}}
, le paramètre implicite « 1 » est explicité.
Le signe « | » dans la valeur d'un paramètre[]
Le | permet de séparer les paramètres. Pour que la valeur d'un paramètre puisse contenir « | », il faut passer par le modèle {{!}}
pour le remplacer, afin d'éviter la confusion.
Par exemple, {{Mon modèle|paramètre1=truc{{!}}machin…}}
.
Valeur par défaut d'un paramètre[]
Si un paramètre n'a pas de valeur spécifiée, la valeur restituée est « lui-même » (le code {{{1}}}
sera « remplacé » par le texte {{{1}}}
).
Le concepteur peut définir une valeur par défaut qui sera utilisée dans ce cas, en suivant la syntaxe : 123
dans le modèle. (Que l'on peut lire : « Si le paramètre "param" n'a pas de valeur, utilise "123" à la place. ») Un tel paramètre est alors dit facultatif.
Il est possible de ne rien définir pour la valeur par défaut en n’écrivant rien après la barre verticale : .
La valeur d'un paramètre peut aussi être vide (nulle). Il suffit de ne rien écrire après la barre verticale de position (paramètre implicite), ou bien rien après l'« = » (paramètre nommé).
Exemple :
{{Mon modèle|}}
ou {{Mon modèle|monparamètre=}}
Valeurs par défaut imbriquées[]
En imbriquant les paramètres ... , un modèle peut établir une séquence de sélection ordonnée des valeurs.
Par exemple, le modèle fictif Monmenu comporte l'imbrication ni fromage ni dessert
:
- L'appel
{{monmenu|fromage=camembert}}
retournera le texte « camembert », de même que{{monmenu|fromage=camembert|dessert=pomme}}
. - L'appel
{{monmenu|dessert=pomme}}
retournera le texte « pomme ». - L'appel
{{monmenu}}
retournera le texte « ni fromage ni dessert ».
Les balises d’inclusion sélective[]
Ce sont des balises XML permettant de sélectionner une partie du code source d’une page.
Balisage <noinclude>...</noinclude>
[]
- Note : Cette balise est recommandée dans les modèles.
Il est utile de pouvoir placer certains éléments du code source du modèle, comme les liens interlangues, la catégorisation ou la documentation du modèle, sans que ces éléments n’apparaissent sur la page où le modèle est inséré. Pour cela, on place les éléments à exclure entre les balises <noinclude> et </noinclude>
.
Par exemple, un Modèle:Exemple contenant :
(contenu {{{1|}}} à compléter…)
et qui affiche ceci dans l’article qui l’inclut :
(contenu à compléter…)
peut être complété d’une catégorie et d’un lien interwiki destinés à sa propre classification, mais non destinés aux articles qui incluent ce modèle :
''(contenu {{{1|}}} à compléter…)''<noinclude> [[Catégorie:Espace Modèle]] [[Catégorie:Exemple]] [[en:Template:Sample]] </noinclude>
Notez ci-avant l’absence de tout saut de ligne entre le contenu et le début de la section <noinclude>
. Il est recommandé de ne faire précéder ou suivre la séquence <noinclude>…</noinclude>
d’AUCUN saut de ligne ou espace supplémentaire car ils seraient conservés à l’inclusion du modèle et pourraient nuire à la présentation de son contenu. Par contre, on peut mettre des blancs et sauts de lignes à volonté à l’intérieur pour améliorer la lisibilité.
Ainsi :
- Sur la page du modèle, les catégories et liens interwikis apparaîtront, exactement comme si les deux balises
<noinclude>
et</noinclude>
n’agissaient pas. - Lorsque le modèle est inclus dans un article par le code
{{Exemple}}
, seule la ligne «''(contenu {{{1|}}} à compléter…)''
» sera utilisée (ce qui est en dehors des<noinclude>…</noinclude>
) sans les liens interwikis, ni les catégories.
Balisage <includeonly>...</includeonly>
[]
- Note : Cette balise n’est pas recommandée dans les modèles.
Les éléments qu’on veut voir apparaître en insertion, mais qu’on veut voir disparaître lors de la visualisation du modèle seul, sont placés entre les balises <includeonly> et </includeonly>
.
Il est recommandé de laisser au moins un saut de ligne ou espace entre le dernier signe « = » d’une ligne de titre et une balise <includeonly>
.
Par exemple, il peut être parfois nécessaire de montrer plusieurs exemples d’un modèle lui-même, en fournissant des paramètres différents. Dans ce cas, le code du modèle sera préférablement placé en tête mais caché dans la page de description :
<includeonly>''(contenu {{{1|}}} à compléter…)''</includeonly><noinclude> {{Documentation modèle}} ;Utilisation :Ce modèle n’est qu’un exemple à compléter. Aucun paramètre obligatoire n’est ici nécessaire dans un article. ;Syntaxe :<code>{{Exemple|1}}</code> :* <code>1</code> : permet d’ajouter du texte au milieu du contenu affiché par ce modèle (facultatif, vierge par défaut). ;Exemple :« <code>{{Exemple|de cette section}}</code> » donne « {{Exemple|de cette section}} » ;Voir aussi : :* [[Aide:Modèle]] [[Catégorie:Exemple]] [[en:Template:Sample]] </noinclude>
Notez ci-avant la récursion du modèle : il est possible, lors de l’édition d’un modèle déjà existant, qu’il faille le publier deux fois pour que l’auto-inclusion dans sa page de description soit prise en compte.
Notez également comment sont disposées les balises </includeonly>, sans aucun saut de ligne intermédiaire qui tomberait en surplus et qui risquerait d’interrompre une liste à numérotation automatique ou provoquerait une rupture de paragraphe indésirable ou des sauts blancs verticaux.
Le balisage doit donc rester exceptionnel et être utilisé avec précaution. Le placement d’un titre dans une section