Шаблон — это страница Википедии, созданная для включения в другие страницы. Шаблоны обычно содержат повторяющийся материал, который может потребоваться отобразить в большем количестве статей или страниц. Они обычно используются для шаблонных сообщений, стандартизированных предупреждений или уведомлений, информационных полей , навигационных полей и подобных целей. Шаблоны могут иметь параметры, чтобы одна и та же страница генерировала разный текст на нескольких страницах, которые ее включают.
Наиболее распространенный метод включения называется трансклюзия , где вики-источник целевой страницы содержит ссылку на шаблон, используя синтаксис. Другой метод — подстановка , где содержимое шаблона копируется в вики-источник целевой страницы, только один раз, при сохранении.{{Template name}}
Help:A quick guide to templates дает краткое введение в тему. Дополнительная помощь от MediaWiki и Wikimedia доступна на mw:Help:Templates, m:Help:Template и m:Help:Advanced templates.
Большинство шаблонов находятся в пространстве имен шаблонов , что означает, что они имеют заголовки в форме "Шаблон: XXXX ". Однако возможно включение и замена из любого пространства имен, [a] и поэтому некоторые страницы шаблонов размещаются в других пространствах имен, таких как пространство имен пользователя . Страницы шаблонов имеют связанные страницы обсуждения .
Шаблоны могут содержать любой желаемый викитекст , включая вызовы других шаблонов. Есть некоторые возможности программирования: настраиваемые значения (через параметры); вычисления и ветвление (используя функции парсера ); и доступ к специфичным для вики переменным ( волшебным словам ), таким как даты, время и названия страниц. Они также могут содержать разметку для определения определенных частей страницы, которые должны быть включены, а другие части — нет. Это означает, что при отображении самой страницы шаблона вы можете увидеть больше, чем при отображении страницы, которая его включает (например, она может содержать документацию, категории и т. д. для шаблона).
Чтобы вызвать шаблон (вызвать его включение или замену на странице), страница содержит викитекст в двойных фигурных скобках. Например, викитекст {{under construction}}
вызывает шаблон {{ under construction }} . Иногда вызов включает параметры и выглядит как {{under construction|comment=This is a comment}}
. Обратите внимание, что вызовы шаблонов — не единственное, для чего в викитексте используются двойные фигурные скобки.
Обратите внимание, что хотя шаблоны являются обычным способом включения и замены в Википедии, это не единственный способ.
Использование шаблона очень похоже на вызов функции в языке программирования — вызовите ее, и она вернет значение. Для шаблона возвращаемое значение называется расширением шаблона и рассматривается как часть исходного кода вызывающей страницы. Подобно функциям, некоторые шаблоны принимают параметры, которые влияют на вывод.
Вызов шаблона приводит к его включению или замене на странице, которая его вызывает (которая называется целевой страницей ).
Транспонирование шаблона означает, что когда MediaWiki отображает страницу, он обрабатывает шаблон так, как если бы он находился в вики-источнике страницы, тогда как подстановка означает, что MediaWiki делает это при сохранении страницы (т. е. содержимое шаблона сохраняется как часть целевой страницы, и последующие редакторы не могут определить, что оно попало туда через шаблон).
Чтобы транспонировать шаблон на страницу, вставьте исходный код страницы в то место, где должен появиться шаблон. Первая буква каждого слова заголовка может быть как строчной, так и заглавной.{{Template name}}
Чтобы заменить шаблон на странице, используйте вместо него.{{subst:Template name}}
Этот викитекст называется вызовом шаблона .
В MediaWiki , программном обеспечении для вики , которое использует Википедия, переменные отличаются от шаблонов, но и те, и другие обозначаются двойными фигурными скобками {{ }}
и оба возвращают значение.
В то время как имена переменных MediaWiki полностью состоят из заглавных букв, имена шаблонов имеют те же основные особенности и ограничения , что и все имена страниц : они чувствительны к регистру (за исключением первого символа); подчеркивания обрабатываются как пробелы; и они не могут содержать ни одного из следующих символов: # < > [ ] | { }
. Это связано с тем, что они зарезервированы для вики-разметки .
Знак числа обозначает #
идентификатор фрагмента , который идентифицирует фрагмент или раздел документа (например, раздел в статье Википедии). Хотя вы можете использовать его в ссылке для ссылки на раздел страницы шаблона (например, Template:Portal#Example ), идентификаторы фрагментов не имеют значения в вызове шаблона и игнорируются. Например, то же самое, что и .{{Portal#Location|Books}}
{{Portal|Books}}
Пространство имен шаблона является значением по умолчанию, поэтому вы можете не указывать пространство имен Template:
в имени шаблона, и это общепринято. Однако вы должны указать префикс пространства имен для шаблонов в других пространствах имен, например User:
. Чтобы включить страницу в mainspace , поставьте перед ее заголовком двоеточие, например .{{:Page name}}
Примечание: Попытка транспонировать несуществующий шаблон приводит к появлению красной ссылки , как и при переходе по ссылке на любую другую несуществующую страницу. Переход по ссылке позволяет создать этот конкретный шаблон. Невозможно транспонировать страницы между проектами (например, Wikipedias на разных языках или MediaWiki) — чтобы использовать шаблон в проекте на другом языке, необходимо создать копию шаблона в этом проекте.
Базовый синтаксис включения, приведенный выше, может быть расширен параметрами , которые используются для управления выводом шаблона. Синтаксис для этого следующий,
где — имя шаблона, и каждый может либо содержать только значение (они называются неименованными параметрами ), либо иметь форму ( именованные параметры ). Первому, второму, третьему и т. д. неименованным параметрам присваиваются имена , , , и т. д.{{Template name|parameter|parameter|...}}
Template name
parameter
name=value
1
2
3
Пробельные символы (пробелы, табуляции, возвраты) удаляются из начала и конца имен и значений именованных параметров, но не из середины: таким образом, {{ ... | myparam = this is a test }}
имеет тот же эффект, что и {{ ... |myparam=this is a test}}
. Это не относится к неименованным параметрам, где все пробельные символы сохраняются.
Какие параметры (если таковые имеются) могут или должны быть переданы шаблону и как их следует именовать, определяется в кодировке этого шаблона. Вызов шаблона может указывать именованные параметры в любом порядке. Излишние или неправильно названные параметры игнорируются; неуказанным параметрам назначаются значения по умолчанию. Если параметр указан более одного раза, вступает в силу последнее значение.
Значение параметра может быть пустой строкой, например, когда за вертикальной чертой или знаком равенства сразу следует следующая вертикальная черта или закрывающие фигурные скобки. Это отличается от неуказания параметра вообще, что приводит к значению по умолчанию, хотя шаблоны часто кодируются так, чтобы вести себя одинаково в обоих случаях.
Если вызов шаблона указывает параметр, который не определен в шаблоне, он не имеет никакого эффекта. Иногда редакторы делают это намеренно: например, |reason=
часто используется как псевдопараметр для краткого объяснения в исходном коде вики, почему вызов шаблона был помещен туда. [b] Некоторые шаблоны используют для предупреждения редактора, если используется параметр, который не учтен в коде шаблона; это в основном используется для информационных полей и других шаблонов с большим количеством сложных параметров, где наличие неизвестного параметра обычно является непреднамеренной ошибкой. Если вы обновляете такой шаблон для определения нового параметра, его вызов к модулю также должен быть обновлен для включения нового параметра.{{#invoke:check for unknown parameters|check|...}}
Синтаксис Wikitext изначально не позволяет создавать действительно вариативные шаблоны , а только псевдовариативные, которые проверяют входящие параметры по одному до определенного фиксированного количества. Однако это ограничение можно обойти, используя специальные модули. Для простых случаев позволяет вслепую расширять все последовательные параметры и имеет возможность устанавливать пользовательские разделители. Для более сложных случаев позволяет подсчитывать, перечислять, отображать, фильтровать и распространять все входящие параметры, не зная заранее их количество.{{#invoke:separated entries|main}}
{{#invoke:params}}
Примечание: Если вы хотите поэкспериментировать с любым из них, вы можете использовать шаблонную песочницу или свою страницу пользователя или песочницу. Вы можете опробовать свой шаблон с помощью Special:ExpandTemplates .
Пример очень простого шаблона можно найти на Template:TM , который расширяется до викитекста, который размещает символ торговой марки (™), связанный со статьей о торговой марке , в этой точке отображаемой страницы. Программист сказал бы, что шаблон «возвращает» ссылку на символ торговой марки викитекста.
Отобразите Template:TM (щелкнув по предыдущей ссылке), затем щелкните вкладку «Изменить», чтобы увидеть код шаблона (его исходный код страницы). Активная часть этого кода, которая становится расширением шаблона при его включении, — это единственная ссылка wikitext [[Trademark|™]]
. Остальная часть исходного кода страницы заключена между <noinclude>
тегами, поэтому она отображается, когда вы отображаете саму страницу шаблона, но не когда вы отображаете страницу, вызывающую шаблон.
Чтобы включить Template:TM на другую страницу (т. е. использовать его на другой странице), введите в исходный текст этой страницы (целевой страницы) и щелкните . Страница будет отображена с вызовом шаблона, замененным расширением шаблона, как если бы вики-текст действительно содержался в этой точке. Поэтому отображаемая страница будет содержать викиссылку " ™ ".{{TM}}
Show preview[[Trademark|™]]
Например, введите и вы увидите «Символ товарного знака — ™ » при предварительном просмотре страницы или после сохранения изменений.The trademark symbol is {{TM}}
Другой способ использования шаблона — заменить его. Если вы введете и просмотрите или сохраните страницу, вы увидите «Символ торговой марки — ™ », как и в примере с включением выше. Но если вы сохраните страницу, а затем снова посмотрите на исходный код сохраненной страницы , [c] вы увидите , потому что вызов шаблона был заменен расширением шаблона, когда вы сохранили страницу. Нет постоянной связи с вызовом шаблона; никто не может сказать, глядя на исходный код страницы, что вы не только что ввели, и если шаблон {{ TM }} изменится (или прекратит свое существование), ваша страница продолжит отображаться так же, как и сейчас. (Напротив, в примере с включением выше, если шаблон {{ TM }} впоследствии изменится, ваша страница может отображаться по-другому).The trademark symbol is {{subst:TM}}
The trademark symbol is [[Trademark|™]]
The trademark symbol is [[Trademark|™]]
Примером шаблона, который принимает параметры, является template . Попробуйте ввести текст в песочнице — он выдаст следующий текст:{{about}}
{{about|how to use templates|how to use modules|Help:Lua}}
Шаблон использует три неименованных параметра (также называемых позиционными параметрами) в примере выше, но вы можете вызвать тот же шаблон с разным количеством параметров, чтобы получить немного разные результаты, как объясняется в документации шаблона . Например, . Обратите внимание на использование пустого параметра — в этом случае последовательные вертикальные черты означают, что первый указанный параметр является пустой строкой, что в этом шаблоне приведет к тому, что начальное предложение «about» будет пропущено. Это дает:{{about}}
{{about||how to use modules|Help:Lua}}
Простой пример шаблона, который имеет именованные параметры, — Template:Payoff matrix , используемый для генерации сетки 2 на 2. Например:
Дополнительные возможности см. на странице шаблона . Обратите внимание, что шаблон вызывается здесь без указания всех возможных параметров, поэтому неопределенным параметрам присваиваются значения по умолчанию.
При использовании шаблонов стоит обратить внимание на следующие моменты:
{{=}}
a=b
литеральным значением для первого параметра, введите либо , {{done|a{{=}}b}}
либо {{done|1=a=b}}
.|
в спецификации параметров шаблона, так как это будет интерпретироваться как разделение одной спецификации параметра от другой. [e] Эту проблему можно решить аналогичным образом, используя волшебное слово вместо вертикальной черты или — если вертикальное выражение не предназначено для анализа на более высоком уровне — используя HTML-сущность . В качестве альтернативы, для встраивания вики-таблиц в шаблоны вы можете использовать , чтобы избежать избыточного .{{!}}
|
{{Wikitable}}
{{!}}
{{Trim}}
исходную страницу, это, конечно, вызовет шаблон, поэтому, чтобы было легче отображать имя с помощью скобок, а также сделать имя ссылкой на шаблон для удобства читателя, есть шаблон {{ tl }} (шаблон " template link " ). Например, {{tl|Example}}
создает {{ Example }} . Существуют различные другие шаблоны для связывания шаблонов с другими функциями.<noinclude><nowiki></noinclude>~~~~~<noinclude></nowiki></noinclude>
, но это работает только при замене шаблона. Если вы его трансклюите , вы просто получите ~~~~~.<!--
перед каждым символом новой строки и -->
после него, что создает HTML-комментарий .Шаблоны — это просто страницы Википедии. Они создаются, удаляются и редактируются примерно так же, как и любая другая страница.
Чтобы создать шаблон, выберите подходящее имя, перейдите на эту страницу, затем нажмите вкладку «Изменить» или создайте новую страницу по мере необходимости.
Шаблоны обычно размещаются в пространстве имен шаблонов , хотя вы можете разместить шаблон, предназначенный для вашего личного использования или для экспериментов, в вашем собственном пользовательском пространстве .
Перед созданием шаблона выполните быстрый поиск существующих шаблонов (например, изучив Category:Wikipedia templates ), чтобы увидеть, есть ли уже шаблон, который делает то, что вам нужно, или похожий шаблон, код которого можно скопировать и изменить (или оставить на месте и расширить). Найдите общие шаблоны, на которых может быть основан новый шаблон; например, вы можете легко создать шаблон navbox , создав краткий шаблон, который вызывает общий Template:Navbox .
Нет жесткого правила, какое имя выбрать для шаблона — сделайте его коротким, но разумно описательным. Руководство по именованию гласит: «Функция шаблона должна быть ясна из имени шаблона». Если существуют похожие шаблоны, постарайтесь следовать единому шаблону именования. Вы можете переименовать шаблон, не нарушая существующие трансклюзий (что называется breakage ), оставив перенаправление на новое имя шаблона.
Отредактируйте шаблон так же, как и любую другую страницу: перейдите к шаблону и нажмите вкладку «Изменить».
Будьте предельно осторожны при редактировании существующих шаблонов — внесенные изменения могут повлиять на большое количество страниц, часто неожиданным для вас образом. По этой причине многие часто используемые шаблоны защищены от редактирования, за исключением администраторов и редакторов шаблонов ; другие редакторы могут предлагать изменения на странице обсуждения. Некоторые шаблоны предлагают песочницу и тестовые случаи для экспериментов.
Неиспользуемые или неподходящие шаблоны следует удалять. Шаблоны, которые можно легко объединить в другие, следует объединять.
Чтобы предложить удаление или объединение шаблона, перейдите в раздел «Шаблоны для обсуждения» (TfD).
Все, что может быть включено в обычную страницу или статью, может быть включено в шаблон, включая другие шаблоны (называемые подшаблонами ). Шаблоны часто используют программные функции — параметры, функции парсера и другие магические слова — которые позволяют транслируемому контенту меняться в зависимости от контекста. Существуют также специальные теги для управления тем, какая информация транслируется, а какая нет.
Существуют различные меташаблоны и метамодули, помогающие выполнять общие задачи шаблонов. Они называются как обычные шаблоны и модули , но служат цели, которая упрощает написание шаблонов. См. Category:Wikipedia metatemplates и Category:Template metamodules для списка этих шаблонов и модулей.
В коде шаблона значение параметра представлено элементами, заключенными в тройные фигурные скобки, что является ссылкой на параметр .
{{{xxx}}}
расширяется до значения параметра с именем «xxx».{{{1}}}
, {{{2}}}
, и т. д. расширяются до первого, второго и т. д. неименованных параметров. (Обратите внимание, что неименованный параметр может быть альтернативно указан в вызове шаблона как эквивалентный именованный параметр с именем «1», «2» и т. д.).Если параметр не указан в вызове шаблона, то ссылка на параметр ничем не заменяется — она расширяется буквально; это означает, что если вызов шаблона не указывает параметр "xxx", вики-текст {{{xxx}}}
внутри шаблона расширяется буквально до {{{xxx}}} (а не до нулевой строки, которую вы могли ожидать). Вы можете получить более полезное поведение, указав значение по умолчанию в ссылке на параметр. Сделайте это с помощью синтаксиса канала : {{{xxx|dflt}}}
указывает значение по умолчанию dflt
для именованного параметра "xxx" и {{{1|dflt}}}
указывает значение по умолчанию dflt
для первого неименованного параметра. Чаще всего указывается нулевое значение по умолчанию, например {{{1|}}}
или {{{xxx|}}}
.
Вы можете использовать значения параметров по умолчанию для создания псевдонима параметра: например, если параметры "text" и "message" являются именами одного и того же параметра, который также может быть указан как единственный неименованный параметр, то ссылайтесь на параметр с помощью {{{message|{{{text|{{{1|}}}}}}}}}
. Если вызов шаблона указывает более одного из этих параметров, приоритет будет иметь "message", за ним следует "text" и, наконец, первый неименованный параметр. Таким образом, если вызов шаблона указывает параметры |message=A|text=B|C
, указанный выше викитекст расширяется до A
.
Из-за множественных значений синтаксиса двойных и тройных фигурных скобок в викитексте выражения иногда могут быть неоднозначными. Может быть полезно или необходимо включать пробелы для разрешения такой неоднозначности. Например, {{ {{{xxx}}} }}
or {{{ {{xxx}} }}}
, вместо ввода пяти последовательных фигурных скобок, может быть более удобным для чтения человеком. Но следите за нежелательными пробелами, появляющимися в расширении шаблона.
Ссылки на параметры не расширяются, если они заключены в теги.<nowiki>
Пример использования параметров выше относится к шаблону {{ payoff matrix }} . Вот код в шаблоне, который реализует эти параметры:
{| id = "Матрица выплат" style = "background:white; float: {{{ Float | right }}} ; clear:right; text-align:center;" align = {{{ Float | right }}} cellspacing = 0 cellpadding = 8 width = {{{ Width | 225 }}} |- | style = "width:33%; " | | style = "width:33%; border-bottom: solid black 1px;" | {{{ 2L | Left }}} | style = "width:33%; border-bottom: solid black 1px;" | {{{ 2R | Right }}} |- | style = "border-right: solid black 1px; text-align: right; " | {{{ 1U | Up }}} | style="border-right: сплошной черный 1px; border-bottom: сплошной черный 1px; background: {{{ ULc | white }}} ; font-size:120%; "| {{{ UL | 0, 0 }}} | style="border-right: сплошной черный 1px; border-bottom: сплошной черный 1px; background: {{{ URc | white }}} ; font-size:120%; "| {{{ UR | 0, 0 }}} |- | style = "border-right: сплошной черный 1px; text-align: right; " | {{{ 1D | Down }}} | style="border-right: сплошной черный 1px; border-bottom: сплошной черный 1px; background: {{{ DLc | white }}} ; font-size:120%; "| {{{ DL | 0, 0 }}} | style="border-right: сплошной черный 1px; border-bottom: сплошной черный 1px; фон: {{{ DRc | белый }}} ; размер шрифта:120%; "| {{{ DR | 0, 0 }}} |- | style = "размер шрифта:90%;" диапазон столбцов = 3 | '' {{{ Имя |{{ ИМЯ СТРАНИЦЫ }}}}} '' |}
Сущность указывает шаблону использовать значение именованного параметра или текст , если параметр не указан в вызове.{{{2L|Left}}}
2L
Left
Ссылки на параметры не раскрываются внутри открывающих тегов в стиле XML . Таким образом, следующее не будет работать в шаблоне:
поскольку параметр не развернут. Вместо этого вы можете использовать {{#tag:}}
функцию parser , которая, например, используется в для генерации элемента; см. также Help:Magic words § Formatting . Поэтому следующий пример будет работать:{{sfn}}
<ref>...</ref>
Если значение параметра является (или заканчивается) URL , проверьте, отображается ли он в Википедии со ссылкой, которая слишком длинная на один или несколько символов после URL, так что нажатие на ссылку приводит к ошибке или сбою. Это может произойти из-за того, что в исходном коде нет пробела после URL или он содержит или генерирует пробел, который отбрасывается при обработке. Убедитесь, что в расширении шаблона мягкий пробел ( а не жесткий или неразрывный пробел ) следует за URL, независимо от того, предоставили ли вы или пользователь URL или он был сгенерирован автоматической обработкой. Шаблон может быть полезен.{{spaces}}
Код шаблона часто использует переменные и функции парсера, описанные в Help:Magic words , чтобы поведение шаблона зависело от среды, в которую он включен (например, от текущего времени или пространства имен). Функции парсера можно использовать для некоторых арифметических вычислений и строковых манипуляций с переменными и значениями параметров, но некоторые стандартные функции программирования, такие как циклы и назначение переменных, недоступны. Полная обработка строк недоступна; некоторые шаблоны, предоставляющие такую функцию, были созданы, но они неэффективны и несовершенны.
Некоторые из наиболее часто используемых переменных и функций перечислены ниже. Подробнее см. Help:Magic words и более полную документацию на страницах MediaWiki mw:Help:Magic words и mw:Help:Extension:ParserFunctions.
Расширение ParserFunctions предоставляет больше функций парсера, ориентированных на программирование:
Переменные и особенно полезны и часто используются для изменения поведения шаблона в зависимости от контекста, в который они включены. Шаблоны, содержащие ссылки на категории, часто делают это. Например, шаблон очистки содержит ссылку на категорию для категоризации вызывающей страницы как требующей очистки, поэтому шаблон, скорее всего, обусловит эту ссылку на категорию в переменной, чтобы страницы обсуждения, страницы пользователей и любые другие страницы, которые могут вызывать шаблон случайно, не были категоризированы как страницы, требующие очистки.{{PAGENAME}}
{{NAMESPACE}}
{{NAMESPACE}}
Шаблон может вызывать другой шаблон — это называется вложением , а вызываемый шаблон в данном контексте называется подшаблоном . Когда WikiMedia расширяет шаблон, он расширяет подшаблоны по мере появления вызовов к ним, так что конечный продукт по сути является результатом расширения шаблонов из наиболее глубоко вложенных.
Несмотря на то, что этот метод довольно прост в применении, он имеет некоторые примечательные особенности и приемы.
Чтобы передать значение параметра из вызова шаблона в подшаблон, используйте ссылку на параметр в вызове шаблона в подшаблон.
"the quick brown {{B|{{{3}}} }} jumps over..."
'''{{{1}}}'''
{{A|apple|pear|fox}}
"the quick brown '''fox''' jumps over..."
Шаблон может даже выбирать, какой параметр подшаблона передать условно.
the quick brown {{B|{{{3}}}=fox}} jumps over...
'''{{{jumper}}}'''
{{A|apple|pear|jumper}}
"the quick brown '''fox''' jumps over..."
Рекурсия шаблона недоступна; то есть шаблон не может вызывать себя напрямую или косвенно, вызывая другие шаблоны, которые вызывают его. Попытки сделать это приведут к сообщению об ошибке, описывающему «шаблонный цикл».
Когда подшаблон содержит непарные скобки — например, {{lb}}}
— непарные скобки обрабатываются как текст во время обработки — они не влияют на разбор скобок в вызывающем шаблоне. Но если шаблон подставляется, непарные скобки будут обрабатываться как скобки при последующем отображении страницы. Это имеет мало практического применения, но иногда может приводить к неожиданным ошибкам.
Для получения дополнительной информации см. m:Help:Расширенные шаблоны и m:Help:Рекурсивное преобразование викитекста.
По умолчанию, когда страница вызывает шаблон, MediaWiki включает расширение всего шаблона в вызывающую страницу. Однако это поведение можно изменить, используя теги, которые указывают, какие части кода шаблона должны быть включены. Это позволяет шаблону содержать информацию только для отображения, когда отображается сама страница шаблона, например, документацию шаблона или категории . Также возможно включить части шаблона в вызывающие страницы, но не отображать их, когда отображается сама страница шаблона, и не обрабатывать их, когда сохраняется сама страница шаблона (например, категории, которые должны применяться к вызывающим страницам, но не применяются к шаблону). Теги следующие:
<noinclude>...</noinclude>
– Текст между тегами не включается при вызове шаблона, но обрабатывается при отображении или сохранении самого шаблона; обычно используется для документирования в шаблонах .<onlyinclude>...</onlyinclude>
– При вызове шаблона на странице не включается ничего, кроме того, что находится между тегами.<includeonly>...</includeonly>
– Текст между тегами включается при вызове шаблона, но не обрабатывается при отображении или сохранении шаблона.Возможно, наиболее распространенной проблемой при использовании этих блоков являются нежелательные пробелы или строки. Важно помнить, что эффект этих тегов начинается непосредственно перед первой угловой скобкой, а не на предыдущей строке или на предыдущем видимом символе; аналогично эффект заканчивается непосредственно после последней угловой скобки, а не на следующей строке или на следующем видимом символе. Например:
Эти теги могут быть вложены друг в друга, хотя (для данной страницы) это действительно имеет смысл только для <onlyinclude>
тега; вложение <includeonly>
и <noinclude>
теги довольно бессмысленны. Однако будьте осторожны, чтобы правильно вложить теги. Конструкции вроде <onlyinclude>
abc <includeonly>
def </onlyinclude>
ghi не</includeonly>
будут работать так, как ожидается. Используйте правило «первый открыл, последний закрыл», которое является стандартным для HTML/XML.
subst:
для замены шаблона (а не для его включения), что может более наглядно показать, что происходит при включении шаблона; см. Help:Substitution .msgnw:
(сокращение от " message , n o w iki " ) , чтобы более или менее включить источник шаблона, а не его расширение. Это не идеально: списки отображаются, комментарии удаляются, а отдельные переводы строк заменяются пробелами (что особенно сбивает с толку при включении таблиц викитекста).:
, ;
, *
, #
[g] , он обрабатывается во время отображения так, как если бы он был в начале строки, даже если вызов шаблона не является таковым. Это позволяет вам создавать различные виды списков с шаблонами, где вызов шаблона может быть не в правильном месте для списка. Чтобы избежать этого, используйте перед разметкой или вокруг нее, или используйте HTML- сущности , , , , или используйте шаблоны {{ colon }} , {{ ; }} , {{ asterisk }} , {{ number sign }} (эти шаблоны могут отсутствовать в других вики). В некоторых случаях HTML-сущности будут работать, когда не работает. Проблема часто возникает, когда значение параметра в вызове шаблона начинается с одного из четырех символов. См. также {{ Encodefirst }} .<nowiki />
<nowiki>...</nowiki>
:
;
*
#
<nowiki />
{{Trim}}
NewPP limit report
.=
вики-разметку для создания заголовка раздела в шаблоне, предназначенном для использования в пространстве статьи; это приведет к созданию ссылки редактирования на странице, которая включает шаблон и, что может привести к его открытию для редактирования.<includeonly>__NOEDITSECTION__</includeonly>
.Документация для пользователей, вместе с категориями шаблона, обычно идет после кода шаблона, внутри <noinclude>...</noinclude>
тегов. Обычно необходимо поместить открывающий <noinclude>
тег сразу после конца кода, без промежуточных пробелов или новых строк, чтобы избежать включения нежелательных пробелов.
В случае сложных шаблонов документация часто хранится на отдельной подстранице страницы шаблона (с именем "Шаблон: XXX /doc"). Это особенно касается многих защищенных шаблонов, чтобы неадминистраторы могли редактировать документацию. Для этого поместите вызов шаблона после основного кода шаблона и внутри тегов. Если подстраница "/doc" не существует, при отображении шаблона появится ссылка, которую можно использовать для создания подстраницы.{{Documentation}}
<noinclude>...</noinclude>
Подстраница документации, а не сам шаблон, обычно помещается в категории для представления шаблона.
Некоторые шаблоны генерируют объявления категорий в своем расширении, поскольку шаблон предназначен для размещения вызывающих страниц в определенных категориях. Это часто делается с категориями обслуживания. Размещение статей в обычных категориях контента таким образом не рекомендуется. При этом вам, возможно, придется использовать <includeonly>...</includeonly>
теги, чтобы сам шаблон не входил в категорию. При разработке, тестировании, изоляции или демонстрации шаблона, предназначенного для применения категории, либо временно замените каждую категорию тестовой категорией (начиная с X1 , X2 или X3 ), либо подавите категоризацию (см. подавление категории в шаблонах ).
Категоризация вашего шаблона и документирование его правильного использования упростят его поиск и использование другими редакторами.
Объявления категорий для самого шаблона следует размещать на подстранице документации шаблона (или внутри <noinclude>...</noinclude>
тегов, если подстраница документации отсутствует), чтобы избежать размещения вызывающих страниц в категории.
Перенаправление шаблона функционирует как псевдоним. Например, Template :Tsh перенаправляет на ярлык Template:Template , поэтому вы можете кодировать вместо .{{tsh|foo}}
{{Template shortcut|foo}}
Хорошо подготовить шаблонные псевдонимы для вариаций пробелов и заглавных букв. Например, есть шаблон с названием . "W" пишется заглавной буквой, поскольку слово "Wiktionary" таково, но перенаправление (со строчной "w") существует, поскольку редакторы могут ошибочно запомнить его как последнее.{{See Wiktionary}}
{{See wiktionary}}
Ограничение "Post-expand include size". Когда шаблоны визуализируются или расширяются в HTML для просмотра в вашем браузере, они используют память. Это называется "post-expand include size" и имеет ограничение в 2 048 000 байт. Этот размер включается как невидимый комментарий в вывод HTML — используйте функцию просмотра исходного кода вашего браузера, чтобы отобразить необработанный HTML, и найдите "newpp". Отчет будет выглядеть так:
<!-- Отчет о лимитах NewPP Количество узлов препроцессора: 2382/1000000 Размер включения после расширения: 63476/2048000 байт Размер аргумента шаблона: 9517/2048000 байт Количество дорогостоящих функций синтаксического анализатора: 2/500 -->
Пример показывает, что расширение шаблона использует 63 476 байт из 2 048 000 байт доступной памяти.
Проблема отображения. Если на странице включено слишком много шаблонов, размер включения после расширения может превысить лимит. Когда это происходит, шаблоны после лимита больше не будут расширяться и вместо этого будут отображаться как викиссылка (например, Шаблон: Имя шаблона ). Распространенными причинами являются включение слишком большого количества шаблонов цитат , шаблонов навигационных окон и/или шаблонов флагов . Чтобы решить эту проблему , замените шаблоны, напрямую вызовите модули, удалите шаблоны или разделите страницу.
Неотрисованные трансляции все равно учитываются в лимите. Например, страница, которая содержит только , {{#if:{{:Main Page}}}}
все равно будет иметь размер включения после расширения, даже если у нее вообще не будет вывода.
То же самое относится к модулям Scribunto . Например, {{#invoke:Test|main}}
размер включения после расширения все равно увеличится, даже если Module:Test будет просто:
mw . getCurrentFrame (): preprocess "{{msgnw::Main Page}}" -- удалите эту строку, и размер включения после расширения станет нулевым return { main = function () end } -- p.main() не имеет возвращаемого значения
Язык программирования Lua доступен для использования через расширение Scribunto MediaWiki. Вы можете встраивать код Lua в шаблоны, используя {{#invoke:}}
функциональность расширения Scribunto MediaWiki. Исходный код Lua хранится на страницах, называемых модулями, и шаблоны вызывают эти отдельные модули. Например, вы можете вызвать Module:Example с кодом {{#invoke:Example|hello}}
для печати текста "Hello World!".
Шаблон — это страница Википедии, целью которой является включение или замена на другой странице. Шаблоны обычно находятся в пространстве имен шаблонов , но не обязательно. Страницы могут включать или заменять любую страницу, а не только шаблоны; то, что делает страницу шаблоном, — это ее цель.
Вызов шаблона означает его включение или замену. Страница вызывает шаблон. Викитекст на странице, который заставляет страницу вызывать шаблон, называется вызовом шаблона . Например, . Вызовы шаблона всегда ограничиваются двойными фигурными скобками ( ), но не все, что заключено в двойные фигурные скобки, является вызовом шаблона.{{sic|constellation prize}}
{{}}
Расширение — это процесс генерации исходного кода страницы из шаблона, когда страница вызывает его, применяя параметры и другие функции. MediaWiki расширяет шаблон по мере того, как он отображает страницу. Можно также сказать, что сам шаблон расширяется, поэтому работают как «MediaWiki расширяется {{{1}}}
как значение первого позиционного параметра», так и « {{{1}}}
расширяется как значение первого позиционного параметра».
Расширение страницы также является источником страницы, который является результатом расширения шаблона. Например, расширение шаблона {{ sic }} при вызове .{{sic|constellation prize}}
constellation prize [''[[sic]]'']
Отображаемое содержимое страницы, сгенерированное вызовом шаблона (который является визуализацией расширения вызванного шаблона), является результатом шаблона . Результат шаблона, сгенерированный вызовом шаблона, — это "constellation Prize [ sic ]".{{sic|constellation prize}}
Имя шаблона — это имя страницы Википедии (которое также является заголовком страницы). Пространство имен обычно опускается, если это «Шаблон» (что почти всегда так). Кроме того, принято писать имя в двойных скобках, как вызов шаблона, чтобы подчеркнуть, что оно называет шаблон. Например, «Используйте шаблон {{ tm }} для генерации символа торговой марки». Но не заходите так далеко, чтобы помещать имя шаблона в шрифт кода, чтобы избежать путаницы с реальным вызовом шаблона. {{tm}} — это имя шаблона, но {{tm}}
это вызов шаблона.
Некоторые вызовы шаблонов выполняют функцию тегирования; такой вызов шаблона часто называют тегом , например: «Если вы находитесь в процессе серьезного редактирования, поместите тег {{ in use }} в верхней части страницы». Это один из многих способов использования термина «тег» в Википедии.
Параметр — это конкретная часть информации, которая может быть указана в вызове шаблона для влияния на расширение шаблона. Параметр имеет значение . Именованный параметр имеет имя ; неименованный параметр имеет позицию . Вызов шаблона определяет параметр, а код, который это делает, является спецификацией параметра . Шаблон определяет параметр (не явно — просто тем, что шаблон разработан для его использования). Код в шаблоне, который расширяется до значения параметра (например, {{{myparam}}}
), является ссылкой на параметр .
Термин «шаблон» обычно используется для обозначения не только шаблона, но и вызова шаблона, результата шаблона и имени шаблона.
Например:
Такое использование может сбивать с толку, особенно для тех, кто не так хорошо знаком с шаблонами. Подумайте об использовании более конкретного языка.
В качестве альтернативы использованию этого индекса, ссылка на который приведена выше, вы можете выполнить поиск в пространстве имен Template, используя поле Special:Search ниже:
$wgNonincludableNamespaces
.{{Requested move}}
|reason=