Это мета-шаблон {{ main talk other }}.
Этот шаблон используется внутри других шаблонов, которые должны вести себя по-другому (обычно выглядят иначе) в зависимости от того, на какой странице они находятся. Он обнаруживает и группирует все различные пространства имен, используемые в Википедии, на три типа:
- main = Main / article space, как в обычных статьях Википедии.
- talk = Любое пространство для разговоров, например, имена страниц, начинающиеся с «Обсуждение:», «Обсуждение пользователя:», «Обсуждение файла:» и так далее.
- other = Все остальные пробелы, такие как имена страниц, начинающиеся с «Пользователь:», «Файл:», «Википедия:» и т. д.
Эта страница также является документацией для некоторых других шаблонов:
- {{ main talk other flex }} - Работает точно так же, но имеет небольшие внутренние отличия. Подробнее об этом ниже .
- {{ main other }}, {{ talk other }}, {{ file other }} и {{ category other }} - более простые версии, которые различают страницы только одного типа от всех остальных.
Основное использование
Этот шаблон обычно принимает три параметра и возвращает один из них в зависимости от того, к какому типу принадлежит страница. Как это:
{{main talk other|Article text|Talk page text|Other pages text}}
Если шаблон находится на главной странице (статье), он вернет следующее:
- Текст статьи
Если шаблон есть на какой-либо странице обсуждения, он вернет следующее:
- Текст страницы обсуждения
Если шаблон находится на любой другой странице (например, на этой странице шаблона и ее странице документа), он вернет следующее:
- Текст других страниц
Если вы вводите параметр только для одного или двух типов, этот шаблон возвращает пустую строку для остальных типов. То есть, если он, например, используется одним из следующих способов:
{{main talk other||Talk text}}
{{main talk other||Talk text}}
Тогда он ничего не отображает в основном пространстве и в другом пространстве.
Если этот шаблон используется без каких-либо параметров или только с пустыми параметрами (пустыми строками), то он возвращает пустую строку. То есть тогда он ничего не отображает.
Для целей тестирования и демонстрации эти шаблоны могут принимать параметр с именем demospace : если он имеет какое-либо из значений main , talk или другое, он заставляет шаблон вести себя так, как если бы он находился на странице этого типа; если параметр пуст или не определен, фактический тип страницы определяет результат.
Пример использования
В этом примере создается окно сообщения, но эти шаблоны, конечно, можно использовать не только для окон сообщений, но и для многих других целей. В этом примере используются нумерованные параметры и таблицы HTML, поэтому см. Раздел технических деталей ниже.
{{главный разговор другой| 1 = '' Это окно сообщения не должно использоваться в статьях. ''| 2 = {{tmbox | text = Уведомление о странице обсуждения}}| 3 = {{ombox | text = Уведомление на других страницах}}}}
Это выглядит так:
Посмотрим, как это выглядит на страницах обсуждения. Итак, мы меняем первую строку кода на это:
{{main talk other | demospace = talk
Вот как это будет отображаться на любой странице обсуждения:
А теперь протестируем на страницах статей:
{{main talk other | demospace = main
Вот как это будет отображаться в статье:
Это окно сообщения не следует использовать в статьях.
Дополнительный код
Чтобы завершить этот пример, вот остальной код, который необходим для создания полностью укомплектованного шаблона:
{{главный разговор другой| demospace = {{{demospace |}}}| 1 =| 2 =| 3 =}}{{документация}}->
Строка « | demospace = {{{demospace|}}}
» означает, что ваш шаблон также понимает параметр demospace. Это означает, что вы можете продемонстрировать различные виды вашего шаблона в документации к вашему шаблону.
« {{documentation}}
» Шаблон создает зеленый документации окно, как тот , который вы читаете в данный момент.
Технические подробности
Нумерованные параметры и HTML-таблицы
У шаблонов есть проблема с обработкой данных параметров, содержащих знаки равенства " =
". Но это легко решить, используя нумерованные параметры, такие как « 1=First parameter
» и « 2=Second parameter
».
У шаблонов также есть проблема с обработкой данных параметров, содержащих каналы " |
", если только канал не находится внутри другого шаблона {{name|param1}}
или внутри канала связи [[Help:Template|help]]
. Таким образом, шаблоны не могут обрабатывать вики-таблицы как входные, если вы не экранируете их с помощью шаблона {{!}} . Это затрудняет использование вики-файлов в качестве параметров шаблонов. Вместо этого обычным решением является использование « HTML wikimarkup » для кода таблицы, который является более надежным.
Самый простой способ включить таблицы, использующие вики-разметку, - это включить их в качестве подшаблона.
Сравнение
{{ main talk other }} и {{ main talk other flex }} ведут себя точно так же, но для внутреннего использования используют другой код:
{{main talk other}}
по-прежнему будет правильно определять все страницы обсуждения, даже если в Википедию будут добавлены новые пространства имен. Страница обсуждения и функции обнаружения основного пространства также короче и, следовательно, удобнее, если вы хотите скопировать их для использования в другом месте:
{{#ifeq:{{NAMESPACE}}|{{TALKSPACE}}| talk | not talk }}
{{#ifeq:{{NAMESPACE}}|{{ns:0}}| main | not main }}
{{main talk other flex}}
является более гибким в том смысле, что его код намного легче изменить, чтобы обнаруживать любую комбинацию пространств имен по своему желанию. Но, пожалуйста, скопируйте код в новый шаблон, прежде чем вносить такие изменения.
- Если в Википедию добавлено новое пространство имен, его
{{main talk other flex}}
необходимо обновить вручную, в противном случае новое переговорное пространство будет обнаружено как тип «другое». К счастью, новые пространства имен - очень редкое событие.
Так что, если вам просто нужно определить main , talk и другое, тогда используйте {{main talk other}}
. Но если вы хотите обнаружить другие комбинации, скопируйте код из {{main talk other flex}}
.
Копирование в другие проекты?
Если вы копируете эти шаблоны в Википедию на другом языке или в другой проект Викимедиа, они {{main talk other}}
должны работать как есть, но вы, вероятно, захотите обновить имя шаблона и его имена параметров в соответствии с именами вашего локального пространства имен. Но вы должны обновить код {{main talk category other}}
и {{main talk other flex}}
на локальное наименование и добавить любые дополнительные пространства имен , которые являются локальными для вашей вики, в противном случае они будут функционировать должным образом .
Обнаружение пространства имен CSS
Код CSS можно использовать вместо этих шаблонов для обнаружения пространств имен. Это можно использовать для тех вещей, которые можно закодировать как CSS, таких как цвета и границы. См. Пример на странице обсуждения .