Справка:Функции парсера в шаблонах
| Примечание: Редактируя эту страницу, вы соглашаетесь на передачу своего вклада по лицензии CC0. Подробнее — в проекте Помощь с общественным достоянием. |
При применении ParserFunctions к параметрам template можно использовать символ («|») для установки значения по умолчанию, которое будет используется, когда параметр не определен. Используемый в функции #if, нерасширенный текст из неопределенного параметра будет оцениваться как true, что может быть неожиданным результатом.
| Параметр | {{{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 не объявлен, либо объявлен и не равен нулю/непустой. | Параметр 1 равен нулю. Он содержит только пустые(ую) строки(у) или пробел(ы) и т.д.}}
- Результат
Параметр 1 не объявлен, либо объявлен и не равен нулю/непустой.
{{{1|}}}
- Пример B
{{#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 получает определенный чувствительный_параметр только тогда, когда он действительно определен; когда чувствительный_параметр не определен, #if изменяет имя параметра на чувствительный_параметрNULL.
Имя параметра с суффиксом должно быть бессмысленным для wrapped_template , чтобы это работало правильно.