Extension:Page Forms/Page Forms and templates/fr

est en son cœur, un système pour modifier les appels de modèle dans les pages wiki. (bien qu'on puisse aussi modifier des sections de pages.) Voir pour une explication complète des modèles dans MediaWiki.

Pourquoi prend-il en charge la modification des modèles et des sections de pages, mais pas, disons, les balises de catégories de forme libre dans les pages ? C'est parce que la philosophie de est que toutes les données vraies de MediaWiki - y compris les données mêmes, les informations de catégorie et autres - doivent être stockées dans des modèles. Ceci pour plusieurs raisons :


 * Les modèles expliquent clairement quelles informations appartiennent à quelles pages, et évitent les ambiguïtés sur la structure des données
 * Les modèles masquent la syntaxe complexe impliquée dans l'affichage et le stockage des informations, ce qui facilite l'édition
 * Les modèles permettent de modifier plus facilement la structure et l'affichage, car un changement sur un grand nombre de pages peut potentiellement être centralisé en un seul endroit, sans la nécessité de modifier partout.

fournit un certain nombre de fonctionnalités qui aident spécifiquement à la création et à l'affichage des modèles, sans lien avec l'édition de formulaires. Ils sont tous décrits sur cette page. Il n'y a aucune raison technique pour que toutes ces fonctionnalités soient définies dans ; théoriquement,  et   pourraient être ajoutés à l'extension, ou peut-être que toutes les fonctionnalités devraient entrer dans une nouvelle extension. Il y a certainement un argument de commodité si on les garde dans. En tout cas, il n'est pas envisagé actuellement de les déplacer.



Simplification de l'affichage du modèle
définit deux fonctions d'analyse syntaxique,  et , qui ensemble peuvent considérablement simplifier le code nécessaire à l'affichage d'un appel de modèle - et peuvent également simplifier la définition de tous les formulaires qui utilisent un tel modèle.

La fonction  doit être placée dans la balise   d'un modèle. Elle contient les paramètres attendus pour ce modèle, ainsi que les détails supplémentaires pour chacun d'eux. Un exemple d'appel de cette fonction pour un modèle appelé "Recipe", est : Les détails autorisés (on pourrait les appeler « paramètres de paramètres ») sont :


 * - spécifie le texte qui doit être utilisé pour étiqueter la valeur de ce paramètre, tant sur les pages que sur les formulaires. Si aucune étiquette n'est définie, le nom du paramètre est utilisé comme étiquette.
 * - s'il vaut, le paramètre n'est affiché que si sa valeur n'est pas vide.
 * - spécifie que ce paramètre est destiné à contenir une série d'appels de modèle (c'est-à-dire un modèle à plusieurs instances).
 * - si l'extension est installée, il spécifie le champ de la table  du modèle auquel ce paramètre correspond. Si ce paramètre n'est pas initialisé, le code cherche un champ de même nom que le paramètre.

L'ajout d'un appel de  à un modèle aide de la manière suivante :


 * La fonction affiche la liste des paramètres de manière bien formatée sur la page du modèle.
 * Ces informations aident à l'affichage du modèle (voir la section suivante).
 * Certaines de ces informations sont également utilisées par les formulaires, ce qui simplifie la définition des formulaires.

La fonction  doit être placée dans la balise   d'un modèle. Elle gère l'affichage pour l'appel du modèle. Dans de nombreux cas, à condition que  ait été appelé, le   peut être assez simple. Pour un modèle avec l'appel  ci-dessus, par exemple, l'appel de   pourrait simplement ressembler à : Si, d'autre part, il n'y a pas d'appel à, alors l'appel de   doit ressembler à : Mais cela n'est pas recommandé.

Il y a un paramètre prédéfini que  peut avoir :


 * - spécifie le format dans lequel l'affichage doit être fait; les options sont  (par défaut), ,   et  .   affiche une boîe d'information (infobox) sur le côté droit de la page, à la manière de Wikipedia;   affiche une table qui couvre toute la page;   donne à chaque paramètre le nom d'un entête de section, avec la valeur en dessous de celle-ci; et   affiche toutes les données du modèle en texte, avec le noms des paramètres en gras.

Pour afficher toutes les données sous forme de table de page complète, il vous suffit d'appeler :



Valeur multiple pour le même champ
définit également les fonctions d'analyseur  et , qui fournissent un support pour avoir plusieurs valeurs pour un seul champ, délimitées par une virgule ou un autre caractère. These parser functions "map" some text processing onto each value. This can be as simple as turning each value into a link, although there can be more complex processing, like turning each value into a category tag, an image tag, a Semantic MediaWiki property tag, and so on.

and  can also be used outside of a template context, although this page does not really cover that usage.

L'appel générique pour cette fonction est :

La fonction divise la valeur par le délimiteur puis, pour chacun, applique le même mappage que 'formula' fait sur 'variable', puis relie toutes les valeurs en utilisant 'new_delimiter' - sauf pour la valeur finale, qui est jointe par 'conjonction' s'il est défini.

Par exemple: si vous avez un formulaire qui remplit le champ, et que vous voulez que les valeurs de ce champ soient séparées par des virgules et que chacune soit un lien, vous pouvez écrire ce qui suit dans le modèle :

Cette fonction mappe principalement une syntaxe de lien sur chaque valeur délimitée par les virgules dans le champ. (S'ils ne sont pas définis, le paramètre delimiter vaut par défaut  et new_delimiter vaut par défaut   ; notez l'espace supplémentaire). The user can thus enter all the values on the same line, with or without spaces around the commas. (Note, by the way, that the  is used here as an internal variable; any other string could be used as well, like  .)

The 'new_delimiter' parameter is especially helpful if none of the resulting values are actually displayed, because by default such a thing would show up as a string of commas. A common example of that is if the original value holds a list of category names, and each name gets turned into a category tag, but is not actually displayed.

To avoid displaying commas in that case, you should set the 'new_delimiter' value equal to a space. Using just  at the end won't work, because the MediaWiki parser will ignore it - instead, the easiest approach is to use , which gets translated into a space. Here is how such a thing could be called:

You can make the output look more like natural language by including a 'conjunction' value for the final delimiter, so that the output will look like, for example,  instead of just. Voici un exemple pour le faire :

If you use the 'CreateTemplate' or 'CreateClass' pages to create a template, and you specify that a field that can take more than one value, then an  call will be automatically added to the generated template.

There are some kinds of mapping that are complex enough that they cannot be placed in the  function. For this purpose, you can instead use the similar  function.

To use this function, first create a template that takes in a single field (it should be referred to in the template as ) and applies the mapping you would like to that field. Then apply  onto the main template field just as you would with , using the following format:

...where 'template' is the name of the mapping template in question.

For example: to display a (comma-separated) list of authors as a numbered list, you could first create a template called "Numbered author", with the following contents:

...puis appelez ceci :



Utiliser et   dans le délimiteur
For both  and , the string   in the value of either 'delimiter' or 'new_delimiter' will get converted into a space, while the string   in either parameter will get converted into a new line.

It should be noted that, if you want an actual line break to appear between values, you should have two newlines (i.e, ) as the delimiter, since MediaWiki requires two newlines in order to display a line break.



Pages spéciales basées sur des modèles
définit trois pages spéciales qui se rapportent aux modèles :


 * Special:Templates, qui liste tous les modèles du wiki,
 * Special:CreateTemplate, et
 * Special:CreateClass.

Les deux dernières pages (c'est-à-dire Special:CreateTemplate et Special:CreateClass) peuvent être utilisées pour générer automatiquement les modèles.