Help:Template: Difference between revisions

Content deleted Content added
m Reverted edit by Zeru birhane (talk) to last version by Thx56
mNo edit summary
 
(17 intermediate revisions by 11 users not shown)
Line 1:
{{shortShort description|Main technical help page on templates}}
{{Redirect-multi|2|H:T|Wikipedia:Template|help regarding tables|Help:Table|content guidelines|Wikipedia:Template namespace}}
{{for|lists of commonly used templates|WP:Template index}}
{{For-multi|lists of commonly used templates|Wikipedia:Template index|a quick introduction to templates|Help:A quick guide to templates}}
{{Redirect|H:T|help regarding tables|Help:Table}}
{{Redirect|Wikipedia:Template|content guidelines|Wikipedia:Template namespace}}
{{Pp-semi-indef}}
{{Wikipedia how to|H:T|WP:TEMPLATE}}
{{beginner version|Help:A quick guide to templates}}
{{Wiki markup}}
A '''template''' is a Wikipedia page created to be included in other pages. Templates usually contain repetitive material that might need to show up on a larger number of articles or pages. They are commonly used for [[WP:Glossary#Boilerplate text|boilerplate]] messages, standardized warnings or notices, [[Help:Infobox|infoboxes]], [[WP:Navbox|navigational boxes]], and similar purposes. Templates can have parameters so that the same page generates different text on multiple pages that include it.
Line 11 ⟶ 10:
The most common method of inclusion is called [[Help:Transclusion|transclusion]], where the wiki source of the target page contains a reference to the template, using the {{tnull|{{var|Template name}}}} syntax. Another method is [[Help:Substitution|substitution]], where the content of the template is copied into the wiki source of the target page, just once, when it is saved.
 
[[Help:A quick guide to templates]] gives a brief introduction to the subject. There is further help from MediaWiki at [[mw:Help:Templates]] and [[mw:HelpManual:Advanced templates]].
 
==General description==
Line 30 ⟶ 29:
Calling a template causes it to be either ''transcluded'' or ''substituted'' in the page that calls it (the ''target page'').
 
[[Wikipedia:Transclusion|Transcluding]] a template means that when MediaWiki <em>displays</em> the page, it treats the template as if it were directly in the page’s source. [[Substitutionary atonementWikipedia:Substitution|Substituting]] a template differs in that it inserts the content of the template permanently into the target page when it is <em>saved</em>
and subsequent editors cannot tell that it originated from a template.
 
Line 57 ⟶ 56:
The value of a parameter can be an [[empty string]], such as when the pipe (<code>|</code>) or equals sign is followed immediately by the next pipe or the closing braces. For example, <code><nowiki>{{Template name|1=|2=test}}</nowiki></code> produces the same output as <code><nowiki>{{Template name||2=test}}</nowiki></code>. This is different from not specifying the parameter at all, which results in a default value, although templates are often coded so as to behave the same in both cases.
 
If a template call specifies a parameter which is not defined in the template, it has no effect. Editors sometime specify a parameter they know is not defined in the template, &mdash; Forfor example, editors sometimes include a parameter like {{tag|reason|open}} to add a brief explanation within the source as a [[Wikipedia:Manual of Style/Hidden text|hidden comment]]. (But some templates, such as [[Template:Requested move|Requested move]], are programmed to show the reason parameter if provided). Certain templates, especially complex ones like [[Wikipedia:Infobox|infoboxes]], may use the [[Module:Check for unknown parameters|check for unknown parameters module]] to alert editors about any [[:Category:Unknown parameters|unrecognized parameters]] to helpthey avoidcode unintentionalby errorsmistake.
 
 
If a parameter is specified as blank (e.g., {{para|1}}), it is treated as an empty string, which differs from leaving it out altogether (in which case the default value applies). However, templates are often coded to act the same in both cases.
 
==== Whitespace handling ====
Line 75 ⟶ 71:
*Setting a limit: You can write the template to handle a fixed number of parameters by manually specifying each one (e.g., up to 10 or 20 parameters).
 
*Using templates or [[Wikipedia:Lua|modules]]: For cases needing a flexible number of inputs, templates can use Lua modules or helper templates (like <nowiki>{{mfl|separated entries|main}} or {{tl|separated entries}}</nowiki>). These helper tools provide more advanced handling, such as counting or iterating through parameters, enabling the use of multiple inputs without setting an exact number.
 
However, modules can bypass this limitation. For simpler cases, the separated entries module expands all sequential parameters and lets you set custom delimiters. For more advanced usage, the {{mfl|params}} module enables counting, listing, mapping, filtering, and handling a variable number of parameters without prior knowledge of the exact number.
 
Templates that accepts an open number of parameters are often collected under [[:Category:Variadic templates]].
This workaround allows it to <em>appear</em> as if a template handles a variable number of parameters because the module processes each one iteratively up to a certain point, but true infinite flexibility is not built into the core MediaWiki system.
 
===Examples===
Line 161 ⟶ 157:
 
If a parameter is not specified in the template call, then the parameter reference is not replaced with anything -- it is expanded literally; this means that if the template call does not specify the parameter "xxx", the wikitext <code><nowiki>{{{xxx}}}</nowiki></code> inside the template expands to literally ''<nowiki>{{{xxx}}}</nowiki>'' (not the null string you may have expected). You can get a more useful behavior by specifying a default value in the parameter reference. Do this with the ''pipe syntax'': <code><nowiki>{{{xxx|dflt}}}</nowiki></code> specifies the default value <code>dflt</code> for the named parameter "xxx", and <code><nowiki>{{{1|dflt}}}</nowiki></code> specifies the default value <code>dflt</code> for the first unnamed parameter. Most often, one specifies a null default value, such as <code><nowiki>{{{1|}}}</nowiki></code> or <code><nowiki>{{{xxx|}}}</nowiki></code>.
 
If a call sets a parameter to the empty string like <code><nowiki>{{Template name|xxx=}}</nowiki></code> then <code><nowiki>{{{xxx|OK}}}</nowiki></code> will produce the empty string and not the default value "OK". Many users will expect that an empty parameter gives the same result as omitting the parameter. You can achieve this with: <code><nowiki>{{#if:{{{xxx|}}}|{{{xxx}}}|OK}}</nowiki></code>. This says: If <code>xxx</code> is assigned a non-empty value then use <code>xxx</code>, otherwise use "OK". If the default value is the empty string then you only have to write <code><nowiki>{{{xxx|}}}</nowiki></code>.
 
You can use default parameter values to effect a parameter alias:
Line 308 ⟶ 306:
When a subtemplate contains unmatched braces—as in <syntaxhighlight lang="text" inline>{{lb}}}</syntaxhighlight>—the unmatched braces are treated as text during processing—they do not affect the parsing of braces in the calling template. But where the template is substituted, the unmatched braces will be parsed as braces when the page is subsequently displayed. This has little practical use, but can occasionally introduce unexpected errors.
 
See [[mmw:HelpManual:Advanced templates]] and [[mmw:HelpManual:Recursive conversion of wikitext]] for more information.
 
===<span id="Noinclude, includeonly, and onlyinclude"></span>Inclusion control: noinclude, includeonly, and onlyinclude===
Line 322 ⟶ 320:
! What is included {{em|there}} (calling page)
|-
|<code><nowiki><{{tag|noinclude> |content=&nbsp;{{bxt|text1 </noinclude> }}&nbsp;}}&nbsp;{{mxtn|text2</nowiki></code>}}
|<code>{{bxt|text1}} {{mxtn|text2</code>}}
|<code>{{mxtn|text2</code>}}
|-
|<code><nowiki>&lt;{{tag|onlyinclude|content=&gtnbsp; {{bxt|text1 }}&ltnbsp;/onlyinclude}}&gtnbsp; {{mxtn|text2</nowiki></code>}}
|<code>{{bxt|text1}} {{mxtn|text2</code>}}
|<code>{{bxt|text1</code>}}
|-
|<code><nowiki><{{tag|includeonly> |content=&nbsp;{{bxt|text1 </includeonly> }}&nbsp;}}&nbsp;{{mxtn|text2</nowiki></code>}}
|<code>{{mxtn|text2</code>}}
|<code>{{bxt|text1}} {{mxtn|text2</code>}}
|-
|{{tag|onlyinclude|content={{tag|includeonly|content=&nbsp;{{bxt|text1}}&nbsp;}} }}&nbsp;{{mxtn|text2}}
|<code><nowiki>&lt;onlyinclude&gt;<includeonly> text1 </includeonly>&lt;/onlyinclude&gt; text2</nowiki></code>
|<code>{{mxtn|text2</code>}}
|<code>{{bxt|text1</code>}}
|}
 
Line 425 ⟶ 423:
The displayed page content generated by a template call (which is the rendering of the expansion of the called template) is the ''template result''. The template result generated by the template call <syntaxhighlight lang="wikitext" inline>{{sic|constellation prize}}</syntaxhighlight> is "{{sic|constellation prize}}".
 
The ''name'' of a template is the name of the wikipediaWikipedia page (which is also the title of the page). The namespace is normally left off if it is "Template" (which it almost always is). Furthermore, it is customary to write the name with double braces, like a template call, to emphasize that it names a template. For example, "Use the {{tl|tm}} template to generate the trademark symbol." But don't go so far as to put a template name in the code font, to prevent confusion with an actual template call. {{tlf|tm}} is a template name, but {{tnull|tm}} is a template call.
 
Some template calls perform a tagging function; such a template call is often called a ''tag'', as in, "If you are in the middle of a major edit, place an {{tl|in use}} tag at the top of the page." This is one of many ways the term "tag" is used in Wikipedia.