Difference between revisions of "Help:Parser functions in templates"
(Created page with 'When applying ParserFunctions to template parameters, a pipe symbol ("|") may be used to provide the empty string as default …') |
(→See also) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | When applying [[Help: | + | When applying [[Help:Parser functions|Parser functions]] to [[Help:Template|template]] parameters, a pipe symbol ("|") may be used to provide the empty string as default value, in order to indicate how to handle things if a parameter is or is not passed in. |
*<tt><nowiki>{{{1}}}</nowiki></tt> | *<tt><nowiki>{{{1}}}</nowiki></tt> | ||
Line 48: | Line 48: | ||
==See also== | ==See also== | ||
− | |||
*[[Help:Template]] | *[[Help:Template]] | ||
− | |||
− | |||
[[Category:Help|Parser functions in templates]] | [[Category:Help|Parser functions in templates]] |
Latest revision as of 21:24, 2 July 2010
When applying Parser functions to template parameters, a pipe symbol ("|") may be used to provide the empty string as default value, in order to indicate how to handle things if a parameter is or is not passed in.
- {{{1}}}
- Sample A
- {{#if: {{{1}}} | Parameter 1 is not defined, or is defined and non-null/non-empty. | Parameter 1 is null. It contains only empty string(s) or breaking space(s) etc.}}
- Result
- Parameter 1 is not defined, or is defined and non-null/non-empty.
- {{{1|}}}
- Sample B
- {{#if: {{{1|}}} | Parameter 1 is defined and non-null/non-empty. | Parameter 1 is not defined, or is defined but null. It contains only empty string(s) or breaking space(s) etc.}}
- Result
- Parameter 1 is not defined, or is defined but null. It contains only empty string(s) or breaking space(s) etc.
- Comparison
Condition of parameter 1 | Sample A: {{{1}}} | Sample B: {{{1|}}} |
---|---|---|
not defined | TRUE | FALSE |
defined but null/empty | FALSE | FALSE |
defined and NOT null/empty | TRUE | TRUE |
The second usage ({{{1|}}}) is often the desired way to handle situations where a parameter exists, but is comprised only of empty space.
One way to test whether a parameter was specified in a template call is thus: {{#ifeq:{{{v|}}}|{{{v|-}}}| v was specified (and may be empty) | v was not specified }}
In rare cases, a template behaves differently when a parameter is unspecified compared to when it is specified but empty. When this template is used by a wrapper template (which uses the same set of named parameters), one way to ensure undefined parameters remain undefined is as follows (the technique also works with numbered parameters):
<!-- wrapper template code --> {{wrapped_template| normal_parameter={{{normal_parameter|}}}| sensitive_parameter{{#ifeq:{{{sensitive_parameter|}}}|{{{sensitive_parameter|-}}}||x}}={{{sensitive_parameter|}}}| ... }}
Note that the wrapped_template receives a specified but empty normal_parameter in two cases: when normal_parameter is specified and empty, and when normal_parameter is unspecified (because the default empty value is then specified by the wrapper template).
By contrast, the wrapped_template receives a specified sensitive_parameter only when it is indeed specified, because the #ifeq changes the wrapped_template parameter name to « sensitive_parameterx » when sensitive_parameter is undefined. Note also that wrapped_template receives a specified and empty sensitive_parameter only when the wrapper template receives a specified and empty sensitive_parameter. Of course, one must make sure the suffixed wrapped_template parameter name is meaningless to the wrapped_template for this to work properly.