Help:Modèles

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Help:Templates and the translation is 100% complete.

Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Lëtzebuergesch • ‎Napulitano • ‎Nederlands • ‎Tagalog • ‎Tiếng Việt • ‎Türkçe • ‎Zazaki • ‎català • ‎dansk • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎lietuvių • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎slovenčina • ‎suomi • ‎čeština • ‎беларуская (тарашкевіца)‎ • ‎български • ‎русский • ‎српски / srpski • ‎українська • ‎עברית • ‎اردو • ‎العربية • ‎سنڌي • ‎فارسی • ‎پښتو • ‎भोजपुरी • ‎मैथिली • ‎हिन्दी • ‎বাংলা • ‎মেইতেই লোন্ • ‎தமிழ் • ‎ಕನ್ನಡ • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어
PD Note : Si vous modifiez cette page, vous acceptez de placer votre contribution sous licence CC0. Plus d'informations sont disponibles sur les pages d'aide du projet domaine public.
PD

Si vous avez des textes standards que vous voulez inclure sur plusieurs pages, les modèles de MediaWiki peuvent vous aider. À la différence des extensions et des fichiers média, il n'y a pas de lieu centralisé pour le stockage des modèles. Les modèles peuvent être écrits ex nihilo ou bien, pour récupérer un travail déjà effectué, ils peuvent être exportés d'un autre wiki (par exemple Wikipédia) puis importés dans le wiki cible.

Création

Les modèles sont des pages wiki standard dont le contenu est conçu pour être transclus (inclus) à l'intérieur d'autres pages. Par convention le nom des modèles doit avoir le préfixe "Template:", qui l'assigne à cet espace de noms  en plus de cela, vous pouvez les créer comme n'importe quelle autre page wiki.

L'utilisation la plus simple des modèles est la suivante. Si vous créez une page nommée « Modèle:Bienvenue » avec pour contenu :

Bonjour ! Bienvenue sur le wiki.

vous aurez créé votre premier modèle ! Si vous insérez ensuite le code :

{{Bienvenue}}

sur n'importe quelle autre page, le texte "Bonjour ! Bienvenue sur le wiki." apparaîtra à la place de {{Bienvenue}} quand cette page sera visualisée. Le contenu du modèle est « transclus » dans l'autre page, c'est-à-dire qu'il est intégré dans la page.

Vous pouvez ensuite insérer {{Bienvenue}} à n'importe quel endroit de n'importe quelle page où vous voulez souhaiter la bienvenue à quelqu'un. Supposez qu'il soit utilisé dans 100 pages. Si vous changez ensuite le contenu du modèle par :

Salut ! Bienvenue sur ce merveilleux wiki.

et si vous revisitez n'importe laquelle des 100 pages où le modèle est utilisé, vous verrez le nouveau texte à la place de l'original. De cette façon, vous avez changé le contenu de 100 pages sans les avoir éditées, parce que le modèle est transclus dans ces pages.

C'est le mécanisme de base. Plusieurs fonctionnalités supplémentaires de transclusion enrichissent ce mécanisme et rendent les modèles très utiles.

Utilisation

Les modèles peuvent être utilisés dans d'autres pages de plusieurs manières :

  • {{Nom du modèle}} : comme montré plus haut, ce lien est remplacé de manière dynamique par le contenu de la page "[[Modèle:Nom du modèle]]" en cours au moment où la page avec le lien est chargée. Mais le lien reste inchangé dans la page source.
  • {{subst:Name}} — avec cette écriture, le lien est remplacé une fois pour toutes par le contenu de la page [[Template:Name]] au moment où vous enregistrez la page avec le lien: une copie du contenu de [[Template:Name]] viendra à la place du lien vers le modèle. Le contenu du modèle devient alors un élément à part entière de la page qui l'inclut, et peut être modifié normalement, indépendamment de l'original. Les changements ultérieurs effectués dans le modèle ne seront plus propagés à votre page par le lien.
  • {{safesubst:Nom}} — ceci a été introduit pour tenir compte des substitutions qui ne rompent pas la transclusion. Voir w:en:Help:Substitution#The safesubst: modifier.
  • {{msgnw:Nom du modèle}} inclut le modèle dans un formulaire qui l'affiche comme de la syntaxe brute wiki (comme le fait <nowiki>) quand la page qui le contient est récupérée.

En fait, une page ordinaire du wiki peut être utilisée comme un modèle, simplement en spécifiant l'espace de nom où elle se trouve, et donc :

  • {{Template:Nom de la page}} inclut [[Template:Nom de la page]]
  • {{Talk:Nom de la page}} inclut [[Talk:Nom de la page]]
  • {{:Nom de la page}} inclut [[Nom de la page]]
    • {{subst::Nom de la page}} est remplacé par le contenu de [[Nom de la page]]

Si un tel espace de noms n'existe pas, le titre complet est considéré comme étant un modèle :

  • {{Foo:Bar}} inclut [[Template:Foo:Bar]]

Paramètres

Pour enrichir le mécanisme de transclusion, Mediawiki permet de passer des paramètres à un modèle lorsqu'il est transclus. Les paramètres permettent au modèle d'afficher des contenus différents ou d'avoir des comportements différents.

Supposons que vous vouliez insérer une petite note de remerciement sur la page de discussion d'autres utilisateurs, comme ceci :

Exemple d'image (tournesols)
Un petit remerciement...

pour tous tes efforts.
bises, Moi

La note de remerciement aura un motif (dans ce cas, "tous tes efforts") et une signature ("Moi"). Votre but est que tout utilisateur soit capable de remercier tout autre utilisateur, quel qu'en soit le motif.

Pour que la note ait la même apparence où qu'elle soit utilisée, vous pouvez définir un modèle appelé Template:Thankyou/fr, par exemple. Si la note devait avoir la même apparence chaque fois qu'un utilisateur remercie un autre utilisateur, son contenu spécifique (c.à.d la raison et la signature) sera différent. Pour cette raison, vous devriez les passer en tant que paramètres. Si on omet les autres éléments de mise en forme de la boite et de l'image, le contenu principal du modèle sera celui-ci :

'''Un petit remerciement...'''
pour {{{1}}}.
bises, {{{2}}}

Notez l'utilisation de {{{1}}} et {{{2}}}. C'est la manière d'identifier, à l'intérieur du modèle, les paramètres qui lui sont passés lorsqu'il est utilisé. Notez qu'à l'intérieur du modèle chaque paramètre est encadré par trois accolades : {{{ }}}. C'est différent de l'utilisation normale d'un nom de modèle.

Quand vous utilisez le modèle sur une page, vous complétez les valeurs des paramètres, séparés par un caractère "pipe" (|). MediaWiki permet la transmission des paramètres aux modèles selon trois manières : anonymement, numéroté, et nommé.

Paramètres anonymes

Pour passer des paramètres anonymes, listez les valeurs de ces paramètres de manière séquentielle :

{{Thankyou/fr|pour tous tes efforts|Moi}}

Dans ce cas, le modèle {{Thankyou/fr}} reçoit les paramètres {{{1}}}=pour tous tes efforts et {{{2}}}=Moi, ce qui produit : :

Exemple d'image (tournesols)
Un petit remerciement...

pour tous tes efforts.
bises, Moi

L'ordre de passage des paramètres anonymes est crucial pour le comportement du modèle. Inverser l'ordre des paramètres, comme ceci :

{{Thankyou/fr|Moi|tous tes efforts}}

produirait ce résultat :

Exemple d'image (tournesols)
Un petit remerciement...

pour Moi.
bises, tous tes efforts

Remarque : identifier les paramètres selon un numéro d'ordre (avec {{{1}}}, etc.) ne marche qu'avec des paramètres anonymes. Tout paramètre identifié par son nom, comme vu ci-dessous, ne sera plus accessible dans le modèle via un numéro d'ordre.

Remarque : si le signe égal apparaît dans l'argument d'un paramètre de modèle anonyme, ce paramètre peut être interprété à tort comme un paramètre nommé (voir la description plus bas dans ce document) pour lequel le texte qui précède le signe égal est le nom du paramètre et le texte qui le suit, est la valeur de l'argument. Un problème courant survient lorsque vous voulez inclure un lien externe ou un élément HTML avec des attributs (voir tâche 16235). Pour le contourner, employez plutôt des paramètres nommés, voire des paramètres numérotés comme expliqué dans la section suivante.

Paramètres numérotés

Pour passer des paramètres numérotés, identifiez chaque paramètre quand vous le passez :

{{Thankyou/fr|2=Moi|1=ton amitié}}

Cette fois, le modèle {{Thankyou/fr}} reçoit comme paramètres {{{1}}}=ton amitié et {{{2}}}=Moi, même s'ils ont été fournis en ordre inversé, et produit le résultat :

Exemple d'image (tournesols)
Un petit remerciement...

pour ton amitié.
bises, Moi

Paramètres nommés

La troisième façon de passer des paramètres est d'utiliser des noms, à la place de nombres. Dans ce cas, le contenu du modèle deviendrait :

'''Un petit remerciement...''' pour {{{reason}}}. bises, {{{signature}}}

Dans le modèle, on utilise {{{reason}}} et {{{signature}}} pour identifier chaque paramètre, au lieu des numéros. Pour passer ces paramètres par leur nom, identifiez chaque paramètre lorsque vous le passez :

{{thankyou/fr|signature=Moi|reason=être toi-même}}

Dans ce cas, le modèle {{Thankyou/fr}} reçoit les paramètres {{{reason}}}=être toi-même et {{{signature}}}=Moi et produit le résultat :

Exemple d'image (tournesols)
Un petit remerciement...

pour être toi-même.
bises, Moi

Les paramètres nommés sont sensibles à la casse, ainsi :

{{Thankyou/fr|signature=Moi|Reason=être moi-même|reason=being case-sensitive}}

produit :

Exemple d'image (tournesols)
Un petit remerciement...

pour being case-sensitive.
bises, Moi

L'avantage d'utiliser des paramètres nommés dans votre modèle, en plus d'apporter une flexibilité quant à l'ordre dans lequel on peut passer les paramètres, est que le code du modèle est beaucoup facile à comprendre s'il y a beaucoup de paramètres.

Valeurs par défaut

Si vous incluez un modèle qui attend des paramètres, mais sans lui fournir leurs arguments, comme ici :

{{Thankyou/fr}}

dans l'exemple des paramètres numérotés ci-dessus vous obtiendriez ce qui suit :

Exemple d'image (tournesols)
Un petit remerciement...

pour {{{1}}}.
bises, {{{2}}}

À partir du moment où aucun argument n'a été passé au modèle, ce dernier affiche les paramètres eux-mêmes, au lieu de leurs valeurs respectives. Dans ce cas, il serait plus utile de définir des valeurs "par défaut" pour les paramètres, c.à.d des valeurs qui seront utilisées si aucune valeur n'est fournie. Par exemple, si le contenu du modèle est changé pour :

'''Un petit remerciement...'''
pour {{{reason|tout}}}.
bises, {{{signature|Moi}}}

alors {{{reason|tout}}} définit que si aucun argument est fourni pour le paramètre {{{reason}}}, alors la valeur toutsera utilisée. De même, le paramètre {{{signature|Moi}}} fait que la valeur par défaut de {{{signature}}} est Moi. Maintenant, inclure le modèle à nouveau et sans passer d'argument donnera le résultat suivant :

Exemple d'image (tournesols)
Un petit remerciement...

pour tout.
bises, Moi

Ordre d'évaluation

A part quelques exceptions, les paramètres des modèles sont tous complètement évalués avant d'être passés au modèle. Ainsi, lorsqu'un de vos paramètres est un appel à un autre modèle, c'est le résultat de l'appel à l'autre modèle qui est transmis.

{{Thankyou/fr|reason=votre visite ({{Welcome}})|signature=Moi}}

devient

{{Thankyou/fr|reason=votre visite (Coucou! Bienvenue sur ce merveilleux wiki.)|signature=Moi}}

avant de devenir :

Exemple d'image (tournesols)
Un petit remerciement...

pour votre visite (Coucou! Bienvenue sur ce merveilleux wiki.).
bises, Moi

Dans un petit nombre de cas, cet ordre d'évaluation présente une différence avec la solution alternative (l'alternative étant de vérifier les résultats de l'appel au modèle pour voir s'il y a d'autres modèles supplémentaires à développer).

D'abord, le nom du modèle peut être expansé au même moment et de la même manière que les paramètres.

Ainsi

{{Thankyou in {{preferred language}}|signature=Moi}}

pourrait se développer en

{{Thankyou in French|signature=Moi}}

Ce qui fait qu'un modèle appelé Thankyou in French pourrait afficher le remerciement dans la langue préférée (pour autant que cela ait été défini).

Deuxièmement, le modèle à appeler ne peut construire un modèle à partir d'éléments qui seront appelés ultérieurement. Un modèle qui a pris la forme {{start of call}}{{end of call}} ne marchera pas si start of call était {{Thankyou/fr| et end of call était signature=Me}}.

Troisièmement, le paramètre à passer est expansé seulement une fois, plutôt qu'à chaque endroit où il est utilisé dans le modèle. C'est plus efficace sur le serveur mediawiki.

Enfin, le modèle qui est appelé ne peut empêcher les paramètres d'être développés ensemble. Même si un modèle utilise seulement un paramètre dans certaines circonstances, il aura toujours été développé avant que l'appel au modèle soit réalisé.

Exceptions concernant l'ordre d'évaluation

Dans quelques cas, les paramètres du modèle ne sont pas évalués avant d'être passés au modèle.

Les paramètres dans une balise d'extension subst: ne sont pas évalués, mais sont passés tels quels.

Certains mots magiques ne sont pas évalués comme des paramètres. Leur évaluation est différée car ils ont des effets de bord. Par exemple, {{foo| {{{DISPLAYTITLE:main page}}} }} ne fera pas :

  1. l'évaluation de DISPLAYTITLE
  2. le changement du titre de la page affichée
  3. l'appel de foo avec un paramètre 1 à blanc

à la place :

  1. DISPLAYTITLE ne sera pas évalué (pour l'instant)
  2. foo sera appelé avec le paramètre 1 valant : {{{DISPLAYTITLE:main page}}}
  3. si (et seulement si) {{{1}}} est évalué comme foo, alors le titre affiché sera changé.

Les mots magiques qui ont une évaluation différée ne sont pas tous documentés. Ceux qui sont connus incluent :

Récursivité dans les modèles

Appeler un modèle à partir de lui-même ne bloquera pas MediaWiki sur une récursion infinie. MediaWiki arrêtera la récursivité au modèle dont le nom figure en gras. Par exemple, si le contenu de "Template:Aaaa" est "{{Aaaa}}", il sera affiché "Template:Aaaa".

Contrôler l'inclusion des modèles

Par défaut, le contenu d'un modèle est affiché intégralement, qu'il soit affiché directement ou qu'il soit inclus dans une autre page. Cependant, vous pouvez contrôler quelle partie du modèle sera vue et incluse en utilisant les balises <noinclude>, <includeonly> et <onlyinclude>.

Tout ce qui est contenu entre <noinclude> et </noinclude> est affiché uniquement sur la page du modèle lorsqu'elle est affichée directement, mais pas lorsqu'elle sera incluse dans une autre page. Ceci est utile lorsque vous désirez inclure du texte ou du code dans un modèle, sans que ces éléments ne soient propagés sur les pages appelant le modèle, comme par exemple :

  • liens de catégorie pour la catégorisation du modèle lui-même
  • des liens interwikis pour les modèles similaires dans d'autres langues
  • texte d'explication sur l'utilisation du modèle

De manière équivalente, tout ce qui est contenu entre <includeonly> et </includeonly> sera pris en compte et affiché uniquement quand la page est incluse, et non pas quand la page du modèle est affichée directement, et ceci est utile dans les situations telles que :

  • Catégoriser les pages qui incluent le modèle. Note: quand vous changez les catégories appliquées à un modèle de cette manière, la catégorisation des pages qui incluent ce modèle peut ne pas être mise à jour immédiatement. Ceci est géré par la file des travaux . Pour forcer la re-catégorisation d'une page particulière, ouvrez cette page pour la modifier et enregistrez-la sans rien changer.
  • S'assurer que le code du modèle n'est pas exécuté lors de la lecture de la page même du modèle. Typiquement c'est parce que ce code attend des paramètres et que son exécution sans paramètres produit un résultat inattendu.

Tout ce qui est en dehors des balises <noinclude> et <includeonly> est pris en compte et affiché normalement, que ce soit sur la page même du modèle qui est affiché, ou sur une page où ce modèle est inclus. Le focus concerne ce qui se trouve entre ces deux balises.

Tout ce qui se trouve à l'extérieur des balises <onlyinclude> n'est pas pris en compte pour l'inclusion. Même les sections balisées includeonly sont exclues de l'inclusion à moins qu'elles ne soient également balisées onlyinclude. Le focus concerne ce qui se trouve à l'extérieur de cette balise.

Il est aussi possible d'imbriquer ces balises.

Les trois balises d'inclusion partielles autorisent toutes les combinaisons possibles de ce qui est traité et mis en forme. Les commentaires jouent aussi un rôle.

Organiser les modèles

Pour que les modèles soient effectifs, les utilisateurs doivent les trouver et savoir comment les utiliser.

Pour les trouver, les utilisateurs peuvent :

  1. cliquer sur Pages spéciales > Toutes les pages
  2. dans la liste des Espace de noms :, choisir Modèle et cliquer sur Lister.

Pour donner des informations sur l'utilisation, incluez un exemple comme celui-ci sur la page du modèle :

 
<noinclude> 
== Utilisation == 
Remercier les utilisateurs :
{{Thankyou/fr|reason=votre raison|signature=votre signature}} </noinclude>

Ensuite, l'utilisateur peut simplement copier et coller l'exemple pour utiliser le modèle.

Lier un modèle

Il est possible de faire un lien vers une page de modèle comme pour n'importe quelle autre page du wiki. Par exemple, le lien Template:Navbar est généré en utilisant le code wiki [[Template:Navbar]].

Sur de nombreux wikis, le modèle Template:Tl peut être utilisé pour fournir un lien vers un modèle, mis en forme d'une manière qui montre le code avec les "double accolades" qui est nécessaire pour transclure le modèle, sans effectuer réellement la transclusion. Par exemple, le code {{tl|Navbar}} peut être utilisé pour créer le lien {{Navbar}}.

Cette construction est couramment utilisée dans les pages de documentation des modèles, sur les pages d'aide, et sur les pages de discussion lorsqu'il est fait référence aux modèles. Le même objectif peut être atteint avec le code <code>{{[[Template:Navbar|Navbar]]}}</code>, mais l'approche utilisant le modèle {{tl}} est plus simple à saisir au clavier. Sur n'importe quel wiki, le modèle Tl, s'il est défini, peut normalement effectuer un rendu du texte encadré par des balises « code », comme montré ici. Si ce n'est pas le cas, il devrait exister un autre modèle avec un nom similaire pour réaliser la même chose. Voir, par exemple, la section « Voir aussi » dans la documentation du modèle en:Template:Tl sur la Wikipédia en anglais.

Copier d'un wiki à l'autre

Les modèles requièrent parfois du CSS ou d'autres modèles, les utilisateurs ont donc des problèmes lorsqu'ils copient des modèles d'un wiki à l'autre. Les étapes ci-dessous devraient fonctionner pour la plupart des modèles :

Code MediaWiki

Si vous avez les droits d'importation (particulièrement importupload) sur le nouveau wiki :

  1. Allez à Special:Export sur le wiki original, et téléchargez un fichier .XML avec l'historique complet de tous les modèles nécessaires, comme ceci :
    • Entrez le nom du modèle dans la grande zone de texte, par exemple "Modèle:Bienvenue". Faites très attention à la casse et aux caractères spéciaux - si le nom du modèle n'est pas correctement entré, l'export aura bien lieu mais le fichier .XML ne contiendra pas les données attendues.
    • Cochez la case « Inclure les modèles ».
    • Décochez la case Exporter uniquement la version courante, sans l’historique complet.
    • Cliquez sur « Exporter » .
  2. Allez à Special:Import sur le nouveau wiki et téléversez le fichier XML.

Si vous n'avez pas les droits d'importation sur le nouveau wiki :

  1. Allez sur le modèle que vous voulez copier sur le wiki source. Allez sur la page de modification, et copier tout le code wiki.
  2. Sur le nouveau wiki, allez sur la page de même nom que celui du modèle que vous avez copié. Cliquer sur créer ou modifier et coller le code copié. Dans le résumé d'édition de chaque modèle, liez à la page originale pour l'attribution des droits.
  3. De retour sur le wiki original, en dessous de la boîte d'édition, regardez la liste des modèles utilisés dans cette page. Pour chaque modèle listé, suivez ces mêmes instructions d'importation. Ainsi que pour les modèles utilisés par ces modèles, et ainsi de suite.

Cette procédure va copier entièrement le code nécessaire, et sera suffisante pour certains modèles. Si ça ne marche pas, vérifiez aussi qu'il n'y a pas de liens rouges sous pages incluses dans la version actuelle de cette page, au dessous de la boîte d'édition. Si il y en a, répétez les étapes ci-dessus pour chacun des liens corrigés.

Après avoir importé correctement le modèle et ses modèles liés depuis d'autres wikis, modifiez-le pour le personnaliser et l'adapter à votre wiki. Par exemple pour changer un logo, pour enlever les catégories redondantes ou faire disparaître les liens rouges.

Extensions

ParserFunctions est une extension souvent utilisée dans les modèles. Allez sur Extension:Fonctions d'analyse et vérifiez si parmis les fonctions affichées certaines sont utilisées dans les modèles que vous avez copiés. Si c'est la cas, vous devez installer l'extension ParserFunctions . Pour l'installer, vous avez besoin de l'accès administrateur système au serveur de votre installation MediaWiki.

Une autre dépendance qui peut être utilisée dans les modèles, notamment ceux de Wikipédia, est Lua. La présence de {{#invoke: }} dans le code des modèles est un bon indice de son utilisation. Dans le cas où il est utilisé, vous devez installer l'extension Scribunto et il faut avoir également l'accès administrateur. Voir cette page pour les instructions détaillées concernant l'installation et l'usage de l'extension.

Code CSS et Javascript

En plus du code MediaWiki, beaucoup de modèles font usage du CSS et certains emploient le Javascript pour fonctionner. Si les modèles copiés n'ont pas le comportement attendu, cela pourrait venir de cela. Pour copier le CSS et le Javascript requis sur votre wiki, vous devriez avoir besoin des droits d'administrateur, car vous devrez éditer les messages système dans l'espace de noms "MediaWiki:".

  1. Recherchez l'utilisation de classes CSS dans le texte de votre modèle (ex : class="foobar"). Si ces classes apparaissent dans « MediaWiki:Common.css » ou « MediaWiki:Monobook.css » sur le wiki d'origine, copiez-les dans « MediaWiki:Common.css » sur le nouveau wiki et vérifiez si le modèle fonctionne mieux.
  2. Si le modèle copié ne fonctionne toujours pas comme prévu, vérifier s'il y a du code dans "MediaWiki:Common.js" ou "MediaWiki:Monobook.js" sur le wiki d'origine. Si c'est le cas, vous pouvez essayer de le copier dans "MediaWiki:Common.js" sur le nouveau wiki. Normallement, le mieux serait de copier seulement le code issu de sources fiables, et de parcourir d'abord le code pour identifier et sélectionner les parties pertinentes. Vous devriez trouver des commentaires qui peuvent vous servir d'indice pour identifier la fonction de chaque partie.

Voir aussi

Liens externes