Help:Templates/fr

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 central de 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 Wikipedia) 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 " " (ou  dans les anciennes versions), qui l'assigne à cet espace de noms ; 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 :

sur n'importe quelle autre page, le texte "Bonjour ! Bienvenue sur le wiki." apparaîtra à la place de  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  à 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 :


 * : 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.
 * — 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.
 * — ceci a été introduit pour tenir compte des substitutions qui ne rompent pas la transclusion. Voir w:en:Help:Substitution.
 * inclut le modèle dans la syntaxe brute wiki, comme le ferait un.

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 :


 * inclut
 * inclut
 * inclut
 * est remplacé par le contenu de

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


 * inclut

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 :

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, 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 :

Notez l'utilisation de  et. C'est la manière d'identifier, à l'intérieur du modèle, les paramètres qui lui seront passés lorsqu'il sera 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 :

Dans ce cas, le modèle  reçoit les paramètres   et , ce qui produit :

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

produirait ce résultat :

Remarque : identifier les paramètres selon l'ordre (avec, etc.) marche seulement avec des paramètres anonymes. Si votre page identifie n'importe quel paramètre par un numéro ou un nom, comme vu ci-dessous, cette méthode ne sera plus disponible pour le modèle qui les reçoit.

Remarque : si le signe égal apparait dans l'argument d'un paramètre de modèle anonyme, ce paramètre peut être interprété à tord 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 :

Cette fois, le modèle  reçoit comme paramètres   et , même s'ils ont été fournis en ordre inversé, et produit le résultat :

Paramètres nommés
La troisième façon de passer des paramètres est par des noms, à la place de nombres. Dans ce cas, le contenu du modèle changerait pour :

Un petit remerciement... pour. bises,

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

Dans ce cas, le modèle  reçoit les paramètres   et   et produit le résultat :

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

produces:

L'avantage d'utiliser des paramètres nommés dans votre modèle, en plus d'être flexible dans l'ordre de passage des 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 :

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

À 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 :

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

Ordre d'évaluation
Les paramètres des modèles sont tous évalués avant d'être passés au modèle. Ainsi, lorsque un de vos paramètres est un appel à un autre modèle, ce qui est actuellement passé, c'est le paramètre expansé.

devient avant de devenir :

Dans un petit nombre de circonstances, 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 pourrait se développer en Ce qui fait qu'un modèle appelé  pourrait afficher le remerciement dans la langue préférée (pour autant que cela ait été determiné).

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 ne marchera pas si était et était.

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 developpés ensemble. Même si un modèle utilise seulement un paramètre dans certaines circonstances, il aura toujours été développé avant de faire l'appel.

Exceptions to the order of evaluation
In a few circumstance template parameters are not evaluated before being passed to the template.

Parameters to a  expansion are not evaluated, but are passed literally.

Some magic words are not evaluated as parameters. Their evaluation is delayed because they have side-effects. For example, would not instead
 * 1) evaluate
 * 2) change the display title of the page and
 * 3) call   with parameter 1 being blank
 * 1)   would not be evaluated (yet)
 * 2)   would be called with parameter 1 being
 * 3) only if   is evaluated in , would the display title of the page be changed.

Which magic words are evaluated late like this has not been fully documented. Known ones include:
 * DISPLAYTITLE

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 " ", il sera affiché "Template:Aaaa".

Contrôler l'inclusion des modèles
Vous pouvez contrôler l'inclusion par l'utilisation des balises  et.

Tout ce qui est contenu entre  et   est affiché uniquement sur la page du modèle et ne sera pas inclus. Les applications possibles sont :


 * la catégorisation des modèles
 * des interwikis pour les modèles similaires dans d'autres langues
 * l'explication de l'utilisation du modèle (nom des paramètres...)

Le contraire est. Tout ce qui est contenu entre  et   sera affiché uniquement quand le modèle est inclus. Une application évidente est d'ajouter toutes les pages contenant un certain modèle dans une catégorie, sans vouloir mettre le modèle dans cette catégorie.

Notez qu'il y a des problèmes de mise à jour : si vous changez les catégories dans un modèle, les catégories dans les pages contenant celui-ci ne seront pas mises à jour tant que la page n'est pas éditée.
 * 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, pour éviter l'affichage d'un résultat non désiré lorsque le modèle attend des paramètres.

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

Tout ce qui se trouve à l'extérieur des balises   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 trouver comment les utiliser.

Pour les trouver, les utilisateurs peuvent :
 * 1) cliquer sur ' > '
 * 2) dans la liste des ', choisir Modèle et cliquer sur '.

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

Utilisation
Remercier les utilisateurs :

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

Lier avec un modèle
A template page can be linked to like any other wiki page. For example, the link Template:Navbar is generated using the wikicode.

On many wikis, Template:Tl can be used to provide a link to a template formatted in a way that shows the "double curly-braces" wikicode necessary to transclude the template without actually doing the tranclusion. For example, the code  may be used to create the link Navbar.

This construct is commonly used in template documentation, on help pages, and on talk pages when referring to templates. The same effect can be achieved by using, but the tl approach involves much less typing. On any given wiki the Tl template, if it exists, may or may not render the text in a "code" element, as shown here. If not, another similarly named template may do so. See, for example, the "See also" section of the documentation of en:Template:Tl at the English Wikipedia.

Copier d'un wiki à un 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. La marche à suivre suivante devrait marcher pour la plupart des modèles :

Code MediaWiki
Si vous avez les droits d'import 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 :
 * 2) * Entrez le nom du modèle dans la grande zone de texte, par ex. "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.
 * 3) * Cochez la case «».
 * 4) * Décochez la case .
 * 5) * Cliquez sur "".
 * 6) Allez à Special:Import sur le nouveau wiki et téléversez le fichier XML.

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

S'il y a peu de choses à ex/importer + Vous êtes pressés et/ou n'avez pas les compétences pour mettre en place les droits d'import :
 * 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. Cliquer sur créer ou modifier et coller le code que vous avez 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éter les étapes ci dessus de même.

Après avoir importés le modèle et les modèles liées des autres wiki avec succès, modifiez le pour le personnaliser et l'adapter à votre wiki. Par exemple pour changer un logo, pour enlever les catégories redondantes ou les liens rouges.

''S'il y a pas mal de choses à ex/importer. Donc il vaut mieux obtenir les droits d'import ou les éléments permettant un ex/import efficace'' :

Extensions
ParserFunctions est une extension souvent utilisée dans les modèles. Visitez la page et vérifiez si certaines des fonctions listées sont utilisées dans les modèles que vous avez copié. Si c'est le cas, vous devrez installer. Pour cela vous aurez besoin des droits d'administrateur système pour accéder au serveur de votre installation MediaWiki.

Une autre dépendance utilisée dans les modèles, notamment ceux de Wikipédia, est Lua. La présence de balises  dans le code des modèles est un bon marqueur. S'il est utilisé, vous devrez installer l'extension et les droits d'administrateur système seront aussi nécessaires. Voir la page de l'extension pour plus d'instructions sur son installation et son utilisation.

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 en être la cause. Pour copier le CSS et Javascript requis sur votre wiki, vous devriez avoir besoin des droits d'administrateur, car vous devrez éditer les messages du système dans l'espace de nom "MediaWiki:".


 * 1) Recherchez l'utilisation de classes CSS dans le texte de votre modèle (ex :  ). Si ces classes apparaissent dans "MediaWiki:Common.css" ou "MediaWiki:Monobook.css" sur le wiki d'origine, copiez les (classes) dans "MediaWiki:Common.css" sur le nouveau wiki et vérifier si le modèle marche mieux.
 * 2) Si le modèle copié ne marche 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 servir d'indice pour identifier la fonction de chaque partie.

Voir aussi

 * - exemple d'utilisation spéciale des modèles.
 * – trucs et astuces que vous devriez trouver dans certains modèles.
 * - fonctions de contrôle fantaisistes comme #if et #switch
 * - règles sur l'utilisation des fonctions de l'analyseur dans les modèles
 * m:Aide:Modèle – manuel plus approfondi sur le fonctionnement exact des modèles.
 * m:Aide:Modèles avancés – des techniques encore plus avancées telles que l'appel de modèles dynamiques et des variables variables.
 * m:Aide:Pages inclues – ancrer des pages depuis des espaces de noms autres que.
 * Extension:PageTemplates
 * Extension:PageTemplates
 * Extension:PageTemplates
 * Extension:PageTemplates