Шаблон: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» он вернёт:

Технические детали[править код]

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