Un modèle peut dépendre de paramètres (ou arguments) extérieurs. Par exemple, le modèle {{Coord}} qui permet de placer des coordonnées géographiques, nécessite au moins deux paramètres : la latitude et la longitude.
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 triples accolades : {{{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 :
La pomme est un fruit.
Il ne doit pas y avoir de retour à la ligne dans une valeur, mais <br> 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 :
Davantage d’informations Code du modèle, Appel du modèle ...
| Code du modèle |
Appel du modèle |
Rendu lors de l'appel du modèle |
La {{{1}}} est un {{{2}}}. |
{{Modèle de chose|''pomme''|''fruit''}} |
La pomme est un fruit. |
| Le paramètre {{{1}}} est remplacé par la valeur pomme, et le paramètre {{{2}}} est remplacé par la valeur fruit, |
Fermer
Autre exemple, le modèle {{Annonce}} utilise un paramètre 1 et un paramètre 6 de cette manière : [[Fichier:{{{1}}}|20px|{{{6}}}]] qui s’interprète comme : « afficher l’image qui a pour nom la valeur du 1er paramètre, avec une taille de 20 pixels, et avec comme nom d'affichage la valeur du 6e paramètre ».
Une aide est certainement nécessaire pour expliquer la signification de ces paramètres.
Note : Contrairement à ce qui se passe pour les paramètres nommés, les espaces, retours chariots, sauts de ligne, tabulations… au début et à la fin des paramètres positionnels ne sont pas automatiquement enlevés. Pour les supprimer, il faut utiliser le modèle {{trim}}.
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 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 « le code lui-même » (le code {{{1}}} sera « remplacé » par le texte affiché non interprétable {{{1}}}). (Rq : pour les appels imbriqués voir infra).
Le concepteur peut définir une valeur par défaut qui sera utilisée dans ce cas, en suivant la syntaxe : {{{param|123}}} dans le modèle (que l'on peut lire : « Si le paramètre param est absent, le code est fait pour utiliser 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 : {{{param|}}}.
La valeur d'un paramètre facultatif ne renvoyant rien peut aussi être dite vide (nulle ou de taille 0); Si on a rien écrit dans l'appel du modèle après la barre verticale de position (paramètre implicite), ou bien rien après le signe « = » (paramètre nommé). Exemple : {{Mon modèle|}} ou {{Mon modèle|monparamètre=}}.
Pour définir la valeur par défaut d'un paramètre absent ou vide il faut utiliser la syntaxe suivante dans le modèle avec une parser function (voir infra).
{{#if: {{{param|}}} | {{{param}}} | <valeur-par-défaut>}} (que l'on peut lire : « Si[1] le paramètre param est absent ou vide, utiliser <valeur-par-défaut> à la place. »).
(fonction #if: ... Notez que {{#if: {{{param|}}} | {{{param|}}} | <valeur-par-défaut>}} aura le même effet).
Valeurs par défaut imbriquées
En imbriquant les paramètres {{{paramètre1|{{{paramètre2|...}}} }}}, un modèle peut établir une séquence de sélection ordonnée des valeurs.
Par exemple, le modèle fictif Monmenu qui est un « Menu fromage ou dessert » comporte l'imbrication
{{{fromage|{{{dessert|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 ».