Шаблон:If pagename

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация

Этот мета-шаблон предназначен для использования внутри других шаблонов.

Он помогает другим шаблонам определить на какой странице они исполняются. Шаблон проверяет на совпадение имя страницы по заданному образцу.


Использование

Шаблон может обрабатывать более одного параметра. Большинство параметров не имеют определённого имени, так как их имена используются для задания образца поиска. Например:

{{if pagename
| /doc = Текст для страницы документации
| other = Текст для остальных страниц
}}

Если шаблон включён на странице «Шаблон: Пример/doc» код выше вернёт:

Текст для страницы документации

Если шаблон включён на другой странице, имя которой не содержит /doc, то код вернёт:

Текст для остальных страниц

Далее приводится перечень всех вариантов проверки страниц по образцу:

{{if pagename
<!-- Проверка на совпадение с полным именем страницы -->
| Участник:Пример/test = Текст для "Участник:Пример/test".
| Участник:Пример= Текст для "Участник:Пример".
| Обсуждение участника:Пример= Текст для "Обсуждение участника:Пример".

<!-- Проверка на совпадение с полным именем базовой страницы, для базовых страниц или их подстраниц -->
| Участник:Пример/+ = Сработает на страницах "Участник:Пример" и "Участник:Пример/test".

<!-- Проверка на совпадение с именем страницы, для базовых страниц -->
| Пример = Сработает на страницах "Участник:Пример", "Обсуждение участника:Пример", "Шаблон:Пример" 
            и т.п., но не на "Участник:Пример/чтонибудь".

<!-- Проверка на совпадение с полным именем базовой страницы, только для подстраниц -->
| Участник:Пример/* = Сработает на странице "Участник:Пример/чтонибудь", но не на "Участник:Пример".
| Обсуждение участника:Пример/* = Matches "Обсуждение участника:Пример/чтонибудь".

<!-- Совпадение с именем базовой страницы, только для подстраниц -->
| Пример/* = Сработает на страницах  "Участник:Пример/чтонибудь" и "Обсуждение участника:Пример/чтонибудь".

<!-- Совпадение с именем подстраницы -->
| /чтонибудь = Любая страница заканчивающаяся на "/чтонибудь".
| /doc = Любая страница заканчивающаяся на "/doc".

<!-- Совпадение с частью имени подстраницы (без различения прописных и строчных буквв) -->
| /чтон* = Любая страница имя которой начинается с "/чтон" или "/Чтон".
| /архи* = Сработает на странице "Обсуждение участника:Пример/Архив 1".

<!-- Запасные варианты по умолчанию -->
| basepage = Тест для любой базовой страницы.
| subpage = Текст для любой продстраницы.
| other = Текст для любой страницы.
}}

Сравнение производится сверху вниз и возвращается тот вариант, в котором произошло совпадение. Под словами «с верху вниз» имеется ввиду порядок вариантов выше, а не порядок параметров которые передаются в шаблон.

В шаблоне нет ограничений на количество параметров, которые можно передать, кроме ограничений накладываемых сервером и движком MediaWiki.

Большинство проверок не зависят от регистра букв. Однако образец «/test» совпадёт с «Участник: Пример/test» но не с «Участник: Пример/Test».

Проверка на совпадение с частью имени подстраницы, такой как «/чтон*» имеет некоторые ограничения. См. специально посвященный этому раздел ниже.

Разрешается задавать пустое значение в параметре сравнения, при совпадении с образцом дальнейшее сравнение прекращается и шаблон возвращает пустую строку. Это может использоваться для следующих целей:

{{if pagename
| /doc =
| /sandbox = Текст для страницы песочницы
| other = Текст для остальных страниц
}}

Код выше ничего не отобразит, если шаблон вызовется на странице /doc, но на странице /sandbox он вернёт:

Текст для страницы песочницы

А на остальных страницах отобразится:

Текст для остальных страниц

Частичные имена подстраниц

Также этот шаблон может сравнивать часть имени подстраницы. Например:

{{if pagename
| /архи* = Текст для страницы архива
| other = Текст для остальных страниц
}}

На странице «Участник: Пример/Архив 1» код выше вернёт:

Текст для страницы архива

Название параметра образца сравнения «/чтон*» не должно содержать заглавных букв, но совпадение будет на подстраницах содержащий как большие, так и маленькие буквы, таких как «Участник: Пример/ЧтоНибудь» и «Участник: Пример/чтонибудь».

Сравниваемая часть имени страницы в образце может содержать 4, 6 и 8 символов. Сравнение с «/чтон*», «/чтониб*» и «/чтонибуд*» сработает, но с «/что*» или «/чтони*» — нет.

Сначала сравниваются длинные образцы, например если заданы оба образца «/чтонибуд*» и «/чтон*», и текущая станица называется «Участник: Пример/Чтонибудь», то шаблон вернёт то, что задано в параметре «/чтонибуд*».

Параметр «page»

Для проверки и демонстрации работы шаблон обрабатывает параметр page. Например:

{{if pagename
| /test = Текст для страницы теста
| other = Текст для другой страницы
| page = Шаблон:Пример/test
}}

И не важно на какой странице код выше будет вызван, он всегда вернёт:

Текст для страницы теста

Параметр page заставляет шаблон вести себя в точности так, как если бы он был вызван на указанной в нём странице.

Если параметр page пустой или не задан, результат определяется в зависимости от названия текущей страницы.

Вы можете добавить параметр page в вызывающий шаблон, чтобы показать на его странице документации как он будет выглядеть на разных страницах. Например:

{{if pagename
| /test = Текст для страницы теста
| other = Текст для другой страницы
| page = {{{page|}}}
}}

Сравнение имени пространства

Этот шаблон не сравнивает имена пространств. Если вам нужно это, то объединяйте это шаблон с одним из шаблонов проверки имён пространств, таких как {{template other}}. Например:

{{template other
| {{if pagename
  | /doc = Текст на странице документации шаблона.
  }}
| <!-- Ничего не показывать на других страницах -->
}}

Так на странице «Участник: Пример/doc» код ничего не вернёт, но на странице «Шаблон: Пример/doc» он вернёт:

Технические детали

Это шаблон определяет подстраницы даже если он используется на страницах в пространстве имён, для которых запрещено создание подстраниц. Таким образом, он одинаково работает во всех пространствах имён.