Help:Template: Difference between revisions
Dubiousjim (talk | contribs) (Expand/reorganize) |
Dubiousjim (talk | contribs) (Update note about ParserFunctions) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
This page is about designing templates more than using them. For details of how to use existing templates, see [[ | This page is about designing templates more than using them. For details of how to use existing templates, see [[Help:Editing]] or the documentation for [[Special:AllPages/Template:|any template]]. | ||
Line 12: | Line 12: | ||
== If-templates == | == If-templates == | ||
Templates have a limited condition-testing functionality. The following | Templates have a limited condition-testing functionality. The following are based on code from the MediaWiki manuals: | ||
<dl> | <dl> | ||
Line 38: | Line 38: | ||
</dl> | </dl> | ||
Now that we've upgraded to MediaWiki >= 1.19.1, though (currently at 1.26.2), we <em>would</em> be able to use {{lb}}#if:<var>value</var>|<var>result</var>|<var>resultno</var>{{rb}} and {{lb}}#ifeq:<var>value</var>|<var>test</var>|<var>resultyes</var>|<var>resultno</var>{{rb}}, which don't suffer the above limitations. Here are [http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions more details.] However, it seems that won't work until the ParserFunctions extension [[Special:Version|is enabled]]. | |||
== Template arguments == | == Template arguments == | ||
Line 53: | Line 53: | ||
<code>{{lb}}ns:0{{rb}}</code> expands to the empty string. | <code>{{lb}}ns:0{{rb}}</code> expands to the empty string. | ||
If your template arguments are unexpectedly expanding as {{{1}}}, then you neglected to supply the argument; or you supplied text that the wiki markup engine is interpreting in a way you didn't expect. You can stop this from happening by surrounding the relevant text with <code><nowiki></code> tags. For example, instead of: | |||
<pre>{{Cmd|export PS1="(chroot)$PS1"}}</pre> | |||
use: | |||
<pre>{{Cmd|<nowiki>export PS1="(chroot)$PS1"</nowiki>}}</pre> | |||
A shorter alternative is to explicitly name the first argument: | |||
<pre>{{Cmd|1=export PS1="(chroot)$PS1}"}}</pre> | |||
See also [[Help:Editing#cat|the escape characters for {{lb}}Cat{{rb}}]], which can be used inside any template invocation. | |||
== Skeleton for a new template == | == Skeleton for a new template == |
Latest revision as of 11:25, 30 May 2017
This page is about designing templates more than using them. For details of how to use existing templates, see Help:Editing or the documentation for any template.
Including
To include a template---or any page---in another page:
{{T}}
includes Template:T{{:Page name}}
includes Page name{{subst:T}}
or{{subst::Page name}}
are instead replaced by the current contents of Template:T or Page name{{msgnw:T}}
includes Template:T in<nowiki>
style
If-templates
Templates have a limited condition-testing functionality. The following are based on code from the MediaWiki manuals:
- {{Ifn|value|result}}
-
Yields result if value isn't blank.
(Compare shell's
if [ -n "value" ]; then result; fi
) One limitation: {{ifn|2=result}} yields result (but works properly if value is defined and empty). - {{Ifz|value|result}}
-
Yields result if value is blank.
(Compare shell's
if [ -z "value" ]; then result; fi
) - {{If|value|resultyes|resultno}}
-
Yields resultyes if value isn't blank; otherwise it yields resultno.
(Compare shell's
if [ -n "value"]; then resultyes; else resultno; fi
) One limitation: {{if|2=resultyes}} yields resultyes (but works properly if value is defined and empty, or resultno is defined). - {{Ifeq|value|test|resultyes|resultno}}
-
Yields resultyes if value equals test; otherwise it yields resultno.
(Compare shell's
if ["value" = test ]; then resultyes; else resultno; fi
)
Now that we've upgraded to MediaWiki >= 1.19.1, though (currently at 1.26.2), we would be able to use {{#if:value|result|resultno}} and {{#ifeq:value|test|resultyes|resultno}}, which don't suffer the above limitations. Here are more details. However, it seems that won't work until the ParserFunctions extension is enabled.
Template arguments
In the template's expansion markup, {{{1}}}
will expand to the first (implicitly named) argument, and {{{2|default}}}
will expand to the second but default to default if the second argument is not supplied. Note that if the template is invoked as {{Foo|arg1|}}
, then the second argument has been supplied; here it's the empty string.
Arguments can also be explicitly named/numbered, as when you invoke {{Foo|bar=arg1|2=}}
. Arguments supplied in these ways have leading and trailing whitespace trimmed. (Whitespace is preserved when arguments are only implicitly named.)
To suppress expansion of an argument's contents, wrap {{{argument}}}
with {{#tag:nowiki|...}}
; see Template:Cat for an example.
Inside a template's expansion markup, substrings beginning with *
, #
, :
, or ;
are automatically prefixed by a
newline. Use start{{{dummy|;}}}finish
to generate start;finish
. (The empty string may be used for dummy.)
{{ns:0}}
expands to the empty string.
If your template arguments are unexpectedly expanding as {{{1}}}, then you neglected to supply the argument; or you supplied text that the wiki markup engine is interpreting in a way you didn't expect. You can stop this from happening by surrounding the relevant text with <nowiki>
tags. For example, instead of:
{{Cmd|export PS1="(chroot)$PS1"}}
use:
{{Cmd|<nowiki>export PS1="(chroot)$PS1"</nowiki>}}
A shorter alternative is to explicitly name the first argument:
{{Cmd|1=export PS1="(chroot)$PS1}"}}
See also the escape characters for {{Cat}}, which can be used inside any template invocation.
Skeleton for a new template
<noinclude>{{Template}} Short description. === Usage === Longer description. <pre>{{Foo|arg}}</pre> Further comments. === Example === <pre>{{Foo|arg}}</pre> will produce: {{Foo|arg}} === See also === * [[:Template:Bar]] </noinclude><includeonly>EXPANSION</includeonly>