Шаблон:If pagename/doc: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
м top: оформление кода: шаблон docpage не нуждается в обёртке
 
(не показано 10 промежуточных версий 5 участников)
Строка 1: Строка 1:
<noinclude>{{docpage}}</noinclude>
{{docpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
<!-- Пожалуйста добавляйте категории и интервики внизу страницы -->
<!-- Пожалуйста добавляйте категории и интервики внизу страницы -->
Строка 20: Строка 20:
</pre>
</pre>


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


:{{if pagename
: {{if pagename
| /doc = Текст для страницы документации
| /doc = Текст для страницы документации
| other = Текст для остальных страниц
| other = Текст для остальных страниц
Строка 30: Строка 30:
Если шаблон включён на ''другой'' странице, имя которой не содержит /doc, то код вернёт:
Если шаблон включён на ''другой'' странице, имя которой не содержит /doc, то код вернёт:


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


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


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


<!-- Запасные варианты по умолчанию -->
<!-- Запасные варианты по умолчанию -->
Строка 74: Строка 74:
</pre>
</pre>


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


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


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


Проверка на совпадение с частью имени подстраницы, такой как "<code>/чтон*</code>" имеет некоторые ограничения. См. [[#Частичные имена подстраниц|специально посвященный этому раздел]] ниже.
Проверка на совпадение с частью имени подстраницы, такой как «<code>/чтон*</code>» имеет некоторые ограничения. См. [[#Частичные имена подстраниц|специально посвященный этому раздел]] ниже.


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


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


:{{if pagename
: {{if pagename
| /doc =
| /doc =
| /sandbox = Текст для страницы песочницы
| /sandbox = Текст для страницы песочницы
Строка 103: Строка 103:
А на остальных страницах отобразится:
А на остальных страницах отобразится:


:{{if pagename
: {{if pagename
| /doc =
| /doc =
| /sandbox = Текст для страницы песочницы
| /sandbox = Текст для страницы песочницы
Строка 116: Строка 116:
<pre>
<pre>
{{if pagename
{{if pagename
| /архив* = Текст для страницы архива
| /архи* = Текст для страницы архива
| other = Текст для остальных страниц
| other = Текст для остальных страниц
}}
}}
</pre>
</pre>


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


:{{if pagename
: {{if pagename
| /архив* = Текст для страницы архива
| /архи* = Текст для страницы архива
| other = Текст для остальных страниц
| other = Текст для остальных страниц
| page = Участник:Пример/Архив 1
| page = Участник:Пример/Архив 1
}}
}}


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


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


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


=== Параметр «page» ===
=== Параметр «page» ===
Строка 149: Строка 149:
И не важно на какой странице код выше будет вызван, он всегда вернёт:
И не важно на какой странице код выше будет вызван, он всегда вернёт:


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


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


Если параметр '''page''' пустой или не задан, результат определяется в зависимости от названия текущей страницы.
Если параметр '''page''' пустой или не задан, результат определяется в зависимости от названия текущей страницы.
Строка 181: Строка 181:
}}
}}
</pre>
</pre>
Так на странице "Участник:Пример/doc" код ничего не вернёт, но на странице "Шаблон:Пример/doc" он вернёт:
Так на странице «Участник: Пример/doc» код ничего не вернёт, но на странице «Шаблон: Пример/doc» он вернёт:


:{{template other
: {{template other
| {{if pagename
| {{if pagename
| /doc = Текст на странице документации шаблона.
| /doc = Текст на странице документации шаблона.
Строка 195: Строка 195:
Это шаблон определяет подстраницы даже если он используется на страницах в пространстве имён, для которых запрещено [[meta:Link#Subpage feature|создание подстраниц]]. Таким образом, он одинаково работает во всех пространствах имён.
Это шаблон определяет подстраницы даже если он используется на страницах в пространстве имён, для которых запрещено [[meta:Link#Subpage feature|создание подстраниц]]. Таким образом, он одинаково работает во всех пространствах имён.


<!--
=== See also ===

{{pagename detect see also}}
-->
<includeonly>
<includeonly>
[[Категория:Шаблоны:Условные]]
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
<!-- Категории и интервики здесь -->
[[Категория:Википедия:Мета-шаблоны|{{PAGENAME}}]]

[[en:Category:Wikipedia metatemplates]]
[[sl:Predloga:If pagename]]
[[tpi:Template:If pagename]]
</includeonly>
</includeonly>

Текущая версия от 09:32, 20 августа 2019

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

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


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

[править код]

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

{{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» он вернёт:

Текст на странице документации шаблона.

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

[править код]

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