Шаблон: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» он вернёт:
Технические детали
[править код]Это шаблон определяет подстраницы даже если он используется на страницах в пространстве имён, для которых запрещено создание подстраниц. Таким образом, он одинаково работает во всех пространствах имён.