Шаблон:When pagename is/doc

Поделись знанием:
Перейти к: навигация, поиск

Шаблон {{When pagename is}} предназначен для использования внутри других шаблонов. Он помогает другим шаблонам определить, на какой странице они выполняются. Шаблон проверяет на совпадение имя страницы по заданному образцу {{When on page}}.

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

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

{{When pagename is
| /doc = Doc page text
| other = Other pages text
}}

Если шаблон включен на странице "Template:Example/doc" код выше вернет текст для страницы документации.

Doc page text

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

Other pages text

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

{{When pagename is
<!-- Match on full pagename -->
 | User:Example/test = Text for "User:Example/test".
 | User:Example = Text for "User:Example".
 | User talk:Example = Text for "User talk:Example".

<!-- Match on full basepage name, when on a basepage or its subpages -->
 | User:Example/+ = Matches "User:Example" and "User:Example/test".

<!-- Match on pagename, when on a basepage -->
 | Example = Matches "User:Example", "User talk:Example", "Template:Example" 
             and so on, but not "User:Example/something".

<!-- Match on full basepage name, when on a subpage -->
 | User:Example/* = Matches "User:Example/something", but not "User:Example".
 | User talk:Example/* = Matches "User talk:Example/something".

<!-- Match on basepage name, when on a subpage -->
 | Example/* = Matches "User:Example/something" and "User talk:Example/something".

<!-- Match on subpage name -->
 | /something = Any pagename that ends in "/something".
 | /doc = Any pagename that ends in "/doc".

<!-- Match on partial subpage name (case-insensitive) -->
 | /some* = Any subpage name beginning with "/some" or "/Some".
 | /arch* = Matches "User talk:Example/Archive 1".

<!-- Defaults -->
 | basepage = Text for any basepage.
 | subpage = Text for any subpage.
 | other = Text for any page.
}}

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

Большинство проверок не зависят от регистра букв. Однако вроде "/test" совпадет с "User:Example/test", но не из "User:Example/Test".

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

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

{{When pagename is
 | /doc =
 | /sandbox = Sandbox text
 | other = Other pages text
}}

Код выше ничего не отобразит, если шаблон вызовется на странице /doc, но на странице /sandbox он вернет текст для страницы песочницы. А на других страницах отобразится:

Sandbox text

And when on any other page it will return this:

Other pages text

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

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

{{When pagename is
 | /archiv* = Archive page text
 | other = Other pages text
}}

На странице "User:Example/Archive 1" код выше вернет текст для остальных страниц:

Archive page text

Название параметра образца сравнения "/some*" не должно содержать заглавных букв, но совпадение будет на подстранице содержать как большие, так и маленькие буквы, как "User:Example/SomeThing" и "User:Example/something".

Сопоставимая часть имени страницы в образце может содержать 4, 6 и 8 символов. Сравнение с "/some*", "/someth*" и "/somethin*" works, but using "/som*" или "/somet*" doesn't work.

Сначала сравниваются длинные образцы, например если заданы оба образца "somethin*" и "/some*", и текущая станица называется "User:Example/Something", то шаблон вернет то, что задано в параметре"/somethin*".

Параметр "page"

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

{{When pagename is
 | /test = Test pages text
 | other = Other pages text
 | page = Template:Example/test
}}

No matter on what kind of page the code above is used it will return this:

Test pages text

The page parameter makes this template behave exactly as if on that page. The pagename doesn't have to be an existing page.

If the page parameter is empty or undefined, the name of the current page determines the result.

You can make it so your template also understands the page parameter. That means you can demonstrate the different appearances of your template in the documentation for your template. Then do like this:

{{When pagename is
 | /test = Test pages text
 | other = Other pages text
 | page = {{{page|}}}
}}

Пространство имён соответствия

This template doesn't have namespace matching. If you need that then combine this template with one of the namespace-detection templates such as {{When on template page}}. Like this:

{{When on template page
 | {{When pagename is
    | /doc = Template doc page text.
   }}
 | <!--(action if not on a Template: page)-->
}}

Так на странице "User:Example/doc" код ничего не вернет, но на странице "Template:Example/doc" вернет:

Шаблон:When on template page

Технические подробности

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

См. также