Справка:Функции парсера в шаблонах
Примечание: Редактируя эту страницу, вы соглашаетесь на передачу своего вклада по лицензии 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
, чтобы это работало правильно.