Основная статья: Викимультия:Шаблоны
Помощь |
---|
Тематические статьи |
Специальные статьи |
Шаблоны |
Техническая справка |
Шаблоны в Викимультии является специальным классом страниц их содержание динамично подставляется в текст других страниц при каждом их просмотре.
Содержание
Общая информация[править]
Страницы шаблонов являются полноценными статьями, для которых отведено собственное пространство имен Шаблон:
. В Викимультии их позволено править всем пользователям.
Вики-разметка для вызова шаблона в статье:
{{Имя шаблона}}
При просмотре страницы, вместо этого тега вставляется текст шаблона Шаблон:Имя шаблона
. Если шаблон еще не существует, то тег будет отображаться как «красная» ссылка на несуществующую статью: Шаблон:Несуществующий шаблон
. Чтобы избежать этого, убедитесь перед сохранением страницы что все используемые Вами шаблоны существуют. Сделать это можно воспользовавшись функцией предварительного просмотра.
Если в главном пространстве имен существует статья с таким же названием, что и имя шаблона, её можно использовать как шаблон с помощью следующей синтаксической конструкции:
{{:Название_статьи}}
Если название статьи это изображение или категория, то вызов шаблона вернет описание изображения или категории. Такая возможность использовать любую статью как шаблон позволяет экспериментировать с шаблонами, не создавая лишних статей в пространстве имен Шаблон:
, использовать подписи и пояснения к изображениям.
Помните, что название статьи или шаблона чувствительно к регистру.
Допускается рекурсивное включение шаблонов.
Значения переменных шаблона подставляются после того как шаблон будет вставлен в статью, то есть, например, если шаблон содержит вызов переменной {{PAGENAME}}
, она вернет значение как название статьи в которую подставлен шаблон, а не имя шаблона.
При редактировании страницы внизу под окошком редактирования отображается список использованных в статье шаблонов. При этом он будет отображаться, даже если редактируется только секция статьи, не содержащая шаблонов. Если шаблоны вызываются рекурсивно, то в этот список попадут как шаблоны верхнего, так и нижних уровней.
Параметры шаблонов[править]
Параметры шаблона применяют в том случае, когда необходимо предусмотреть возможность дописать в шаблон сведения, оригинальные данные для каждой статьи. Шаблон может и не использовать параметры (например Шаблон:Без иллюстраций), или использовать один параметр (например Шаблон:Lang-en) или использовать много параметров (например Шаблон:Изображение).
Параметры шаблона могут быть именованными или нумерованными. варианты синтаксиса
{{templatename|parname1=parvalue1|parname2=parvalue2}}
, тогда в тексте шаблона следует ссылаться на{{{parname}}}
;{{templatename|parvalue1|parvalue2}}
, тогда в тексте шаблона следует использовать{{{1}}}
,{{{2}}}
.
Лишние параметры (не используются в тексте шаблона) игнорируются. Имена параметров чувствительны к регистру, пробелам, подчеркиваниям и другим символам не из набора [az\-A-Z0-9].
Обратите внимание на тройные фигурные скобки при использовании параметров!
Таким образом, механизм шаблонов выполняет два типа подстановок:
- Вызов шаблона (двойные фигурные скобки) подменяется содержанием шаблона
- Параметры шаблона (тройные фигурные скобки) подменяются значениями параметров шаблона.
Параметром шаблона может быть ссылка на другую статью. Пусть например у нас есть Шаблон:
Начало {{{1}}} Конец.
Тогда {{Шаблон|[[Заглавная_страница|Заглавная страница]]}}
будет развернут в
Начало Заглавная страница Конец.
Если один параметр someparameter
не определен, он передается нераскрытым текстом {{{someparameter}}}
в вызывающую статью, в случае рекурсивного вызова его можно раскрыть на следующем уровне.
Заметьте следующую разницу в вызовах: вызов {{Шаблон||a}}
устанавливает значение первого параметра равным пустой строке. Чтобы присвоить значение второму параметру не определяя значение первого воспользуйтесь вызовом {{Шаблон||2=a}}
.
Также вызов {{Шаблон|a=b|c}}
определит параметр «a» и не установит параметр «1», чтобы правильно определить оба параметра, воспользуйтесь следующей синтаксической конструкцией {{Шаблон|1=a=b|2=c}}
.
Условное включение параметров[править]
Если появление нераскрытого текста не желательна, можно использовать условное включение параметра в текст шаблона. Параметр, записанный в форме {{{parameter|альтернативный текст}}}
будет включен в текст шаблона только в том случае, если значение параметра задано, иначе вместо значения параметра появится альтернативный текст. Этот способ уместен тогда, когда для некоторого параметра шаблона предполагается определенное значение по умолчанию. Простейший пример: если некоторый параметр parameter
записан внутри шаблона в форме {{{parameter|}}}
(т.е. если в качестве альтернативного текста используется пустая строка), на его месте не будет выводиться вообще ничего (даже {{{parameter}}}
), если этот параметр окажется заданным.
Иногда возникает необходимость изменить в тексте шаблона нечто большее, чем сам параметр, если этот параметр не задан. Для этой цели используются функции парсера: {{#if}}
и другие. {{#if}}
вызывается следующим образом:
{{#if: проверяемая-переменная-или-параметр | текст-для-случая, когда-либо-значение-test-не пустое | текст-для-случая, когда-либо-значение-test-пустое }}
Второй параметр не является обязательным, поэтому можно использовать сокращенную форму:
{{#if: переменная-проверки-или-параметр | текст-для-случая, когда-либо-значение-test-не пустое }}
Демонстрационный пример употребления:
{{#if: {{{sample|}}} |параметр '''sample'''определено! |параметр'''sample'''пустой! }}
Реальный пример применения {{#if}}
вы можете найти в коде шаблона {{Карточка}}.
Эффект пустых строк[править]
Рассмотрим пример работы комбинации из трех условных операторов:
{{#if: {{{sample1|}}}|'''sample1'''! }} {{#if: {{{sample2|}}}|'''sample2'''! }} {{#if: {{{sample3|}}}|'''sample3'''! }}
Если все операторы определены, то значение выстраиваются в одну строку. Однако, когда второй оператор не определен, между первым и третьим оператором появляется лишняя строка:
Ситуация | Код при вызове шаблона | Код | Результат |
---|---|---|---|
Все операторы определены |
|sample1=sample1 |sample2=sample2 |sample3=sample3 |
{{#if: {{{sample1|sample1}}}|'''sample1'''! }} {{#if: {{{sample2|sample2}}}|'''sample2'''! }} {{#if: {{{sample3|sample3}}}|'''sample3'''! }} |
sample1! sample2! sample3! |
Второй оператор не определен |
|sample1=sample1 |sample2= |sample3=sample3 |
{{#if: {{{sample1|sample1}}}|'''sample1'''! }} {{#if: {{{sample2|}}} |'''sample2'''! }} {{#if: {{{sample3|sample3}}}|'''sample3'''! }} |
sample1! sample3! |
Пустая строка между первым и третьим строкой возникает из-за того, что условный оператор второй строки вернул ничто, и итоговая конструкция после обработки парсером принимает следующий вид:
'''sample1'''! < пустая строка > '''sample3'''!
Такой эффект может проявляться в шаблонах-карточках, когда на месте неопределенных параметров появляется пустое пространство. Чтобы не допустить подобного эффекта, необходимо не допускать переноса строки между условными операторами. Этого можно добиться несколькими способами:
Способ | Код | Результат |
---|---|---|
Писать все условные параметры в одну строку |
{{#if: {{{sample1|sample1}}}|'''sample1'''! }}{{#if: {{{sample2|}}}|'''sample2'''! }}{{#if: {{{sample3|sample3}}}|'''sample3'''! }} |
sample1!sample3! |
Включать комментарии для исключения знака переноса |
{{ #if: {{{sample1|sample1}}}|'''sample1'''! }}<!--разделитель -->{{#if: {{{sample2|}}} |'''sample2'''! }}<!--разделитель -->{{#if: {{{sample3|sample3}}}|'''sample3'''! }} |
sample1!sample3! |
Делать переносы внутри условных операторов, а не между ними |
{{ #if: {{{sample1|sample1}}}|'''sample1'''! }}{{ #if: {{{sample2|}}} |'''sample2'''! }}{{ #if: {{{sample3|sample3}}}|'''sample3'''! }} |
sample1!sample3! |
Просмотр содержимого шаблона[править]
Смотрите текст шаблона в режиме редактирования, поскольку на простом просмотре переменные и другие шаблоны, например шаблоны будут заменены их значениями.
Теги noinclude и includeonly[править]
Эти теги применяются для отделения должен ли текста отображаться только в самом шаблоне, но не отображаться в статьях, в которые этот шаблон включен, или наоборот.
Для размещения в шаблоне дополнительной информации — например правил использования шаблона или категории шаблона, которая не должна отражаться в статьях, в которую включается данный шаблон, такую информацию следует разместить следующим образом: <noinclude>Дополнительная информация (''например '':шаблон используется ...) </noinclude>
. В противном случае - если мы должны заложить в шаблон информацию, которая должна отражаться в статьях, в которых этот шаблон включается, но не должна влиять на сам шаблон (чаще всего это - категоризация статьи) - следует писать <includeonly>Дополнительная информация (''например:'' [[Категория статьи]])</includeonly>
He допускайте пустых строк вокруг конструкций <noinclude>
и <includeonly>
, так как пустая строка будет толковаться как перенос строки и будет добавлено шаблоном в статью.
Ссылка на редактирование шаблона[править]
Иногда желательно иметь ссылку на страницу редактирования шаблона в тексте самого шаблона (например, если его содержание может часто меняться). Такую ссылку можно «зашить» внутри самого шаблона, более того, сделать именно шаблоном. См. Шаблон:ed, пример использования: {{ed|{{PAGENAMEE}}|{{NAMESPACE}}{{PAGENAME}}}} даст ред. Викимультия Механизм шаблонов.
Ограничения и возможности[править]
Использование вложенных двойных или тройных фигурных скобок внутри двойных вложенных скобок[править]
Из-за использования двойных и тройных скобок смысл выражения может быть неопределенным. Например вместо
{{{{{abra}}}}}
следует использовать или
{{{{{abra}}}}}
— возвращено шаблону abra значение является названием параметра данного шаблона или
{{{{{abra}}}}}
— значение параметра abra является названием шаблона, вложенного в настоящее. Избегайте, лишних пробелов.
Тэг категории в шаблоне. Проблема кэширования[править]
Если шаблон содержит тег категории, то в указанную категорию относится не только шаблон, но и все страницы что его используют, так шаблоны удобно использовать для рубрикации статей.
С этим подходом связана проблема кэширования - если изменить категорию в шаблоне, статьи где он используются будут отнесены к новой категории только после сохранения любых изменений этих статей (важно сохранение изменений, именно изменения может быть пустым).
Рекомендуется использовать категории шаблонах типа {{TODO}} для «маркировки» статей типа, и не рекомендуется использование в навигационных шаблонах.
Кэширование[править]
Редактирование шаблона автоматически очищает кэш сервера от всех статей непосредственно его использующих. Однако в выпадах косвенного вызова (рекурсивный вызов, шаблоны которые зависят от параметров и т. д.), внутренний кэш системы не очищается и стандартный «Refresh» браузера может не работать. В таких случаях используйте «action=purge», т.е. переходите по URL типа:
[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAMEE}}|action=purge}} Очистить кэш страницы]
что будет отражено как
Или Вы можете просто воспользоваться готовым шаблонам: Шаблон:Purge очистить кэш {{Очистить кэш}} очистить кэш.
Подстановка (subst)[править]
Основная статья: Викимультия:Подстановка Использование «subst:» после двойных фигурных скобок чревато подстановку текста шаблона или значение переменной на момент сохранения страницы в которой они используется.
Например «timestamp»:
{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}, {{subst:CURRENTTIME}} (UTC)
подставится при сохранении, как:
13 сентября 2005, 16:24
Тогда как
{{subst:Welcome}}
используемый для приветствия новых пользователей, отразится так:
Добро пожаловать в Викимультию, Механизм шаблонов! |
От имени участников Викимультии приветствую вас в её разделе на русском языке. Надеемся, вы получите большое удовольствие от участия в проекте.
Обратите внимание на основные принципы участия: правьте смело и предполагайте добрые намерения. Статьи в Викимультии не нужно подписывать (список авторов формируется автоматически и доступен в истории правок статьи), но если вам захочется принять в обсуждении отдельных страниц — подписывайтесь, пожалуйста, используя четыре знака тильды ( На своей странице участника вы можете сообщить некоторые сведения о себе — например, владение языками или интересы. Если у вас возникли вопросы, воспользуйтесь системой помощи. Если вы не нашли в ней ответа на ваш вопрос, оредактируйте личную страницу обсуждения: впишите туда И ещё раз, добро пожаловать! |