Aide : modèle

Un article de Wikipédia, l'encyclopédie libre
Aller à la navigation Aller à la recherche

Un modèle est une page Wikipédia créée pour être incluse dans d'autres pages. Les modèles contiennent généralement du matériel répétitif qui peut devoir apparaître sur un plus grand nombre d'articles ou de pages. Ils sont couramment utilisés pour les messages passe- partout , les avertissements ou avis standardisés, les infobox , les boîtes de navigation et à des fins similaires.

La méthode d'inclusion la plus courante est appelée transclusion , où le wikitexte de la page cible contient une référence au modèle, en utilisant la syntaxe. Une autre méthode est la substitution , où le contenu du modèle est copié dans le wikitexte de la page cible, une seule fois, lorsqu'il est enregistré. {{Template name}}

Aide : un guide rapide des modèles donne une brève introduction au sujet. Il existe une aide supplémentaire de MediaWiki et Wikimedia sur mw:Help:Templates , m:Help:Template et m:Help:Advanced templates .

Lien du modèle vers le modèle

Pour inclure le nom complet réel du modèle sous forme de texte (y compris les accolades environnantes) dans un article Wikipédia, appliquez le modèle de lien modèle . La principale motivation pour ce faire réside dans l'instruction et la documentation. Un petit exemple est le code :

{{tl|foo}}
génère
{{ foo }}

Description générale

Un aperçu de base du fonctionnement des modèles (vidéo de 8 minutes)

La plupart des modèles sont des pages de l' espace de noms du modèle , ce qui signifie qu'ils ont des titres sous la forme « Modèle : XXXX ». Il est cependant possible de transclure et de substituer à partir de n'importe quel espace de noms, [a] et ainsi certaines pages modèles sont placées dans d'autres espaces de noms, tels que l' espace de noms utilisateur . Les pages modèles ont des pages de discussion associées .

Les modèles peuvent contenir n'importe quel texte wiki souhaité , y compris des appels à d'autres modèles. Ils ont des capacités de programmation limitées : valeurs personnalisables (appelées paramètres ) ; calcul et branchements (à l'aide de fonctions d'analyseur syntaxique ) ; et l'accès aux variables spécifiques au wiki ( mots magiques ), telles que les dates, les heures et les noms de page. Ils peuvent également contenir des balises qui définissent quelles parties du wikitexte doivent être incluses lorsque le modèle est transclus ou substitué. Cela signifie que l'apparence de la page du modèle elle-même n'a pas besoin d'être la même que celle du contenu transclus (par exemple, elle peut contenir de la documentation, des catégories, etc. pour le modèle).

Comment faire : Pour transclure un modèle dans un article ou une page, saisissez le wikitexte à l'endroit où le modèle doit apparaître. La première lettre peut être indifféremment en minuscule ou en majuscule. {{Template name}}

Le préfixe Template:avant le nom du modèle est celui par défaut et n'a pas besoin d'être inclus. Cependant, pour les modèles stockés dans d'autres espaces de noms, le préfixe, tel que User:, doit être spécifié. Pour transclure une page dans l' espace principal , faites précéder son titre de deux points, comme . {{:Page name}}

Remarque : Tenter de transclure un modèle qui n'existe pas produit un lien rouge , tout comme un lien vers n'importe quelle autre page inexistante. Suivre le lien permet de créer ce modèle particulier. Il n'est pas possible de transclure des pages entre des projets (tels que Wikipédia ou MediaWiki en différentes langues) - pour utiliser un modèle sur un autre projet de langue, une copie du modèle doit être créée dans ce projet.

Syntaxe d'utilisation

Paramètres

La syntaxe de transclusion de base donnée ci-dessus peut être étendue par l'ajout de paramètres , qui sont utilisés pour contrôler la sortie du modèle. La syntaxe pour ceci est est le nom du modèle, et chacun peut contenir juste une valeur (ceux-ci sont appelés paramètres sans nom ) ou être de la forme ( paramètres nommés ). Les premier, deuxième, troisième, etc. paramètres non nommés recevront les noms , , , etc. {{Template name|parameter|parameter|...}}Template nameparametername=value123

Caractères (espaces blancs, des onglets, des retours) sont enlevés des débuts et fins des nommés noms et valeurs de paramètres, mais pas du milieu: ainsi {{ ... | myparam = this is a test }}a le même effet que {{ ... |myparam=this is a test}}. Cela ne s'applique pas aux paramètres sans nom , où tous les caractères d'espacement sont conservés.

Quels paramètres (le cas échéant) peuvent ou doivent être transmis à un modèle et comment ils doivent être nommés dépend du codage de ce modèle. Les paramètres nommés peuvent être définis dans n'importe quel ordre. Les paramètres superflus ou mal nommés seront ignorés ; les paramètres non définis se verront attribuer des valeurs par défaut. Si un paramètre est défini plusieurs fois, la dernière valeur prend effet.

La valeur d'un paramètre peut être la chaîne vide, par exemple lorsque la barre verticale ou le signe égal est immédiatement suivi par la barre verticale suivante ou les accolades fermantes. Ceci est différent de l'omission complète du paramètre, qui le laisse indéfini, bien que les modèles soient souvent codés de manière à se comporter de la même manière dans les deux cas.

Les paramètres peuvent être spécifiés (et ne feront rien) même s'ils ne sont pas représentés dans le code du modèle. Par exemple, |reason=est fréquemment utilisé comme pseudo-paramètre pour expliquer brièvement dans la source wiki pourquoi le modèle a été placé. [b] Certains modèles appellent Module : Vérifier les paramètres inconnus pour avertir l'éditeur si un paramètre utilisé n'est pas pris en compte dans le code du modèle ; ceci est principalement utilisé pour les infobox et autres modèles avec un grand nombre de paramètres compliqués, où la présence d'un inconnu est généralement une erreur involontaire. Si vous mettez à jour un tel modèle pour inclure un nouveau paramètre, son appel au module doit également être mis à jour pour inclure le nouveau paramètre.

Appel

L'utilisation d'un modèle ressemble beaucoup à l'appel d'une fonction dans un langage de programmation - appelez-le et il renvoie une valeur (la sortie ). Comme les fonctions, certains modèles acceptent des paramètres qui modifient la sortie.

Dans MediaWiki , le logiciel wiki utilisé par Wikipedia, les variables ont une signification plus spécifique qui les distingue des modèles, mais elles sont toutes deux identifiées par des accolades doubles {{ }}et elles renvoient toutes deux une valeur.

Alors que les noms de variables MediaWiki sont tous en majuscules, les noms de modèles ont les mêmes caractéristiques et limitations de base que tous les noms de pages : ils sont sensibles à la casse (sauf pour le premier caractère) ; les traits de soulignement sont analysés comme des espaces ; et ils ne peuvent contenir aucun de ces caractères : # < > [ ] | { }. C'est parce que ceux-ci sont réservés au balisage wiki et au HTML .

Le signe dièse # est appelé un identifiant de fragment car il désigne un fragment ou une section d'un document (comme une section dans un article de Wikipédia). Bien qu'il puisse être utilisé pour créer un lien vers une section d'une page de modèle (comme Template:Portal#Example ), il n'y a aucune raison de mettre un identifiant de fragment ou un nom de fragment dans une référence de modèle. Dans , par exemple, la chaîne n'a pas d'utilité et est donc ignorée. {{Portal#Location|Books}}#Location

Substitution

Lorsqu'un modèle est remplacé, son contenu est codé en dur dans la page plutôt que transclus . Pour savoir comment et quand substituer un modèle, consultez Aide:Substitution § Quand utiliser la substitution .

Exemples d'utilisation de modèle de base

Remarque : Si vous souhaitez expérimenter l'un de ces éléments, veuillez utiliser le modèle sandbox , Special:ExpandTemplates ou votre page utilisateur ou votre sandbox.

Un exemple de modèle très simple peut être trouvé sur Template:Lambda , qui se développe pour placer le symbole lambda (λ) à ce stade du texte. Un programmeur dirait que le modèle renvoie le symbole lambda (λ).

Cliquez sur Template:Lambda , puis cliquez sur l'onglet "Edit source" pour voir le code du template (son wikitext). La partie "active" de ce code, appelée l' expansion du modèle, est le seul mot &lambda;. [c] Le reste du wikitexte est enfermé entre des balises, il est donc affiché sur la page du modèle elle-même mais ne sera pas affiché lorsque le modèle est utilisé (ou appelé) sur une autre page. <noinclude>

Pour transclure Template:Lambda sur une autre page (c'est-à-dire pour l'utiliser sur une autre page), tapez (ou – la casse de la première lettre n'est pas significative) dans le wikitexte de la page cible et appuyez sur . La page sera affichée avec l' appel de modèle remplacé par l'expansion du modèle, comme si le wikitexte contenait réellement à ce point. La page affichée contiendra donc le texte "λ". {{lambda}}{{Lambda}}Show preview&lambda;

Par exemple, tapez et vous verrez "La 11ème lettre de l'alphabet grec est le lambda (𝜆)" lors de la prévisualisation de la page ou après avoir enregistré la modification. Vous pouvez utiliser des modèles sans connaître les détails de leur code ; il vous suffit de vous souvenir du résultat qu'ils produisent, qui est généralement décrit sur la page du modèle. The 11th letter of the Greek alphabet is the lambda ({{lambda}})

Une autre façon d'utiliser ce modèle est de le substituer . Si vous tapez et prévisualisez ou enregistrez la page, vous verrez à nouveau "La 11ème lettre de l'alphabet grec est le lambda (λ)". Si vous regardez à nouveau le wikitexte enregistré, [d] cependant, vous verrez que les appels de modèle ont vraiment été remplacés par l'expansion du modèle lorsque vous avez enregistré la page. Le lien entre le texte de sortie et le modèle est maintenant rompu et la sortie ne sera pas affectée par les modifications futures apportées au modèle (comme ce serait le cas dans le cas d'une transclusion). The 11th letter of the Greek alphabet is the lambda ({{subst:lambda}})

Exemples avec paramètres

Un exemple de modèle qui prend des paramètres est le modèle . Essayez de taper dans le bac à sable, cela produira le texte suivant : {{about}}{{about|how to use templates|how to use modules|Help:Lua}}

Le modèle utilise trois paramètres sans nom (également appelés paramètres positionnels) dans l'exemple ci-dessus, mais le même modèle peut également être utilisé avec différents nombres de paramètres pour donner des résultats légèrement différents, comme expliqué dans la documentation du modèle . Par exemple, . Notez l'utilisation d'un paramètre vide - dans ce cas, les tubes consécutifs signifient que le premier paramètre qui a été "passé" au modèle est une chaîne vide, ce qui, dans ce modèle, l'obligera à omettre la phrase "à propos" initiale. Cela produit :{{about}}{{about||how to use modules|Help:Lua}}

D'autres modèles, en particulier les plus complexes, prennent des paramètres nommés ou un mélange de paramètres nommés et non nommés. Un exemple simple est Template:Payoff matrix , utilisé pour générer une grille 2 par 2. Par exemple:

Balisage Rendu comme
{{matrice des gains | UL = 5 | UR = 7 | DL = 2 | DR = 9 | Nom = Exemple d'utilisation }}
La gauche Droit
En haut 5 7
Vers le bas 2 9
Exemple d'utilisation

Voir la page des modèles pour plus de possibilités. Notez que le modèle est utilisé ici sans définir tous ses paramètres possibles — les paramètres non définis reçoivent des valeurs par défaut.

Les espaces autour des signes égal et avant et après les paramètres ne sont utilisés que pour plus de clarté - ils ne sont pas nécessaires et sont ignorés lors de l'évaluation du modèle (bien que ce ne soit pas le cas avec les paramètres sans nom). Les noms de paramètres sont cependant entièrement sensibles à la casse ; par exemple, il n'est pas possible de remplacer DRpar drou dRdans l'exemple ci-dessus. Les paramètres dont les noms ne sont pas utilisés par le modèle sont simplement ignorés.

L'examen du code source du modèle montre le balisage du tableau standard avec quelques entités supplémentaires à triple crochet représentant les paramètres :

{| id="Matrice de paiement" style="background:white; float: {{{ Float|right }}} ; clear:right; text-align:center;" align= {{{ Float|right }}} cellspacing=0 cellpadding=8 width= {{{ Width|225 }}}
|-
|style="largeur:33%; "| 
|style="width:33%; border-bottom: solid black 1px;"| {{{ 2L|Gauche }}} 
|style="width:33%; border-bottom: solid black 1px;"| {{{ 2R|Droite }}}
|-
|style="border-right : noir uni 1px ; text-align : right ; "| {{{ 1U|Up }}} 
|style="border-right : noir uni 1px ; border-bottom : noir uni 1px ; fond : {{{ ULc|white }}} ; taille de police : 120% ; "| {{{ UL|0, 0 }}} 
|style="border-right : noir uni 1px ; border-bottom : noir uni 1px ; fond : {{{ URc|white }}} ; taille de police : 120%; "| {{{ UR|0, 0 }}}
|-
|style="border-right : noir uni 1px ; text-align : right ; "| {{{ 1D|Down }}} 
|style="border-right : noir uni 1px ; border-bottom : noir uni 1px ; fond : {{{ DLc|white }}} ; taille de police : 120% ; "| {{{ DL|0, 0 }}} 
|style="border-right : noir uni 1px ; border-bottom : noir uni 1px ; fond : {{{ DRc|white }}} ; taille de police : 120%; "| {{{ DR|0, 0 }}}
|-
|style="font-size: 90%;" colspan=3 | '' {{{ Nom|{{PAGENAME }}} }} ''
|}

L'entité demande au modèle d'utiliser le paramètre nommé ou le texte si le paramètre n'est pas présent dans l'appel. {{{2L|Left}}}2LLeft

Conseils d'utilisation et solutions de contournement

Les points suivants peuvent être intéressants à noter lors de l'utilisation de modèles :

  • Les gabarits ne sont pas la seule méthode de transclusion , il peut également exister des méthodes topiques plus appropriées telles que la transclusion sélective .
  • Un paramètre sans nom ne peut pas contenir de signe égal ordinaire, car cela serait interprété comme déclenchant un paramètre nommé. [e] Pour passer un signe égal dans un paramètre sans nom (par exemple dans une URL avec des paires nom-valeur ), remplacez le signe égal par le modèle spécial , qui renvoie un signe égal qui ne sera pas interprété. Une autre méthode consiste à remplacer le paramètre sans nom (et tous les paramètres sans nom suivants) par des paramètres nommés — le premier paramètre sans nom est équivalent à un paramètre nommé et ainsi de suite. Pour appeler template avec comme valeur littérale pour le premier paramètre, tapez soit ou .{{=}}|1={{done}}a=b{{done|a{{=}}b}}{{done|1=a=b}}
  • De même, il n'est pas possible d'utiliser un caractère pipe ordinaire |dans les paramètres du modèle, car il sera interprété comme un séparateur. [f] Cette fois, le problème peut être résolu en utilisant le mot magique à la place du tube ou, si le tube n'est pas destiné à être analysé à un niveau supérieur, en utilisant l' entité HTML . Alternativement, pour intégrer des wikitables dans des modèles, vous pouvez utiliser pour éviter les fichiers .{{!}} &#124;{{Wikitable}}{{!}}
  • N'oubliez pas que les caractères d'espacement (espaces, tabulations, retours chariot et sauts de ligne) ne sont pas automatiquement supprimés du début et de la fin des paramètres sans nom, contrairement aux paramètres nommés. L'inclusion de tels caractères (ou tout autre caractère non visible dans n'importe quel paramètre) peut dans certains cas affecter le comportement du modèle de manière inattendue. (Les concepteurs de modèles peuvent utiliser pour supprimer les espaces blancs indésirables dans les paramètres sans nom.){{Trim}}
  • Dans la documentation et les discussions, il est souvent pratique de pouvoir produire la syntaxe d'appel du modèle avec un lien vers le modèle en question, mais sans réellement appeler le modèle. Cela peut être fait facilement en utilisant le modèle ( le modèle " t emplate l ink"). Par exemple, produit {{ Exemple }}. Il existe plusieurs autres modèles de liens de modèles disponibles avec différentes fonctionnalités.{{tl}}{{tl|Example}}
  • Lorsqu'un modèle est modifié (lorsque le modèle ou l'un de ses sous-modèles est modifié), le changement sera répercuté sur toutes les pages sur lesquelles le modèle est transclus. Cependant, le changement peut ne pas devenir visible sur toutes les pages immédiatement ; une version précédemment mise en cache d'une page, basée sur la version précédente du modèle, peut continuer à s'afficher pendant un certain temps. Utilisez la fonction de purge pour forcer l'affichage d'une page à l'aide des dernières versions de modèles, y compris sur la page de modèle elle-même, si elle contient des exemples d'utilisation.
  • Lors de l'affichage d'anciennes versions de pages, n'oubliez pas que les modèles seront transclus tels qu'ils sont actuellement, pas nécessairement comme ils l'étaient lorsque l'ancienne version de page était active.
  • Pour répertorier toutes les pages sur lesquelles un modèle est transclus, utilisez Quels liens ici sur la page du modèle. Cela n'inclura pas les pages où le modèle a été remplacé.
  • Pour obtenir une liste de modèles transclus sur une page, cliquez sur "Modifier" et recherchez la liste sous la fenêtre d'édition. Cette liste comprend également les sous-modèles utilisés par les modèles qui sont directement transclus. Pour obtenir une telle liste pour une section de page, une ancienne version de la page, [g] ou votre nouvelle version modifiée avant l'enregistrement, cliquez Show previewsur la page d'édition appropriée.
  • Il y a des limites au nombre et à la complexité des modèles qu'un article peut avoir. Voir la section " § Étendre les limites " pour obtenir de l'aide pour résoudre ce problème.
  • Si vous souhaitez que le modèle laisse un horodatage ou une signature , vous pouvez écrire <noinclude><nowiki></noinclude>~~~~~<noinclude></nowiki></noinclude>, mais cela ne fonctionnera que si vous remplacez le modèle. Si vous le transcluez, vous obtiendrez juste ~~~~~.
  • Pour améliorer la lisibilité, les programmeurs aiment généralement diviser le code avec des retours à la ligne et l'indenter. Malheureusement, le logiciel MediaWiki ne permet pas cette fonctionnalité ; dans de nombreux cas, ces nouvelles lignes spécialement conçues sont traitées par le logiciel comme du contenu. Une solution de contournement possible consiste à ajouter <!--avant chaque caractère de nouvelle ligne et -->après celui-ci, ce qui produit un commentaire HTML .

Création et modification de modèles

Les modèles sont créés et modifiés à peu près de la même manière que n'importe quelle autre page : choisissez un nom approprié, accédez à cette page, puis cliquez sur l'onglet « Modifier » ou créez une nouvelle page si nécessaire. Comme mentionné ci-dessus, les modèles sont normalement placés dans l' espace de noms des modèles , bien que des modèles destinés à votre usage personnel ou à des fins d'expérimentation puissent être créés dans votre propre espace utilisateur . Tout ce qui peut être inclus dans une page ou un article normal peut être inclus dans un modèle, y compris d'autres modèles (appelés sous- modèles ). Les modèles utilisent souvent des fonctionnalités de programmation - paramètres, fonctions d'analyseur et autres mots magiques— qui permettent au contenu transclus de varier en fonction du contexte. Il existe également des balises spéciales pour contrôler quelles informations sont transcluses et lesquelles ne le sont pas.

Avant de créer un modèle, effectuez une recherche rapide des modèles existants (par exemple en explorant Category:Wikipedia templates ) pour voir s'il existe déjà un modèle qui fait ce que vous voulez ou un modèle similaire dont le code peut être copié et modifié (ou laissé dans lieu et agrandi). Recherchez des modèles génériques sur lesquels le nouveau modèle peut être basé ; par exemple, les modèles de navbox peuvent être facilement créés en appelant le générique Template:Navbox .

Il n'y a pas de règle stricte sur le nom à choisir pour un modèle - rendez-le court mais raisonnablement descriptif. Si des modèles similaires existent, essayez de suivre un modèle de nommage cohérent. Les modèles peuvent être renommés sans rompre les transclusions existantes (ce qu'on appelle la rupture ), à condition qu'une redirection vers le nouveau nom de modèle soit laissée de côté.

Soyez extrêmement prudent lorsque vous modifiez des modèles existants : les modifications apportées peuvent affecter un grand nombre de pages, souvent d'une manière inattendue. Pour cette raison, de nombreux modèles très utilisés sont protégés contre l'édition, sauf par les administrateurs et les éditeurs de modèles ; d'autres éditeurs peuvent proposer des modifications sur la page de discussion. Certains modèles proposent un bac à sable et des cas de test pour l'expérimentation.

Pour proposer la suppression ou la fusion de modèles inutilisés ou inappropriés ou de modèles pouvant être facilement fusionnés, rendez-vous sur Modèles de discussion (TfD).

Paramètres de gestion

Les valeurs des paramètres qui peuvent être fournis à un modèle sont représentées dans le code du modèle par des éléments placés entre triples accolades :

  • Le code {{{xxx}}}sera remplacé par la valeur du paramètre nommé xxx. ceux-ci sont connus sous le nom de paramètre nommé s .
  • Les codes {{{1}}}, {{{2}}}, etc. seront remplacés par le premier, le second, etc. paramètre sans nom (ou la valeur d'un paramètre nommé 1, 2, etc.) ; ceux-ci sont connus sous le nom de paramètre de position s .

Si aucune valeur n'est affectée à un paramètre, aucun remplacement n'aura lieu ; cela signifie que si aucune valeur n'est transmise pour le paramètre |xxx=, la valeur de l'expression {{{xxx}}}à l'intérieur du modèle sera littéralement {{{xxx}}} , pas le "vide" auquel vous vous attendiez. Un comportement plus intuitif peut être obtenu en spécifiant des valeurs de paramètre par défaut. Cela se fait avec la syntaxe pipe : {{{xxx|dflt}}}spécifie la valeur par défaut dfltpour le paramètre nommé |xxx=et {{{1|dflt}}}spécifie la valeur par défaut dfltpour le premier paramètre sans nom. Le plus souvent, cela est utilisé pour spécifier des valeurs par défaut nulles, telles que {{{1|}}}ou {{{xxx|}}}.

Les alias de paramètres sont un cas particulier de valeurs par défaut. Par exemple, si les paramètres |1=, |text=, et |message=sont des noms pour le même paramètre, alors le wikitexte {{{message|{{{text|{{{1|}}}}}}}}}peut être utilisé. Si plusieurs de ces paramètres sont donnés, alors messageaura la priorité, suivi de text, et enfin du premier paramètre sans nom. C'est-à-dire que si un modèle contenant ce wikitexte reçoit les paramètres |message=A|text=B, le wikitexte se développera en A.

En raison des multiples utilisations de la syntaxe à double et triple accolade, les expressions peuvent parfois être ambiguës. Il peut être utile ou nécessaire d'inclure des espaces pour résoudre une telle ambiguïté. Par exemple, {{ {{{xxx}}} }}ou {{{ {{xxx}} }}}, plutôt que de taper cinq accolades consécutives, peut être plus lisible. Cependant, faites attention aux espaces blancs indésirables apparaissant dans les extensions de modèle.

Cas particulier : paramètres dans une balise d'ouverture de style XML

Les paramètres ne sont pas développés lorsqu'ils sont encapsulés dans des balises. Ils ne sont pas non plus développés s'ils sont placés dans la balise d'ouverture de style XML . Ainsi, les éléments suivants ne fonctionneront pas dans un modèle : <nowiki>

  • <ref name={{{param}}}> Smith, Adam (1776)...</ref>

car le paramètre n'est pas développé. Au lieu de cela, vous pouvez utiliser la {{#tag:}} fonction parser , qui est, par exemple, utilisée dans pour générer l' élément ; voir aussi Aide:Mots magiques § Formatage . Par conséquent, l'exemple suivant fonctionnera : {{sfn}}<ref>...</ref>

  • {{#tag:ref | Smith, Adam (1776)... | nom={{{param}}} }}

Attention : URL trop étendues

Si la valeur d'un paramètre est (ou se termine par) une URL , vérifiez s'il est affiché dans Wikipedia avec le lien dépassant d'un ou plusieurs caractères après l'URL afin que cliquer sur le lien provoque une erreur ou un échec. Assurez-vous qu'après traitement par le logiciel, un espace logiciel ( pas un espace dur ou insécable ) suit l'URL, que vous ou un utilisateur avez fourni l'URL ou qu'elle ait été générée par un traitement automatisé. Il est possible que le code source contienne ou génère un espace qui est ignoré lors du traitement ou qu'il n'y ait pas d'espace à cet endroit. Corrigez le code source, peut-être en forçant un espace souple à apparaître après l'URL. Le modèle peut être utile. {{spaces}}

Variables système et logique conditionnelle

Le code du modèle utilise souvent les variables et les fonctions d'analyseur décrites dans Aide : Mots magiques afin de faire dépendre le comportement du modèle de l'environnement (comme l'heure actuelle ou l'espace de noms) ou des valeurs de paramètres qui lui sont transmises. Ils peuvent également être utilisés pour des calculs arithmétiques, mais certaines fonctionnalités de programmation standard telles que les boucles et l'affectation de variables ne sont pas disponibles. La manipulation complète de la chaîne n'est pas non plus disponible ; certains modèles offrant de telles fonctionnalités ont été créés, mais ils sont inefficaces et imparfaits.

Certaines des variables et fonctions les plus fréquemment utilisées sont répertoriées ci-dessous. Pour plus d'informations, voir Help:Magic words et la documentation plus complète sur les pages MediaWiki mw:Help:Magic words et mw:Help:Extension:ParserFunctions .

Exemples de fonctions d'analyseur de base
La description Texte saisi Résultat
Texte en majuscule {{uc: Heavens to BETSY! }} PARADIS POUR BETSY !
Texte en minuscules {{lc: Heavens to BETSY! }} ciel à betsy!
Obtenir un nom d'espace de noms {{NS: 1 }} Parlez
Obtenir une URL Wikipédia {{fullurl: pagename }} //en.wikipedia.org/wiki/Pagename

L'extension ParserFunctions fournit des fonctions d'analyse plus orientées programmation.

Exemples de fonctions d'analyse d'extension
La description Texte saisi Résultat
Test d'égalité entre deux chaînes (ou paramètres) {{#ifeq: yes | yes | Hooray...! | Darn...! }} Hourra...!
{{#ifeq: yes | no | Hooray...! | Darn...! }} Zut...!
Tester si une chaîne (ou un paramètre) contient quelque chose (autre que des espaces) {{#if: {{{param|}}} | Hooray...! | Darn...! }} Zut...!
Faire un calcul (mathématiques)
[aire de cercle de rayon 4, à 3 décimales]
{{#expr: ( pi * 4 ^ 2 ) round 3 }} 50.265
Tester le résultat d'un calcul
[est-ce que 1230 est pair ou impair ?]
{{#ifexpr: 1.23E+3 mod 2 | Odd | Even }} Même
Exemples de variables système
La description Texte saisi Résultat (pour cette page d'aide)
Noms de pages {{PAGENAME}} Modèle
{{FULLPAGENAME}} Aide : modèle
Nom de l'espace de noms actuel {{NAMESPACE}} Aider
Nombre d'utilisateurs enregistrés {{NUMBEROFUSERS}} 42 401 582
Nombre de pages dans une catégorie donnée {{PAGESINCATEGORY:"Weird Al" Yankovic albums}} 20
Version actuelle du logiciel {{CURRENTVERSION}} 1.38.0-wmf.4 (15a5346)
Horodatage de la dernière révision {{REVISIONTIMESTAMP}} 20211016185253

Les variables et sont particulièrement utiles et fréquemment utilisées pour modifier le comportement du modèle en fonction du contexte. Par exemple, si le modèle inclut un lien de catégorie (par exemple, des modèles de nettoyage, qui incluent un lien catégorisant la page comme une page nécessitant un nettoyage), il vérifiera souvent la variable pour s'assurer que les pages de discussion, les pages utilisateur ou n'importe où ailleurs la balise peut accessoirement être placée ne sont pas elles-mêmes classées comme des pages nécessitant un nettoyage. {{PAGENAME}}{{NAMESPACE}}{{NAMESPACE}}

Modèles d'imbrication

Les modèles peuvent contenir d'autres modèles, c'est ce que l'on appelle généralement l' imbrication . Au fur et à mesure que le modèle est traité, le wikitexte produit par tous les modèles imbriqués est transclus dans le modèle d'imbrication, de sorte que le produit final est essentiellement traité à partir du modèle le plus profondément imbriqué. Bien que son application soit assez simple, elle implique quelques bizarreries et astuces remarquables.

Pour transmettre une valeur de paramètre à un modèle imbriqué, placez une balise de paramètre comme valeur de l'un des paramètres du modèle imbriqué.

Exemples:
Template:A contient "the quick brown {{B|{{{3}}} }} jumps over..."Ceci prend la valeur passée au troisième paramètre positionnel de Template:A et la passe comme premier paramètre positionnel de Template:B, puis renvoie le wikitexte produit par B dans le cadre de la phrase.
Template:A contient "the quick brown {{B|waldo={{{3}}} }} jumps over..."Comme précédemment, sauf que le troisième paramètre positionnel de Template:A est passé au paramètre nommé "waldo" de Template:B.

Les paramètres du modèle eux-mêmes peuvent être choisis de manière conditionnelle.

Exemples:
Template:A contient the quick brown {{B|{{{3}}}=fox}} jumps over...Template:A passe le mot "renard" comme paramètre nommé de Template:B dont le nom est le troisième paramètre de position de A.
{{#if: test string | value if test string is not empty | {{#if: test string | value if test string is not empty | value if test string is empty (or only white space) }} }}

Un modèle peut s'appeler mais s'arrêtera après une itération pour éviter une boucle infinie.

Lorsqu'un modèle imbriqué contient des accolades sans correspondance — comme dans — les accolades sans correspondance sont traitées comme du texte pendant le traitement et n'affectent pas l'analyse des accolades dans le modèle d'imbrication. Si le modèle imbriqué est substitué, cependant, la substitution est traitée en premier, et cela va changer la façon dont les accolades sont analysées dans le modèle d' imbrication. Cela a peu d'utilité pratique, mais peut parfois introduire des erreurs inattendues. {{lb}}}

Voir m:Help:Modèles avancés et m:Help:Conversion récursive du wikitexte pour plus d'informations. Ces pages contiennent également des informations sur les appels inhabituels tels que {{template {{{parameter|}}} }}.

Contrôle d'inclusion : noinclude, includeonly et onlyinclude

Par défaut, lorsqu'un modèle est transclus (ou substitué ), l'intégralité du wikitexte (code) de la page modèle est incluse dans celle de la page cible. Cependant, il est possible de modifier ce comportement, en utilisant des balises qui spécifient quelles parties du code du modèle doivent être incluses. Cela permet d'éviter de transcrire des informations destinées à être affichées uniquement sur la page du modèle elle-même, telles que la documentation du modèle ou les catégories . Il est également possible que des parties du code soient transcluses, mais ne soient pas traitées sur la page du modèle elle-même (par exemple, les catégories à appliquer aux pages cibles qui ne s'appliquent pas au modèle). Les balises sont les suivantes :

  • <noinclude>...</noinclude> – Le texte entre les balises ne sera pas inclus lors de la transclusion (substitution) du modèle, mais sera traité sur la page du modèle ; une utilisation courante est pour la documentation dans les modèles .
  • <onlyinclude>...</onlyinclude> – Cela spécifie que rien sur la page, à l' exception de ce qui apparaît entre les balises, ne sera transclus (substitué).
  • <includeonly>...</includeonly> – Le texte entre les balises sera transclus (substitué), mais ne sera pas traité sur la propre page du modèle.
Wikitexte Ce qui est rendu ici (page source) Ce qui est transclus il (page de destination)
<noinclude> text1 </noinclude> text2 text1 text2 text2
<onlyinclude> text1 </onlyinclude> text2 text1 text2 text1
<includeonly> text1 </includeonly> text2 text2 text1 text2
<onlyinclude><includeonly> text1 </includeonly></onlyinclude> text2 text2 text1

Le problème le plus courant avec l'utilisation de ces blocs est peut-être les espaces ou les lignes indésirables. Il est important de se rappeler que l'effet de ces balises commence immédiatement avant le premier chevron, pas sur la ligne précédente ou sur le caractère visible précédent ; de même, l'effet se termine immédiatement après le dernier crochet angulaire, pas sur la ligne suivante ou avec le prochain caractère visible. Par exemple:

<includeonly>
}}<include seulement>
}}
<include seulement>
<noinclude>
}}<pas d'inclusion>
}}
<pas d'inclusion>
</includeonly><noinclude>
{{template}}</includeonly><noinclude>
{{template}}</includeonly>
<noinclude>

Ces balises peuvent être imbriquées les unes dans les autres, bien que (pour une page donnée), cela ne s'applique réellement qu'à la balise ; l'imbrication et les balises est assez inutile. Attention cependant à bien imbriquer les balises. Constructions comme abc def ghi seront pas fonctionner comme prévu. Utilisez la règle « premier ouvert, dernier fermé » qui est standard pour HTML/XML. <onlyinclude><includeonly><noinclude><onlyinclude><includeonly></onlyinclude></includeonly>

Problèmes et solutions de contournement

  • Si le premier caractère produit par un modèle ou une fonction d'analyseur est l'un des quatre caractères de balisage wiki— :, ;, *, #[h] — alors il est traité comme s'il se trouvait au début d'une ligne, même lorsque la balise du modèle ne l'est pas. Cela permet la création de divers types de listes dans des modèles où le modèle peut ne pas toujours être au bon endroit pour une liste. Pour éviter cela, utiliser avant le balisage ou utiliser les HTML entités , , et respectivement. Dans certains cas, les entités HTML fonctionneront alors que ce n'est pas le cas. Le problème se produit souvent lorsqu'une valeur de paramètre dans un appel de modèle commence par l'un des quatre caractères.<nowiki />&#58;&#59;&#42;&#35;<nowiki />
  • Pour les problèmes liés à la substitution de modèles, tels que la façon de contrôler si les sous-modèles sont également substitués lorsque le modèle parent est substitué, consultez Aide : Substitution .
  • Le modèle peut être utilisé pour supprimer tout espace blanc initial ou final des valeurs de paramètre sans nom si cela pose des problèmes ; les valeurs des paramètres nommés sont automatiquement supprimées de cette manière.{{Trim}}
  • Pour le débogage des modèles, les techniques suivantes sont parfois utiles :
    • Utilisez subst:pour substituer un modèle (plutôt que de le transclusion), ce qui peut montrer plus clairement ce qui se passe lorsque le modèle est transclus ; voir Aide:Remplacement .
    • Utilisation msgnw:(abréviation de « m e de sa g de e, n o w iki ») à plus ou moins transclude la wikitext de la page de modèle plutôt que le contenu transformés. Ce n'est pas parfait : les listes sont rendues, les commentaires sont supprimés et les nouvelles lignes simples sont remplacées par des espaces (ce qui est particulièrement déroutant lors de la transclusion de tableaux wikitext).
    • Utilisez Special:ExpandTemplates pour voir l'expansion récursive complète d'un ou plusieurs modèles.
  • Pour protéger les ressources du serveur et éviter les boucles infinies, l'analyseur impose certaines limites sur l'imbrication de la transclusion en profondeur et sur la taille de la page avec les modèles étendus. Cela peut entraîner la rupture de pages lors de l'utilisation de modèles très complexes, en particulier s'il existe plusieurs modèles de ce type sur la même page. Pour plus d'informations, consultez WP:Template limit . La charge globale d'une page sur le serveur peut être vérifiée en examinant le code HTML généré pour une page et en recherchant les NewPP limit reportcommentaires.
  • N'utilisez pas le =balisage wiki pour créer des en-têtes de section dans un modèle destiné à être utilisé dans l'espace d'article ; cela créera un [edit]lien qui, une fois transclus, ouvrira de manière confuse le modèle pour modification.
    • Vous pouvez éviter les [edit]liens vers le modèle en incluant <includeonly>__NOEDITSECTION__</includeonly>.

Documentation

La catégorisation de votre modèle et la documentation de son utilisation appropriée permettront aux autres éditeurs de le trouver et de l'utiliser plus facilement.

La documentation pour les utilisateurs, ainsi que les catégories du modèle, est normalement placée après le code du modèle, à l'intérieur des <noinclude>...</noinclude>balises. Il est normalement nécessaire de mettre la <noinclude>balise d' ouverture immédiatement après la fin du code, sans espaces ni retours à la ligne intermédiaires, pour éviter de transcrire les espaces blancs indésirables.

Dans le cas de modèles complexes, la documentation (ainsi que les catégories) est souvent conservée sur une sous - page distincte de la page du modèle (appelée "Modèle : XXX /doc"). Cela s'applique également à de nombreux modèles protégés , ce qui permet aux informations d'être modifiées par des non-administrateurs. Ceci est réalisé en plaçant le modèle après le code du modèle principal et dans les balises. Si la sous-page "/doc" n'existe pas, un lien apparaîtra alors permettant sa création. {{Documentation}}<noinclude>...</noinclude>

Catégorisation

Catégoriser les pages par inclusion de modèle

Certains modèles contiennent des définitions de catégories dans leur code transclus, car ils sont destinés à placer les pages cibles dans des catégories particulières. Cela se fait souvent avec les catégories de maintenance (le placement d'articles dans des catégories de contenu ordinaires de cette manière est déconseillé). Lors de cette opération, il peut être nécessaire d'utiliser des <includeonly>...</includeonly>balises pour maintenir le modèle lui-même en dehors de la catégorie. Lors du développement, du test, du sandboxing ou de la démonstration d'un modèle destiné à appliquer une catégorie, remplacez temporairement chaque catégorie par une catégorie de test (en commençant par X1 , X2 ou X3 ) ou supprimez la catégorisation (voir suppression de catégorie dans les modèles ).

Catégoriser les modèles

La déclaration de catégorisation [[Category:Some-topic templates]]doit être placée sur la page de documentation du modèle (ou à l'intérieur des <noinclude>...</noinclude> balises s'il n'y a pas de page de documentation) pour éviter de polluer les pages de transclusion.

Alias

Des alias peuvent être créés avec des redirections . Par exemple, Template:Tsh redirige vers le raccourci Template:Template . Vous pouvez alors écrire à la place de . {{tsh|foo}}{{Template shortcut|foo}}

Il est bon de préparer des alias de modèles qui ne diffèrent que par les espaces et les majuscules. Par exemple, il existe un modèle appelé . Le "W" est majuscule, puisque le mot "Wiktionnaire" l'est, mais une redirection avec un "w" inférieur existe car les utilisateurs peuvent taper ce dernier à la place. {{See Wiktionary}}{{See wiktionary}}

Limites des modèles

Limite de « taille d'inclusion post-expansion ». Lorsque les modèles sont rendus ou développés au format HTML pour être affichés dans votre navigateur, ils utilisent de la mémoire. C'est ce qu'on appelle la "taille d'inclusion post-expansion" et a une limite de 2 048 000 octets. Cette taille est incluse en tant que commentaire invisible dans la sortie HTML. Utilisez la fonction Afficher la source de votre navigateur pour afficher le code HTML brut et recherchez « newpp ». Le rapport ressemblera à :

<!-- 
Rapport de limite NewPP 
Nombre de nœuds de préprocesseur : 2382/1000000 Taille d'inclusion 
post-expansion : 63476/2048 000 octets 
Taille d'argument de modèle : 9517/2048 000 octets 
Nombre de fonctions d'analyseur coûteux : 2/500 
-->

L'exemple montre que l'extension de modèle utilise 63 476 octets sur 2 048 000 octets de mémoire disponible.

Problème d'affichage. Si trop de modèles sont inclus sur une page, la taille d'inclusion post-expansion peut dépasser la limite. Lorsque cela se produit, les modèles après la limite ne se développeront plus et s'afficheront à la place sous forme de lien wiki (par exemple, Modèle : nom du modèle ). Les causes courantes sont l'inclusion d'un trop grand nombre de modèles de citations et/ou de modèles de drapeaux. Pour résoudre ce problème, remplacez les modèles, supprimez les modèles ou divisez la page.

Les transcriptions non rendues comptent toujours dans la limite. Par exemple, une page qui contient uniquement {{#if:{{:Main Page}}}}aurait toujours une taille d'inclusion post-expansion même si elle n'aurait aucune sortie du tout.

La même chose s'applique aux modules Scribunto . Par exemple, la {{#invoke:Test|main}}taille de l'inclusion post-expansion augmenterait toujours même si Module:Test était simplement :

mw . GetCurrentFrame (): prétraiter  "{{msgnw :: page principale}}"  - supprimer cette ligne et post-expansion comprennent la taille devient zéro 
retour  { principal  =  fonction ()  fin }  - p.main () n'a pas de valeur de retour

Langage de programmation Lua

Depuis février 2013, le langage de programmation Lua est disponible pour une utilisation via l' extension Scribunto MediaWiki. Le code Lua peut être intégré dans des modèles en utilisant la {{#invoke:}}fonctionnalité de l'extension Scribunto MediaWiki. Le code source Lua est stocké dans des pages appelées modules, et ces modules individuels sont ensuite invoqués sur des pages modèles. Par exemple, Module:Example peut être invoqué en utilisant le code {{#invoke:Example|hello}}pour imprimer le texte "Hello World!".

Recherche de modèle

Au lieu d'utiliser cet index lié ci-dessus, vous pouvez rechercher l'espace de noms du modèle à l'aide de la zone Spécial:Recherche ci-dessous :

Voir également

Pages d'aide Pages de manuel Pages spéciales Autres pages non consultables directement

Remarques

  1. ^ Les espaces de noms à partir desquels la transclusion n'est pas autorisée sont spécifiés sur un wiki par la variable$wgNonincludableNamespaces.
  2. ^ Certains modèles, tels que, ont du code à afficher entant que sortie visible ; l'opportunité de le faire est déterminée modèle par modèle.{{Requested move}}|reason=
  3. ^ &lambda; est l' entité de caractère HTML pour la lettre grecque (λ).
  4. ^ Étant donné que le nouveau wikitexte lui-même doit être révisé et que le nouveau wikitexte lui-même ne peut pas être prévisualisé lors de l'édition de la source, la prévisualisation de la page n'illustrera pas le résultat de la substitution de modèle dans le wikitexte .
  5. ^ Ceci ne s'applique pas si le signe égal entre dans un autre appel de modèle ou un autre élément que l'analyseur traite séparément.
  6. ^ Encore une fois, cela ne s'applique pas s'il se trouve dans un autre élément analysé séparément, tel qu'un lien wiki redirigé.
  7. ^ Pour une ancienne version, l'arbre des sous-modèles sera construit en fonction de l'état actuel des modèles.
  8. ^ Ceux-ci sont définis dans ladoBlockLevels fonction de Parser.php .