当在模板参数中使用解析器函数时,可以使用一个管道符号(|)来提供一个默认值,会在没有参数填写时被使用。 在 #if 解析器函数中使用时,来自未定义参数的未扩展文本将解析为真,可能造成意想不到的结果。
参数 | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | {{#if:<参数>|True|False}} | ||
---|---|---|---|---|---|
说明 | 命名和未命名的示例 | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | ||
未定义。更适合在命名参数中使用。 | {{template}}
|
{{{1}}} | True | False | |
已定义,但为空。 | {{template|}} , {{template|1=}} , {{template|param=}}
|
False | False | ||
已定义,且非空。 | {{template|value}} , {{template|1=value}} , {{template|param=value}}
|
value | value | True | True |
{{{1}}}
{{#if: {{{1}}} | 参数 1 未定义,或已定义且非空。 | 参数 1 为空。它仅包含空字符串或空格等。}}
参数 1 未定义,或已定义且非空。
{{{1|}}}
{{#if: {{{1|}}} | 参数 1 已定义且非空。 | 参数 1 未定义,或已定义但为空。它仅包含空字符串或空格等。}}
参数 1 未定义,或已定义但为空。它仅包含空字符串或空格等。
提供空默认值的第二种用法({{{1|}}}
,例 B)通常是参数存在,但仅由空值组成的情况下的理想处理方式。
要区分可能为空的参数和未指定的参数,请使用 {{#ifeq:}}
和“不同的默认值”将其与自身进行比较。
默认值是什么并不重要,只要它们不同即可,因此通常选择较短的值。
以下所有例子都奏效:
{{#ifeq:{{{v|+}}}|{{{v|-}}}| v已定義(可以為空) | v未定義 }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v已定義(可以為空) | v未定義 }}
{{#ifeq:{{{v|}}}|{{{v}}}| v已定義(可以為空) | v未定義 }}
在极少数情况下,模板在未指定参数时与指定参数但为空时的行为不同。 当包裹模板(使用同一组命名参数)使用此模板时,确保未定义参数保持未定义的一种方法如下(该技巧也适用于编号参数):
{{wrapped_template| normal_parameter={{{normal_parameter|}}}| sensitive_parameter{{#if:{{{sensitive_parameter|}}}||NULL}}={{{sensitive_parameter}}} }}
wrapped_template
在所有情况下都会收到定义的“normal_parameter”。 当normal_parameter 已定义但为空且未定义时,wrapped_template
会收到一个空的normal_parameter。
相比之下,wrapped_template
在确实定义时“仅”接收定义的“sensitive_parameter”; 当“sensitive_parameter”未定义时,#if
将参数名称更改为“sensitive_parameterNULL”。
后缀参数名称必须对 wrapped_template
无意义才能正常工作。