Jump to content

Help:Parser functions in templates/ms

From mediawiki.org
This page is a translated version of the page Help:Parser functions in templates and the translation is 10% complete.
PD Catatan: Apabila anda menyunting halaman ini, anda bersetuju untuk memberi keizinan sumbangan anda tertakluk di bawah CC0. Lihat Laman Bantuan Domain Awam untuk maklumat lanjut. PD

When applying ParserFunctions to template parameters, a pipe symbol ("|") may be used to provide a default value, which is used when a parameter is not defined. Used in an #if parser function, the unexpanded text from the undefined parameter will evaluate as true, which may be an unexpected result.

Testing parameters with and without default values
Parameter {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}} {{#if:<parameter>|True|False}}
Description Example, unnamed and named {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}}
Undefined. More appropriate for use in named parameters. {{template}} {{{1}}} True False
Defined, but empty or null. {{template|}}, {{template|1=}}, {{template|param=}} False False
Defined, non-empty, and non-null. {{template|value}}, {{template|1=value}}, {{template|param=value}} value value True True
  • {{{1}}}
Contoh 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.}}
Keputusan
Parameter 1 is not defined, or is defined and non-null/non-empty.
  • {{{1|}}}
Contoh 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.}}
Keputusan
Parameter 1 is not defined, or is defined but null. It contains only empty string(s) or breaking space(s) etc.

The second usage ({{{1|}}}, sample B) with present empty default is often the desired way to handle situations where a parameter exists, but is comprised only of empty space.

Testing and passing undefined parameters

To distinguish a possibly empty parameter from an unspecified one, compare it to itself using {{#ifeq:}} and different defaults. What the defaults are does not matter as long as they are different, so they are typically chosen to be short. The following all work equivalently:

{{#ifeq:{{{v|+}}}|{{{v|-}}}| v was defined (and may be empty) | v was not defined }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v was defined (and may be empty) | v was not defined }}
{{#ifeq:{{{v|}}}|{{{v}}}| v was defined (and may be empty) | v was not defined }}

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):

{{wrapped_template|
normal_parameter={{{normal_parameter|}}}|
sensitive_parameter{{#if:{{{sensitive_parameter|}}}||NULL}}={{{sensitive_parameter}}}
}}

wrapped_template receives a defined normal_parameter in all cases. When normal_parameter is defined but empty and when it is undefined, wrapped_template receives an empty normal_parameter.

By contrast, the wrapped_template receives a defined sensitive_parameter only when it is indeed defined; when sensitive_parameter is undefined, the #if changes the parameter name to sensitive_parameterNULL. The suffixed parameter name must be meaningless to the wrapped_template for this to work properly.

See also