Aiuto:Template
From Meta, a Wikimedia project coordination wiki
Questa pagina non è ancora stata tradotta dall'inglese all'italiano o la sua traduzione deve ancora essere completata. Se desideri aiutarci nella traduzione sei pregato si modificare la pagina presente su meta e poi copiala sul tuo progetto. I due collegamenti sottostanti dovrebbero puntare alla pagina in inglese su meta e alla pagina in italiano su meta.
This page has not been translated from English to Italian or its translation is not yet finished. If you want to help us in translation, please edit the Italian page on Meta and copy it to this page. The two links below should point to the English page on Meta and to the Italian page on Meta.
Questa pagina è una traduzione della corrispondente pagina del manuale in inglese di MediaWiki.
Puoi consultare (in inglese) le linee guida del manuale | la Politica editoriale
in a template called "Row1" and a table row like <tr><td>1</td><td>2</td></tr> in a template called "Row2", and you have tables like {| border="1" |a||b |- {{Row1}} |c||d |} and <table border="1"> <tr><td>a</td><td>b</td></tr> {{Row2}} <tr><td>c</td><td>d</td></tr> </table> You will obtain:
I contenuti di una pagina possono essere inseriti in un'altra mediante i template.[1] Questa pagina e l'altra Help:Advanced templates formano il manuale di riferimento di MediaWiki sui template. See also User:Happy-melon/Templateshttp://meta.wikimedia.org/wiki/User:Happy-melon/Templates. Per l'introduzione, c'è A quick guide to templates e mw:Help:Templates. Per la sintassi relativa Help:Parser function, Help:ParserFunctions e le altre "Advanced functioning" pagine elencate sotto. Note: The master version of this page is the page m:Help:Template on Meta-Wiki; template demos work there, but may not work if you are viewing a copy of this page on another project. [edit] FunzionamentoL'espansione del template si ha a tempo di visualizzazione della pagina [2] unless substitution is applied, in which case the wikitext is expanded before it is saved. The wikitext for the parameter name is expanded, see the parameter section for more information. [edit] GeneralThe template namespace is the namespace of pages with prefix "Template:".[3] Example: {{Template:Cat}} The namespace in this example is "Template". The page name is Template:Cat To insert a template on a page, use this format: {{name of template}}. To use the above example, {{Cat}}. This is called a template tag, and has two "brackets" on either side of the template page name, and doesn't include the "Template:" prefix. {{Template:Cat}} also works, but "Template:" is not necessary. Example: This reference in the wikitext causes insertion of the template content when the referring page is rendered. Various equivalent terms are:
In a what links here list, the message with id 'Istemplate' (talk) is used, by default "inclusion", sometimes "transclusion", currently on this wiki "transclusion". Terms too general to be used with "page", therefore only used with "template":
Depending on context "including" can be used as opposed to substituting the template. Pages in namespaces other than the "Template" namespace can also be used as templates, except for pages in namespaces specified in $wgNonincludableNamespaces. To use a page in the main namespace as a template, add a colon before the page name. Also it provides an alternative way of calling a template, which can be used in the case of a name conflict with a variable, e.g. Template:Ns:3 and Template:PAGENAME; while {{Ns:3}} and {{PAGENAME}} give User talk and Template, {{:Template:Ns:3}} and {{:Template:PAGENAME}} give demo and This is the content of Template:PAGENAME.. Using a page outside the template namespace as template can be useful for:
If the page to be transcluded does not exist, then a link to the edit page is produced (for conversion details see Template:Existshttp://meta.wikimedia.org/wiki/Template:Exists). Thus, one way of making a template is putting the tag first, and then following the link. An exception is that transclusion of a "non-existing" page in the MediaWiki namespace trancludes the default content of that page. In other words, apart from transcluding a page one can also transclude a system message in a specified language (by default the site language); the result is independent of the user-specified interface language. One can call a template that calls another template. If a template calls itself directly or indirectly, inclusion works only on one level for each template. The second-level inclusion is replaced by a link (possibly a self-link), with HTML comment: <!-- WARNING: template loop detected --> However, with templates redirecting to the template that one would want to call recursively, one can achieve recursion without having to make copies of the whole template content, with the number of levels limited by the number of redirects. See also Repetition within a page and template:List of template calls ( talk edit history links ). A variable in a template which depends on the page, e.g. {{PAGENAME}}, is expanded based on the referring page, not on the template. A list of pages embedded in a page (as recorded in the templatelinks table), all with links, is given on the edit page. Notes:
(Supported in version 1.4 and higher.) In a template name the character "#" and any characters after that are ignored: "{{tc#abc}}" gives "in". This is used in en:template:hif ( talk edit history links ). A wikitext with consecutive double opening braces and consecutive double closing braces is interpreted as containing a template parameter tag with triple braces. To avoid that, use a space in at least one of the two quadruples. For example, "{{{{tc}}}}" gives "{{{{tc}}}}", while "{{ {{tc}}}}" gives "Template:In". With Special:ExpandTemplates one can view the expanded wikitext a template call produces, as intermediate step toward rendering. The same is also produced with a URL like http://meta.wikimedia.org/w/index.php?title=Aiuto:Template&action=raw&templates=expand. [edit] Talk pagesEven if a template is intended for use on talk pages, the template page should not be put in a talk namespace, because there would be no page for discussing it. If it is for general use it is often put as usual in the template namespace, see e.g. w:Wikipedia:Talk page templateshttp://en.wikipedia.org/wiki/Wikipedia:Talk page templates and w:Wikipedia:Template messages/User talk namespacehttp://en.wikipedia.org/wiki/Wikipedia:Template messages/User talk namespace. An auxiliary template for personal use for a user talk page can best be put in a subpage of the user page, not one of the user talk page, for example "User:Abc/Talk intro" rather than "User talk:Abc/Intro"; this allows discussion of the template at "User talk:Abc/Talk intro". [edit] Case sensitivityAs usual the template name is case sensitive except (on most projects) for the first letter, and a blank space is equivalent with an underscore (as opposed to parameter names, see below: they are case-sensitive, even with respect to the first letter, and spaces are distinguished from underscores). [edit] Use of templates across projectsA template only works when referred to from a page in the same project. To use it in another project, one has to copy it to there. Bugzilla:1126 is a request to lift that restriction, i.e. allow interwiki use of templates. The adjustments needed in the copy, to work on the other project, can be reduced by using {{SERVER}}, localurl, and generic namespace names, and writing links in a way that works on multiple projects, e.g. m:Help:Table. For copying multiple templates, export and import can be helpful. It is also convenient if the template names can be the same on the other project. Therefore, when choosing template names, check which names are in use on other projects to which people might want to copy the templates. Note that if a template is referred to by something like abc{{NAMESPACE}}, a project with different namespace names requires a different template name, or a redirect. Transclusion across projects, hence changing contents from a central place, is only possible:
Sometimes multiple projects require pages which are partly the same and partly different. For example, on some projects "m:" is used as interwiki link to Meta, and on some projects "MetaWikipedia:". In this case a common wikitext can be used, calling project-specific templates. In the example the wikitext of the page could contain {{meta}}, and we would have on each wiki a Template:Meta containing the required prefix. [edit] ParametersA template parameter is a user-adjustable quantity that can change some aspect of the template. In a template, although the number of parameters (here two) can vary, the template is written in one of three ways:
For some technical details see the following footnote: [4] The defaults are optional, together with the pipe character in front, see below. Example:
[edit] Parameter mechanismA formal parameter[5] is a parameter tag with three pairs of braces {{{ }}}.[6] [7] [8] Example:
A parameter tag such as {{{3}}} or {{{3|stu}}} can both be referenced explicitly with e.g. 3=pqr, or implicitly by putting pqr in the third position among the unnamed parameter definitions. If the name is not a "small" positive integer it can only be referenced explicitly. Comparison between named and implicitly numbered parameters:
The default (optional, together with the pipe character in front) can be different for every occurrence, and applies if no value is specified when calling the template, not to be confused with the case that the empty value is specified. To distinguish between a parameter being defined and non-empty on one hand, or undefined or empty on the other hand, use #if: with a blank default:
To distinguish between defined (and possibly empty) and undefined, use:
In the case of page substitution with an undefined parameter, not the default but the parameter itself with default is substituted into the wikitext. If this is not desired, see Help:Substitution#Parameter_default_considerations for an alternative (it also uses the #ifeq just mentioned). [edit] Example: named parameter substitutionLet's create a template called Name-example (that is, the template will be Template:Name-example), with a parameter for the first name which we will call firstName, and a parameter for the last name which we will call lastName.
:I am a template example, my first name is '''{{{firstName}}}''' and my last name is '''{{{lastName}}}'''.
:
:You can reference my page at [[{{{lastName}}}, {{{firstName}}}]].
On a second page, type this: {{Name-example}} The result is:
Because the template has no parameters. But if we type this on the second page: {{Name-example | firstName=John | lastName=Smith}} The result will looks like this:
To analyse the working, one can apply Special:ExpandTemplates to see the expanded wikitext as intermediate result: :I am a template example, my first name is '''John''' and my last name is '''Smith'''. : :You can reference my page at [[Smith, John]]. When this wikitext is applied directly the resulting rendering is the same. [edit] Example: numeric parameter substitutionAn example of how the contents of a parameter function. Let us first define a template with the name t1demo, which will
the definition of course being on page Template:t1demo.
If something like {{{1}}} or in fact any {{{name}}} is visible on an ordinary page it typically indicates that a mandatory parameter of a template used on this page isn't defined. [edit] Declaring a default value
Let us define a template with the name t which contains a single numbered parameter 1 with a default of pqr. The only difference between the effects of t and t1demo appears when they are called with no parameter (and no "|"):
the definition of course being on page Template:t.
[edit] Restrictions on parameter valuesAn implicitly named parameter can be assigned a value containing an equals sign, but only indirectly. Methods (here with example using template:t1demo ( talk edit history links )) include:
The same example with "1= a=b " gives start-a=b-end. With the old preprocessor the "=" in "class=error" disturbs the numbering of unnamed parameters, if one of them produces an error message: {{t1demo|{{#expr:1/0}}}} gives start-Expression error: Division by zero-end. Reasons for using an unnamed parameter include:
Any unmatched pairs of two consecutive braces or brackets must be placed in nowiki tags. Braces can be used for nested template parameters, nested templates or parser functions while brackets can be used for links. Unmatched pairs not placed in nowiki tags either prevent template expansion or are taken as closing braces for the template call. For example, using Template:t1demo containing "
Without restriction:
A parameter value can be quite long, see Help:Long parameter demo. [edit] A parameter value containing a pipe characterTo define a parameter value containing a pipe character (|) which is not part of a template call, parser function call, piped link or image tag, use Template:! containing "|". Using Template:t1demo containing "start-{{{1}}}-end<noinclude> [[Category:Demo template]]</noinclude>", compare {{t1demo|a{{!}}b}} giving start-a|b-end, {{t1demo|a|b}} giving start-a|b-end and {{t1demo|a|b}} giving start-a-end. The difference between the first and the second is that in the first case the expanded wikitext is start-a|b-end, while in the second case it is start-a|b-end. This is rendered the same in final output but makes a difference when used in table syntax: this requires the "real" pipe character. Using Template:2x containing "{{{1}}}{{{1}}}<noinclude>[[Category:Miscellaneous templates|{{PAGENAME}}]]</noinclude>",
{{2x|{{{!}}
{{!}} A
{{!}} B
{{!}}-
{{!}} C
{{!}} D
{{!}}}
}}
gives
{{2x|{|
| A
| B
|-
| C
| D
|}
}}
gives {| | A | B |- | C | D |} {| | A | B |- | C | D |}
{{2x|{|
| A
| B
|-
| C
| D
|}
}}
gives {{ Similar constructs can allow a parameter value to contain a double closing brace. Even a parameter name can contain "|" and "}}" in this way, but that seems of little use. However, a pagename cannot contain "|" or a brace. [edit] Mix of named and unnamed parametersIn the case of a mix of named and unnamed parameters in a template tag, the unnamed parameters are numbered 1,2,3,.., so they are not numbered according to the position in the mixed list as a whole. For example, {{t sup|foo=1|2|bar=3|4|5|6|7}} using Template:t sup containing "{{{1}}}-{{{2}}}-{{{3}}}<noinclude> [[Category:templates]]</noinclude>" gives 2-4-5. However, {{t sup|3=1|2|1=3|4|5|6|7}} gives 3-4-5. The first number shown is '3', because the setting of parameter 1 to the value '2' (by the first unnamed parameter) is overwritten by the later direct assignment of the value '3' to parameter 1. Similarly, the direct assignment of the value '1' to parameter 3 is later overwritten by the third unnamed parameter. [edit] When parameters do not expand
Parameters do not get expanded when they are inside nowiki tags or XML-style extension tags. Thus, the following will not work within a template, because the parameter is not expanded:
<myextension xparam={{{tparam}}}> ... </myextension>
[edit] More than three opening bracesIn the case of more than three opening braces the last three are interpreted as parameter braces. If there is no matching triple of closing braces the last two opening braces are taken as braces for a template or parser function. Thus {{{{a}}}} is parsed as { {{{a}}} }, e.g. {{{{t1demo|1}}}} gives "{1}", while {{ {{t1demo|1}}}} gives Template:Start-1-end and {{{{t1demo|1}} }} gives also Template:Start-1-end. Interestingly {{{{t1demo|1}} }} {{{5}}} gives Template:Start-1-end {{{5}}}. Furthermore, {{{{{a}}}}} is parsed as {{ {{{a}}} }}, e.g. {{{{{abc|tc}}}}} gives "in". Thus if an expression for a parameter name starts with a template or parser function a blank space is needed after the third brace, e.g. {{{ {{#if:x|tc|ab}}}}} gives the value of {{{ tc}}}, while {{{{{#if:x|tc|ab}}}}} gives "in" (using the default value tc of parameter #if:x, and ignoring "|ab"). With 6 braces, e.g. {{{{{{a|b}}}|c}}} gives c. [edit] Monitoring parameter usageTo monitor the usage of a parameter of a template (in the case that many pages use the template), this template can call an auxiliary template of which the name depends on whether the parameter is defined. The possible auxiliary templates need not exist, if they are e.g. used as parameter value of template:voidd ( talk edit history links ), to avoid displaying anything (with the new preprocessor template:void ( talk edit history links ) cannot be used for this anymore). Applying "What links here" to the possible auxiliary templates shows which pages use the template with the parameter, and which pages use the template without the parameter. This parameter usage monitor facility should preferably be built into the template when creating the template or introducing a new parameter. If it is done afterwards "What links here" may not show a page until it has been refreshed by an ordinary or dummy edit or purge. Applications of monitoring parameter usage include:
In a similar way an auxiliary template can be called for a "template / parameter / parameter value" combination or "template / parameter / parameter value range" combination. "What links here" then shows which pages use the template with this parameter value, or with the parameter in the given range. See template:T optional parameter demo ( talk edit history links ). [edit] Template tag lay-outTo have a desired template tag lay-out, especially in the case of many parameters, additional dummy parameters can be used with a newline, spaces, and/or comments. In the case of unnamed parameters, this means that some parameter numbers are not used in the template content, so that their values, present in the template tag, do not affect the rendering of the template. For example, using Template:t3d containing "{{{1}}} {{{2}}} {{{3}}}<br /> {{{5}}} {{{6}}} {{{7}}}<br /> {{{9}}} {{{10}}} {{{11}}}",
{{t3d |a|b|c| 1
|d|e|f| 2
|g|h|i| 3
}}
gives: a b c If parameters are named, dummy parameters can easily be inserted at any time. If they are unnamed, then, to avoid renumbering, one can insert named parameters: any text including an equals sign will do, if the text on the left is not one of the parameter numbers: this text is interpreted as the name of an unused parameter, hence ignored. Example: Using template:Chess position ( talk edit history links )
{{chess position|=
8 |rd|nd|bd|qd|kd|bd|nd|rd|=
7 | |pd|pd|pd|pd|pd|pd|pd|=
6 |pd| | | | | | | |=
5 | | | | | | | | |=
4 | |pl| | | | |pl| |=
3 | | | | | | | |bl|=
2 |pl| |pl|pl|pl|pl| |pl|=
1 |rl|nl|bl|ql|kl| |nl|rl|=
a b c d e f g h
|30}}
which gives
In this example, the 1 to 8 row numbers and a to h column numbers (as well as their surrounding spaces and newlines) in the parameter list are hidden within a dummy parameter (with an empty name before the equal sign). The template generates a HTML table where each cell contains an image whose name is dynamically generated from the 64 first automatically numbered parameters (there are intermediate parameters within the numbered list, but as these dummy parameters are named explicitly, they don't increment the parameter number used to generate default parameter names. So the parameter with autogenerated name "1" effectively contains the "rd" value). The template is then called with a parameter list that contains:
Note also that all parameters are trimmed, so the parameter with autogenerated name "9" (at position a7 on the chessboard above) is assigned the empty string value. [edit] Relative name for transcluded pageA page A can transclude a subpage A/B using {{/B}} or, with more control over the name of the page to be transcluded, this name can be constructed from {{PAGENAME}}. This allows copies of the same wikitext in different pages to transclude different pages. Thus for example, the same wikitext, adapted from [3], containing a list of calls {{/lang|..}}, can be used in various ways on different pages, for example List of Wikipedias/lang/demohttp://meta.wikimedia.org/wiki/List_of_Wikipedias/lang/demo (talk, backlinks, edit) and List of Wikipedias/local nameshttp://meta.wikimedia.org/wiki/List_of_Wikipedias/local_names (talk, backlinks, edit), by varying the content of the subpage. A transcluded page need not use all the specified parameters. Two pages can share the same transcluded page using a redirect. [edit] Template pageWithout noinclude and includeonly parts the following are identical:
Thus the defaults are shown, e.g. Template:T 1 containing " [edit] Template page if no defaults have been specifiedIn simple cases this corresponds to treating the parameter tags as ordinary text, for example: "{{t2demo}}" (using Template:t2demo containing start-{{{1}}}-middle-{{{2}}}-end<noinclude>[[Category:Demo template]]</noinclude>) gives start-{{{1}}}-middle-{{{2}}}-end Similarly, if part of the parameters is undefined, only those show up as {{{parameter number or name}}}. However, often the rendered page produces a seemingly arbitrarily mutilated version of its content:
For parameters without default a workaround is less needed because the result in the case a parameter is undefined is of limited use anyway. If one wants it anyway one can put nowiki tags around the parameter; for the first example this gives "{{{1}}}p". Less surprising, but nevertheless limiting the usefulness of the result are:
In such cases includeonly can be used to avoid uninformative and messy rendering on the template page, but either way a disadvantage during template development is that preview does not (meaningfully) reflect changes in the parts of the page outside the noinclude tags (i.e. the included parts). Therefore it can be useful to provide representative default values, even if that is only done temporarily during development of the template. With noinclude an informative template page can be produced, containing more demos and test cases than just the single default set. Typically, the noinclude-part of a template page contains examples including or substituting the template. Changes in the working of the template (i.e. changes outside the noinclude-part) are not yet effective in these examples in preview and, in the case of substitution, in "show changes". However, they are reflected in the rendered page after saving. Some formatting aspects may show up which are not readily seen from the edit box. [edit] A parameter value depending on parametersAs mentioned above, if a parameter is left undefined, the triple braced parameter name in the result does not function as a parameter if the page is called as a template from another page; if it should, do not omit the parameter value but specify it in terms of a parameter of the calling page; compare:
The most straightforward way of expressing a parameter value in terms of a parameter is using the same name and making it equal, e.g. {{Lan is|lr=af|le={{{le}}}}} in Template:Lan is mr. [edit] Empty vs. undefined{{t2demo||a}} makes the first parameter equal to the empty string rather than leaving it undefined: it gives start--middle-a-end, just like {{t2demo|1=|2=a}}: start--middle-a-end. By specifying parameter name "2" explicitly, the first unnamed parameter can be left undefined: {{t2demo|2=a}} gives start-{{{1}}}-middle-a-end. If the parameter is used in a tag like <font size> the default text may give invalid code that is conveniently ignored, rather than resulting in perhaps ugly code being rendered (but this may depend on the browser). See e.g. Template talk:Fontsizehttp://meta.wikimedia.org/wiki/Template_talk:Fontsize. Parameter names (as opposed to template names) are case-sensitive, even with respect to the first letter, and spaces are distinguished from underscores. The empty stringhttp://en.wikipedia.org/wiki/String_(computer_science)#Formal_theory is also a valid parameter name, see Template:T empty string as parameter namehttp://meta.wikimedia.org/wiki/Template:T_empty_string_as_parameter_name. Parameter 02 is distinguished from parameter 2: using Template:t pl0 containing " Note that parameters in the system messages (MediaWiki namespace]] are written differently: as $1, $2, etc. [edit] msgnwThe prefix msgnw (short for "message, nowiki") is used to display within a page, more or less, the wikitext of another page. Differences are:
This function has been used for displaying the wikitext of a template which is active on inclusion. However, with the introduction of noinclude tags, msgnw displays a mix of that with wikitext for rendering the template page itself, with these and includeonly tags. For example, for template:msgnw demo ( talk edit history links ):
jkl mno </includeonly><noinclude>[[Category:Demo template]]</noinclude>" [4] (in the expanded wikitext, as seen with ExpandTemplates, the characters <>'[]{|& are replaced by codes). [edit] UsageA template is useful for any text for which one wants a copy in two or more pages, and there is no need for each copy to be edited independently to adapt it to the page it is in. Since parameters can be used, versions may to that extent even be different, and parameter values can be edited independently for each. Templates are not only convenient, but they can also "force" a useful uniformity. See also w:Subroutine#advantages of subprogramshttp://en.wikipedia.org/wiki/Subroutine#advantages_of_subprograms. A template can also provide structure (e.g. a table structure, colors, and other formatting) while the content varies (fully or partly) through parameters and variables. A template can also carry out computations, comparisons, etc. using ParserFunctions, where the result(s) vary again through parameters and variables. See e.g. m:Category:Mathematical templates. Typical applications are:
Various combinations are possible. E.g., the last two could be combined, so that e.g. every language version of Wikipedia has the same Infobox Countries template (for each project a copy, because the template mechanism can not import across projects), which has parameters for the data, and refers to templates with translations of standard terms. See also Help:Advanced templates. [edit] Composite pagesThe wikitext of a page may (partly or fully) consist of tags for the inclusion of component pages. The "templates" are not necessarily in the template namespace, and may be more or less self-contained pages by themselves. A disadvantage of putting the components in the template namespace is that the component page may, by itself, be of a nature that it belongs in e.g. the main namespace, while the prefix would suggest otherwise; also the prefix would clutter the pagename. Examples are:
This allows the user the choice between viewing the component pages separately or combinedly. One may want to view a page separately if one has a slow connection; also sometimes people have sentimental reasons for having a separate page about a topic, e.g. a village. Viewing the combined page is much more convenient if there are many small component pages; even if a subbtopic page does not provide additional info, if it exists anyway, and is linked to, it is useful to display the content (making clear that the whole content is shown), it saves the trouble of checking the contents by following the link. In the latter case the search function of the browser can be used for searching in the combined page. Similar to the section editing feature, it allows editing a component page; however, there is no possibility to have the combined wikitext in the edit box. Edit history, recent changes, watching pages, and "what links here" work separately for the component pages and the composition page, not for the composite page. Related changes works for the component pages and for the composite page. Page protection can be set for selected component pages and for the composition page, not directly for the composite page. The talk page of a composition page is used to talk about the composition and the page in general, and could in addition be a composite page of the talk pages of the component pages. A composite page has an integrated TOC and section numbering; the numbering is not reset for each component page. Editing a section of a component page can be done directly from the composite page, see editing sections of included templates. After saving, one ends up at the page for the component page to which the section belongs. On projects with the interlanguage link feature the composite page shows the combined interlanguage links of all component pages, hence possibly multiple links for one language or even for one page. For easy access to the component pages, links to them on the composite page (for example by self-links on the component pages) are convenient. Alternatively, access is through section editing, or, if the component pages are in the template namespace, through the list of templates called from the composite page, at its edit page. Conversely, for easy access from a component page to the composite page(s) that call(s) it (if there are not too many of them) it is convenient to link the component page to them (on a composite page one becomes a self-link). See also w:Wikipedia talk:Template namespace#transcluding prose. [edit] Pages with a common sectionA section on the relationship of the subjects A and B, or a subtopic equally relevant for A as for B, can be put both in page A and in page B, by making it a separate page C, called as a template from A and B. Remarks:
Examples:
For various remarks which also apply here, see also the previous section. [edit] Repetition within a pageFor a succession of similar pieces of content, as in a list, a computer program would use a loophttp://en.wikipedia.org/wiki/Conditional_branching#Loops. What comes closest in MediaWiki is putting the loop body in a template, and calling the template repeatedly, usually with a varying parameter value. This is somewhat primitive for a loop:
Example:
The list of template calls can be in another template, with the name of the called template equal to or depending on a parameter, see e.g. template:Do for every Dutch municipality ( talk edit history links ). For repetition of the same text the loop body can be a parameter, e.g. template:5x ( talk edit history links ). A double loop is achieved by a second template that repeatedly calls the first. Similarly for a triple loop, etc. See e.g. w:template:ld ( talk edit history links ), w:template:l2d ( talk edit history links ), and w:template:l3d ( talk edit history links ). An example where the same template is used for different loop levels is template:Loop 2 ( talk edit history links ). Because the software has a built-in protection against infinite nesting (if there is, there will be an error e.g. Similarly Template:Lanlp 1 is used for both the inner and the outer of a double loop. Adding an item (here a language) adds to each row and also adds an extra row. Providing effective repetition without repetition of similar template calls in the wikitext A technique for repetition of similar template calls without actually putting this list in the wikitext is demonstrated in template:for ( talk edit history links ), and a more primitive method described below. Example (using Template:t2demo containing "start-{{{1}}}-middle-{{{2}}}-end<noinclude>[[Category:Demo template]]</noinclude>"): {{for loop|; |call=t2demo|pc1n=2|pc1v=constant|abc|def|ghi}} gives: start-abc-middle-constant-end; start-def-middle-constant-end; start-ghi-middle-constant-end Description of the old template:List of template calls ( talk edit history links ): For an arbitrary template with up to three nameless parameters, it is equivalent to calling the template repeatedly, with the first parameter varying, and the possible other parameters fixed: one specifies the name, the values of the fixed parameters, and the list of values the first parameter should have in consecutive template calls, with a sequential number each, and ending with "end". The technique requires redirects like template:List of template calls 3 ( talk edit history links ), as many as the maximum number of repetitions. If e.g. the second parameter varies, or two parameters, then a similar template can be made, but each version requires its own set of redirects. Example (using Template:t2demo containing "start-{{{1}}}-middle-{{{2}}}-end<noinclude>[[Category:Demo template]]</noinclude>"): {{List of template calls|t2demo|constant||abc|1|def|2|ghi|end|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}} gives (see the master copy m:Help:Template#Repetition within a page): start-abc-middle-constant-endTemplate loop detected: Template:List of template calls 1 The empty parameters are needed in accordance with the maximum number of parameters the repeated template can have (currently three) and the maximum number of repetitions. Putting more empty parameters than needed at the end does not matter, but the number of empty parameters in the beginning of the list should be correct. See also Help:Recursive conversion of wikitexthttp://meta.wikimedia.org/wiki/Help:Recursive_conversion_of_wikitext. [edit] Ambiguity of a reference to "this page"If a page is included in another page, a reference to "this page" on the included page is ambiguous. Use noinclude or includeonly tags depending on what is meant. Alternatively, mention the page name explicitly, without using {{PAGENAME}}. [edit] Noinclude, includeonly, and onlyincludeThis feature is not available before version 1.6. These features are applied as nesting pairs, or 'Blocks', as it is said they enclose the material so that they can be said to begin and end a block of wikitext (code).
Anything between <noinclude> and </noinclude> will be processed and displayed only when the page is being viewed directly; it will not be included or substituted. Possible applications are:
The converse is <includeonly>. Text between <includeonly> and </includeonly> will be processed and displayed only when the page is being included. Applications include:
Note that spaces and newlines between the general content and the tagged part belong to the general content. If they are not desired the include tag should directly follow the content on the same line: <noinclude>this is </noinclude>fine<includeonly>, closing tags are </includeonly><noinclude> less critical, but must be specified.</noinclude>
Nesting an includeonly block within a noinclude block (or vice-versa) is legal but pointless.
With <onlyinclude>wikitext</onlyinclude> on a page, the display of the wikitext so surrounded and the rest of the page (except includeonly parts) is rendered on the page itself normally (note: this means interwiki translation links will behave as normal external links, unless they are further bracketed by <includeonly>). The demo page below holds a full screenful of text and code, including several includeonly blocks as well as a single onlyinclude block as a demonstration. It is advisable to look at that page in edit mode. However, in transclusion, the page gives only the parts within onlyinclude blocks. Thus, using Help:Template/onlyinclude demohttp://meta.wikimedia.org/wiki/Help:Template/onlyinclude_demo (talk, backlinks, edit), on Meta {{Help:Template/onlyinclude demo}} gives def; it does not even transclude other blocks which are defined as includeonly parts, unless such are also within the onlyinclude block. So on a page with onlyinclude tags, text within includeonly tags is never rendered, i.e., it is reduced to wikitext comment. See also Help:Template/onlyinclude demo 2http://meta.wikimedia.org/wiki/Help:Template/onlyinclude_demo_2 (talk, backlinks, edit). See also Help:Category#Excluding_templates_and_selected_pages_from_categories.
Attempts to nest split pairs of these tags, or the similar <nowiki> and </nowiki> pair, won't work as expected. If say <nowiki> begins within the general page content, or in a "noinclude" part, or in an "includeonly" part, then it also has to be closed within the same part. The code [edit] Wiki markup at the beginning of a templateIf the first included character of a template is one of the Wiki markup characters :;*#, then it's interpreted as being at the beginning of the line (even when the template call is not). To avoid this effect use <nowiki>#</nowiki> or a numeric character reference (NCRhttp://en.wikipedia.org/wiki/Numeric_character_reference) or HTML entity, such as : for a colon. This NCR is also useful in conjunction with definition lists. [edit] Substitution
Putting "subst:" after the double opening braces causes an automatic conversion of wikitext when the referring page is saved: the subst tag is replaced by the wikitext of the template, with the parameter values substituted for the parameters. For optional multi-level substitution of templates add a substitution parameter with the empty string as default, e.g. {{{substp|}}}, after the opening braces in all calls of templates, parser functions and variables in templates, and add parameter definitions of the form "substq={{{substr|}}}" in all template calls within templates. Note that the use of multiple substitution parameters allows selective substitution. Maximum flexibility is obtained by making them all different. Sometimes a little less flexibility is needed; e.g. there may be a group of parser functions in a template for which it is sufficient to be able to choose between substitution of all or none in the group. To reduce, in the wikitext, undefined parameters with default to the defaults themselves, use the alternative way of specifying a parameter default. [edit] RedirectionWhen a page called for inclusion is a redirect page, the redirect target is included instead. As usual, a double redirect does not work. A page that consists of nothing else than the inclusion of another page as a template, shows similarities to a redirect to that other page, but also many differences, including:
Compare Help:Template namespacehttp://meta.wikimedia.org/wiki/Help:Template_namespace with Help:Template namespace - demo of alternative for redirecthttp://meta.wikimedia.org/wiki/Help:Template_namespace_-_demo_of_alternative_for_redirect. In a page that in turn includes such a referring page there is no difference.
[edit] Self-transclusionA page can transclude itself, but is protected against an infinite loop: the transclusion in the transcluded copy of the template is replaced by the bolded pagename. See Help:Self-transclusion demohttp://meta.wikimedia.org/wiki/Help:Self-transclusion_demo (talk, backlinks, edit) and Help:Self-transclusion demo 2http://meta.wikimedia.org/wiki/Help:Self-transclusion_demo_2 (talk, backlinks, edit). Transcluding on page A page B redirecting to page A allows more repetition, see Help:Self-transclusion demo with redirecthttp://meta.wikimedia.org/wiki/Help:Self-transclusion_demo_with_redirect (talk, backlinks, edit) with Help:Self-transclusion demo redirecthttp://meta.wikimedia.org/wiki/Help:Self-transclusion_demo_redirect (talk, backlinks, edit). If due to the use of braces hidden in a template (see Help:Recursive conversion of wikitexthttp://meta.wikimedia.org/wiki/Help:Recursive_conversion_of_wikitext) the saved wikitext of a page contains a substitution call to itself, then on the next save the substitution is applied for one level; the transclusion in the transcluded copy of the template is replaced by a link to the pagename. Thus it becomes a self link, i.e., it becomes bolded text with immediately following characters also bolded. This time the link is followed in the wikitext by the hidden message "<!-- WARNING: template loop detected -->"; see [7]; this edit was automatic by edit/save without making a change in the wikitext oneself. [edit] Parsing bracesIf some braces are "hidden" in a template, as in template:lb ( talk edit history links ), then parsing of pairs of double and triple braces is based on visible braces only. In the case of partial substitution, first parsing is done for the purpose of substitution, then parsing is done again for rendering:
With parser function #if instead of template:t1:
See also Help:Recursive conversion of wikitexthttp://meta.wikimedia.org/wiki/Help:Recursive_conversion_of_wikitext. [edit] Comparison of linking and embeddingLinking and embedding have in common:
[edit] Predefined templatesVariables and parser functions can be considered predefined templates. They do not have a page that defines in terms of wikitext what they do, because their action is something extra that cannot be constructed from more basic wikitext functionality. Some additional differences:
Ordinary and predefined templates have in common that their parameter values can depend on ordinary and predefined templates. In the case of named parameters, the names used in the template call can also depend on ordinary and predefined templates. This applies also for the named parameters of #switch. [edit] Template expansionExpansion of wikitext can be relevant even if the wikitext resulting from these subevaluations cannot have effect on the overall wikitext, because the expansion can have w:Side effect (computer science)#side effectshttp://en.wikipedia.org/wiki/Side_effect_(computer_science)#side_effects:
In the case of #ifexpr etc., either the then-part or the else-part is expanded, not both. Also the wikitext for the value of an unused template parameter is not expanded. See also ParserFunctions#Code_execution. [edit] Templates as table piecesTables using wikitable syntax can have pieces in templates. Tables using HTML syntax can not, by default. Thus, if you have a table row like |
1 | 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| a | b | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| c | d |
and
<tr><td>1</td><td>2</td></tr>
| a | b |
| c | d |
But if you set the variable $wgUseTidy HTML table will work too. It's false by default, but it is true in most Wikimedia projects.
See also conditional table row.
[edit] Templates in different versions of MediaWiki
[edit] Version 1.6
- More magic words and the parameter default mechanism were added.
- <noinclude> and <includeonly> (see above) were added.
[edit] Version 1.5
- More magic words were added.
[edit] Version 1.4
- Including the same template more than five times in the same page works from version 1.4, now on all Wikimedia sites. Also new was that subst can be used with parameters.
[edit] Version 1.3
- See, among other things, default values of parameters. Starting with version 1.3 the prefix "msg:" is generally optional.
[edit] Version 1.2.6
- In MediaWiki version 1.2.6, make a page MediaWiki:mytemplate and refer to it with {{msg:mytemplate}}. In this version parameters are not possible.
- Compatibility with 1.3, in the sense of having the content in Template:mytemplate, is possible with a redirect from MediaWiki:mytemplate to Template:mytemplate on the 1.2.6 project.
[edit] History
When ParserFunctions were not available yet, multiple assignments of parameters with the same name (and thus allowing parameter overrides) were ingeniously used to perform branching, e.g. in the now deleted en:Template:If defined.
[edit] Revision history of pages containing templates
Pages in the stored page history consist of wikitext with possible references to templates and images. When viewing an old version of a page, these refer to the current versions of the templates and images, if these still exist. Thus the former composite page is not reconstructed.
[edit] Other pages not primarily meant for direct viewing
Pages not primarily meant for direct viewing include, apart from templates:
- multilingual portal pages, see www
- CSS and JS pages, see Help:User style
- pages in the MediaWiki namespace, see Help:System message
- w:Wikipedia:Book sources, used by w:Special:Booksources
- m:Spam blacklist
[edit] Notes
- ↑ Questo processo è detto transclusionhttp://en.wikipedia.org/wiki/Wikipedia:Transclusion (comparable to calling a subroutinehttp://en.wikipedia.org/wiki/Subroutine facility). Una pagina concepita per questo scopo è definita template. I contenuti di un template page sono fissi o dipendono da parameters e/o variables. See: transclusion, creando un documento composto.
- ↑ Actually, for efficiency the result of the expansion may be cached and reused. The point is that when viewing the page after a change of the template, we see the new version of the page.
- ↑ this prefix can be used in all languages, but the canonical prefixes in languages other than English include Vorlage, Modèle, Sjabloon, with colon; the site WikiFAQ calls it Snippet.
- ↑ Template parameters are called-by-valuehttp://en.wikipedia.org/wiki/Parameter_(computer_science)#Calling_conventions, and therefore input parameters only (see also the section "Template expansion" below). Thus a template call has, after the template name, zero or more parameter definitions, separated by raw pipes (raw means here: in the wikitext, not just in the expanded wikitext, and not inside double or triple braces or double brackets). Furthermore, each parameter definition containing a raw equals sign is split around the first such equals sign into a parameter name and parameter value. In this stage the wikitexts for the parameter names are expanded, but not yet those for the parameter values. For any remaining parameter definitions the implicit numbers of the parameters are 1, 2, 3, etc. (so if there are also named parameters the implicitly numbered parameters are numbered according to the position among themselves, not the position in the mixed list as a whole). If a parameter would be assigned a value more than once (more than once as named parameter, or once as implicitly numbered one and once or more as named one), working from left to right through the mixed list only the last assignment is retained. The result is an associative array of parameter names and corresponding wikitexts for the parameter values.
- ↑ the placeholderhttp://en.wikipedia.org/wiki/Free_variables_and_bound_variables for the parameter value
- ↑ Also commonly called: brackets/curly parenthesis
- ↑ Optionally with a pipe and a default.
- ↑ A more technical explanation: The parameter names in assignments matching a formal parameter are selected. Only the wikitexts for the parameter values of these are expanded, as well as the defaults of the undefined ones, if specified. The template call is replaced by the template content, where the parameter tags with matching names are replaced by their values or defaults. The result of this step can be viewed by applying subst. While what was explained involved expansion of wikitext for the template name, all parameter names and selected parameters can involve recursion in expanding the template. To illustrate the above, a page with {{t1demo|{{ta}}|{{tb}}|{{tc}}={{td}}|1={{te}}|2={{tf}}}}, with template:t1demo ( talk edit history links ) only using parameter {{{1}}}, and giving start-start-pqr-end-end, transcludes templates tc and te only.
[edit] See also
- Help:Advanced templates
- Introductions:
- Transclusionhttp://meta.wikimedia.org/wiki/Transclusion
- Templates_A101 :A WikiBooks text on making text, box, and drop-control templates
- Help:A quick guide to templateshttp://meta.wikimedia.org/wiki/Help:A_quick_guide_to_templates
- mw:Help:Templates
- Help:Calculation
- Help:Parser function
- Help:ParserFunctionshttp://meta.wikimedia.org/wiki/Help:ParserFunctions
- Help:Parameter default
- Help:Magic words
- Help:Substitution
- Help:Template documentation
- Help:Variable
- Help:What links here
- Special:Mostlinkedtemplates - shows the number of pages in which each template is transcluded, not counting transclusions through redirects
- Special:Unusedtemplates - templates which are not transcluded (however, they may be used for substitution)
- interwiki transclusion
- MediaWiki help templates
- List of all templates on this server
- Templates of Wikimedia projectshttp://meta.wikimedia.org/wiki/Templates_of_Wikimedia_projects
- w:Wikipedia:Template namespacehttp://en.wikipedia.org/wiki/Wikipedia:Template namespace
- mw:Extension:ExpandTemplates
- mw:Extension:Labeled Section Transclusion - transclusion of part of a page
- w:Wikipedia:Template doc page patternhttp://en.wikipedia.org/wiki/Wikipedia:Template doc page pattern
- w:Wikipedia:Template_limitshttp://en.wikipedia.org/wiki/Wikipedia:Template_limits
- DynamicFunctions##arg:http://meta.wikimedia.org/wiki/DynamicFunctions#.23arg: - instead of including a page for given parameter values, this allows linking to a page for given parameter values. Syntax for parameter use: {{arg:parameter name|default}}. Syntax for linking: external link style with "¶meter name=parameter value" added to the URL.
- w:Wikipedia:Anatomy_of_a_templatehttp://en.wikipedia.org/wiki/Wikipedia:Anatomy_of_a_template
- w:Wikipedia:Transclusion_costs_and_benefitshttp://en.wikipedia.org/wiki/Wikipedia:Transclusion_costs_and_benefits
- mw:Manual:Parser.phphttp://www.mediawiki.org/wiki/Manual:Parser.php
| Sommario delle pagine di Aiuto - Pagine nel namespace Aiuto su: Meta b: n: w: q: wiktionary Per i lettori: Vai | Ricerche | URL | Namespace | Nomi delle pagine | Sezioni | Collegamenti | Puntano qui | Piped link | Collegamenti Interwiki | Reindirizzamenti | Variabili | Categorie | Pagine speciali |