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 ? That's because the philosophy of is that all true data in MediaWiki - including data, category information and anything else - should be stored within templates. Ceci pour plusieurs raisons :


 * templates provide a clear guideline for what information belongs in which pages, avoiding ambiguity about the data structure
 * templates hide the complex syntax involved in displaying and storing information, making editing easier
 * templates allow for easier changes to the structure and display, since a change across a large group of pages can potentially be done just in one place, instead of requiring edits to all of them.

provides a number of features that aid specifically in the creation and display of templates, unrelated to form editing. Ils sont tous décrits sur cette page. There is no technical reason why these features are all defined in ; theoretically  and   could be added to the  extension, or perhaps all of the features should go into a new extension. There is certainly an argument of convenience for keeping them in. In any case, there are no current plans to move these.



Simplification de l'affichage du modèle
defines two parser functions,  and , which together can considerably simplify the code needed to display a template call - and can also simplify the definition of any forms that make use of such a template.

The  function should be placed within a template's   tag. It holds the expected parameters for this template, along with any extra details about each one. An example call for this function, for a template called "Recipe", is: The allowed details (you could call them "parameters of parameters") are:


 * - specifies text that should be used to label this parameter's value, in both pages and forms. 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).
 * - if the extension is installed, specifies the field in the template's  table that this parameter corresponds to. If this is not set, the code looks for a field with the same name as this parameter.

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 :


 * - specifies what format the display should be in; options are  (the default), ,   and  .  displays an infobox on the right-hand side of the page, in the manner of Wikipedia;   displays a table that covers the whole page;   makes each parameter name a section header, with the value below it; and   displays all the template data as text, with the parameter names bolded.

To display all the data as a full-page table, you would simply have to call:



Valeur multiple pour le même champ
also defines the parser functions  and , which provide support for having multiple values for a single field, delimited by a comma or other character. 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. (The 'delimiter' parameter defaults to  and 'new_delimiter' defaults to   (note the extra space) if they are not set.) 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.