Help:テンプレート内でのパーサー関数
注意: このページを編集すると、編集内容が CC0 のもとで公開されることに同意したと見なされます。詳細はパブリック・ドメインのヘルプ ページを参照してください。 |
テンプレートのパラメーターにパーサー関数を適用する際、既定値を指定するためにパイプ記号 (|) を使用できます。この既定値は、パラメーターが定義されていない時に使用されます。 ifパーサー関数で使用すると、未定義のパラメーターから展開されたテキストが真として評価され、予期しない結果になる可能性があります。
パラメーター | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | {{#if:<パラメーター>|True|False}} | ||
---|---|---|---|---|---|
説明 | 名前ありなしの例 | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | ||
未定義。名前ありパラメーターで使用する方が適切。 | {{template}}
|
{{{1}}} | True | False | |
定義されているものの、null/空 | {{template|}} , {{template|1=}} , {{template|param=}}
|
False | False | ||
定義されている。空でも null でもない。 | {{template|value}} , {{template|1=value}} , {{template|param=value}}
|
value | value | True | True |
{{{1}}}
- サンプル A
{{#if: {{{1}}} | パラメーター 1 は未定義か、または null 以外/空以外です。 | パラメーター 1 は null です。空の文字列または空白類などのみを含んでいます。}}
- 結果
パラメーター 1 は未定義か、または null 以外/空以外です。
{{{1|}}}
- サンプル B
{{#if: {{{1|}}} | パラメーター 1 は定義されていて、null 以外/空以外です。 | パラメーター 1 は未定義か、または定義されているものの null です。空の文字列または空白類などのみを含んでいます。}}
- 結果
パラメーター 1 は未定義か、または定義されているものの null です。空の文字列または空白類などのみを含んでいます。
2 番目の使用法 ({{{1|}}}
、サンプル B) は、既定値が空の場合、パラメーターは存在するものの空白類のみで構成されている状況を扱うのに望ましい方法であることが多いです。
未定義のパラメーターのテストと受け渡し
空の可能性のあるパラメーターと未指定のパラメーターを区別するには、{{#ifeq:}}
と異なる既定値を使ってそれ自身と比較します。
既定値は異なっていれば問題ではないため、一般的には短いものが選択されます。
以下はすべて同等に動作します:
{{#ifeq:{{{v|+}}}|{{{v|-}}}| v が定義されました (空の場合もあります) | v は定義されませんでした }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v が定義されました (空の場合もあります) | v は定義されませんでした }}
{{#ifeq:{{{v|}}}|{{{v}}}| v が定義されました(空の場合もあります)。 | v は定義されませんでした }}
まれに、パラメーターが指定されていないときと、指定されているものの空であるときとで、テンプレートの動作が異なることがあります。このテンプレートが (同じ名前付きパラメーターのセットを使う) ラッパー テンプレートによって使われる場合、未定義のパラメーターが未定義のままであることを保証する 1 つの方法は以下の通りです (この手法は番号付きパラメーターでも機能します):
{{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.