Справка:Функции парсера в шаблонах

This page is a translated version of the page Help:Parser functions in templates and the translation is 100% complete.
PD Примечание: Редактируя эту страницу, вы соглашаетесь на передачу своего вклада по лицензии CC0.
Подробнее — в проекте Помощь с общественным достоянием.
PD

При применении 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 , чтобы это работало правильно.

Смотрите также