Справка:Шаблон


Страница частично защищена
Из Википедии, свободной энциклопедии
  (Перенаправлено с H:PARAMETERS )
Перейти к навигации Перейти к поиску

Шаблон — это страница Википедии, созданная для включения в другие страницы. Шаблоны обычно содержат повторяющийся материал, который может потребоваться для отображения в большем количестве статей или страниц. Они обычно используются для шаблонных сообщений, стандартных предупреждений или уведомлений, информационных окон , навигационных окон и подобных целей.

Самый распространенный метод включения называется трансклюзия , когда викитекст целевой страницы содержит ссылку на шаблон с использованием синтаксиса. Другой метод — подстановка , когда содержимое шаблона копируется в викитекст целевой страницы только один раз при его сохранении.{{Template name}}

Справка: Краткое руководство по шаблонам дает краткое введение в тему. Существует дополнительная помощь от MediaWiki и Wikimedia в mw:Help:Templates , m:Help:Template и m:Help:Advanced templates .

Ссылка на шаблон

Чтобы включить фактическое полное имя шаблона в виде текста (включая окружающие фигурные скобки) в статью Википедии, примените шаблон ссылки на шаблон . Основной мотивацией для этого являются инструкции и документация. Краткий пример - код:

{{tl|foo}}
генерирует
{{ фу }}

Общее описание

Воспроизвести медиа
Базовый обзор работы шаблонов (8-минутное видео)

Большинство шаблонов являются страницами в пространстве имен шаблонов , что означает, что они имеют заголовки в форме «Шаблон: XXXX ». Однако возможно включение и замена из любого пространства имен, [a] поэтому некоторые страницы шаблонов помещаются в другие пространства имен, такие как пространство имен пользователя . Страницы шаблонов имеют связанные страницы обсуждения .

Шаблоны могут содержать любой желаемый викитекст , включая вызовы других шаблонов. У них есть некоторые ограниченные возможности программирования: настраиваемые значения (называемые параметрами ); вычисление и ветвление (с использованием функций парсера ); и доступ к специфичным для вики переменным ( волшебным словам ), таким как даты, время и имена страниц. Они также могут содержать теги , определяющие, какие части викитекста должны быть включены при включении или замене шаблона. Это означает, что внешний вид самой страницы шаблона не обязательно должен совпадать с включенным контентом (например, он может содержать документацию, категории и т. д. для шаблона).

Как это сделать: Чтобы включить шаблон в статью или страницу, введите викитекст в том месте, где должен появиться шаблон. Первая буква может быть как строчной, так и прописной.{{Template name}}

Префикс Template:перед именем шаблона используется по умолчанию и не требует включения. Однако для шаблонов, хранящихся в других пространствах имен, User:необходимо указывать префикс, например . Чтобы включить страницу в mainspace , поставьте перед ее заголовком двоеточие, например .{{:Page name}}

Примечание. При попытке включения несуществующего шаблона отображается красная ссылка , как и при ссылке на любую другую несуществующую страницу. Переход по ссылке позволяет создать этот конкретный шаблон. Невозможно включать страницы между проектами (такими как Википедии на разных языках или MediaWiki) — чтобы использовать шаблон в проекте на другом языке, в этом проекте должна быть создана копия шаблона.

Синтаксис использования

Параметры

Ярлыки
  • H:ПАРАМЕТР
  • WP:ПАРАМЕТР

Приведенный выше базовый синтаксис включения можно расширить, добавив параметры , которые используются для управления выводом шаблона. Синтаксис для этого следующий: где находится имя шаблона, и каждый из них может либо содержать только значение (они называются безымянными параметрами ), либо иметь форму ( именованные параметры ). Первому, второму, третьему и т.д. безымянным параметрам будут присвоены имена , , , и т.д.{{Template name|parameter|parameter|...}}Template nameparametername=value123

Символы пробела (пробелы, табуляции, возвраты) удаляются с начала и конца имен и значений именованных параметров, но не с середины: таким образом {{ ... | myparam = this is a test }}, это имеет тот же эффект, что и {{ ... |myparam=this is a test}}. Это не относится к безымянным параметрам, в которых сохраняются все пробельные символы.

Какие параметры (если есть) могут или должны быть переданы в шаблон и как они должны быть названы, зависит от кодирования этого шаблона. Именованные параметры могут быть определены в любом порядке. Лишние или неправильно названные параметры будут игнорироваться; неопределенным параметрам будут присвоены значения по умолчанию. Если параметр определен более одного раза, вступает в силу последнее значение.

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

Параметры можно указывать (и ничего не делать), даже если они не представлены в коде шаблона. Например, |reason=часто используется в качестве псевдопараметра для краткого объяснения в вики-источнике, почему был размещен шаблон. [b] Некоторые шаблоны вызывают Module:Check for unknown parameters , чтобы предупредить редактора, если используется параметр, который не учитывается в коде шаблона; это в основном используется для инфобоксов и других шаблонов с большим количеством сложных параметров, где наличие неизвестного обычно является непреднамеренной ошибкой. Если вы обновляете такой шаблон, чтобы включить новый параметр, его вызов модуля также должен быть обновлен, чтобы включить новый параметр.

Вызов

Использование шаблона очень похоже на вызов функции в языке программирования — вызовите ее, и она вернет значение ( вывод ). Как и функции, некоторые шаблоны принимают параметры, которые изменяют вывод.

В MediaWiki , вики-программе , которую использует Википедия, переменные имеют более конкретное значение, которое отличает их от шаблонов, но обе они обозначаются двойными фигурными скобками {{ }} и обе возвращают значение.

В то время как имена переменных MediaWiki все в верхнем регистре, имена шаблонов имеют те же основные функции и ограничения , что и все имена страниц : они чувствительны к регистру (за исключением первого символа); символы подчеркивания анализируются как пробелы; и они не могут содержать ни одного из этих символов: # < > [ ] | { }. Это потому, что они зарезервированы для вики-разметки и HTML .

Знак числа # называется идентификатором фрагмента , поскольку он обозначает фрагмент или раздел документа (например, раздел в статье Википедии). Хотя его можно использовать для ссылки на раздел страницы шаблона (например, Template:Portal#Example ), нет причин помещать идентификатор фрагмента или имя фрагмента в ссылку на шаблон. В , например, строка не имеет цели и поэтому игнорируется.{{Portal#Location|Books}}#Location

Замена

Когда шаблон заменяется, его содержимое жестко закодировано на странице, а не включено . Чтобы узнать, как и когда заменять шаблон, см. Help:Substitution § Когда использовать замену .

Основные примеры использования шаблона

Примечание. Если вы хотите поэкспериментировать с любым из них, используйте тестовую программную среду шаблона , Special:ExpandTemplates или свою пользовательскую страницу или тестовую программную среду.

Пример очень простого шаблона можно найти в Template:TM , который расширяется, чтобы поместить символ товарного знака (™), связанный со статьей о товарном знаке , в этом месте текста. Программист сказал бы, что шаблон возвращает символ товарного знака.

Нажмите Template:TM , затем нажмите на вкладку «Редактировать источник», чтобы увидеть код шаблона (его викитекст). «Активная» часть этого кода, называемая расширением шаблона, — это единственная ссылка [[Trademark|™]]. Остальная часть викитекста заключена между тегами, поэтому она отображается на самой странице шаблона, но не будет отображаться при использовании (или вызове) шаблона на другой странице.<noinclude>

Чтобы перенести Template:TM на другую страницу (т. е. использовать его на другой странице), введите вики-текст целевой страницы и нажмите . Страница будет отображаться с заменой вызова шаблона расширением шаблона, как если бы викитекст действительно содержался в этой точке. Таким образом, отображаемая страница будет содержать вики-ссылку " ™ ".{{TM}}Show preview[[Trademark|™]]

Например, введите, и вы увидите «Символ товарного знака ™ » при предварительном просмотре страницы или после сохранения изменения. Вы можете использовать шаблоны, не зная подробностей их кода; вам нужно только помнить, какой результат они дают, который обычно описан на странице шаблона.The trademark symbol is {{TM}}

Другой способ использования шаблона — его замена . Если вы наберете и просмотрите или сохраните страницу, вы снова увидите «Символ товарного знака — ™ ». Однако, если вы снова посмотрите на сохраненный викитекст, [c] , вы увидите, что вызовы шаблона действительно были заменены расширением шаблона при сохранении страницы. Связь между выходным текстом и шаблоном теперь разорвана, и будущие изменения шаблона не повлияют на вывод (как это было бы в случае включения).The trademark symbol is {{subst:TM}}

Примеры с параметрами

Примером шаблона, который принимает параметры, является шаблон . Попробуйте ввести текст в песочнице — он выдаст следующий текст:{{about}}{{about|how to use templates|how to use modules|Help:Lua}}

Шаблон использует три безымянных параметра (также называемых позиционными параметрами) в приведенном выше примере, но один и тот же шаблон также можно использовать с разным количеством параметров, чтобы получить немного разные результаты, как описано в документации к шаблону . Например, . Обратите внимание на использование пустого параметра — в этом случае последовательные каналы означают, что первый параметр, который был «передан» в шаблон, является пустой строкой, что в этом шаблоне приведет к тому, что начальное предложение «о» будет пропущено. Это производит:{{about}}{{about||how to use modules|Help:Lua}}

Другие шаблоны, особенно более сложные, принимают именованные параметры или смесь именованных и неименованных параметров. Простым примером является Template:Payoff matrix , используемый для создания сетки 2 на 2. Например:

См. страницу шаблона для получения дополнительных возможностей. Обратите внимание, что шаблон используется здесь без определения всех его возможных параметров — неопределенным параметрам присваиваются значения по умолчанию.

Пробелы вокруг знаков равенства и до и после параметров используются только для ясности — они не нужны и игнорируются при оценке шаблона (хотя это не относится к безымянным параметрам). Однако имена параметров полностью чувствительны к регистру; например, невозможно заменить DRна drили dRв приведенном выше примере. Параметры с именами, которые не используются шаблоном, просто игнорируются.

Изучение исходного кода шаблона показывает стандартную разметку таблицы с некоторыми дополнительными объектами тройных скобок, представляющими параметры:

{| id="Матрица выплат" style="background:white; float: {{{ Float|right }}} ; clear:right; text-align:center;" align= {{{ Float|right }}} cellpacing=0 cellpadding=8 width= {{{ Ширина|225 }}}|-
|стиль="ширина:33%;"|
|style="width:33%; нижняя граница: сплошной черный 1px;"| {{{ 2L|Слева }}}
|style="width:33%; нижняя граница: сплошной черный 1 пиксель;"| {{{ 2R|Вправо }}}|-
|style="border-right: сплошной черный 1px; text-align: right; "| {{{ 1U|Up }}}
|style="border-right: сплошной черный 1 пиксель; border-bottom: сплошной черный 1px; background: {{{ ULc|white }}} ; font-size:120%; "| {{{ UL|0, 0 }}}
|style="border-right: сплошной черный 1 пиксель; 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; background: {{{ DRc|white }}} ; font-size:120%; "| {{{ ДР|0, 0 }}}|-
|style="размер шрифта: 90%;" колспан = 3 | '' {{{ Имя|{{ИМЯ СТРАНИЦЫ }}} }} ''|}

Сущность указывает шаблону использовать именованный параметр или текст , если параметр отсутствует в вызове.{{{2L|Left}}}2LLeft

Советы по использованию и обходные пути

При использовании шаблонов стоит обратить внимание на следующие моменты:

  • Шаблоны -- не единственный метод трансклюзии , могут быть и более подходящие методы , такие как селективная трансклюзия .
  • Безымянный параметр не может содержать обычный знак равенства, так как это будет интерпретироваться как выделение именованного параметра. [d] Чтобы передать знак равенства в безымянном параметре (например, в URL -адресе с парами имя-значение ), замените знак равенства специальным шаблоном , который возвращает знак равенства, который не будет интерпретироваться. Другой метод заключается в замене безымянного параметра (и любых последующих безымянных параметров) именованными параметрами — первый безымянный параметр эквивалентен именованному параметру и так далее. Чтобы вызвать шаблон с литеральным значением первого параметра, введите либо , либо .{{=}}|1={{done}}a=b{{done|a{{=}}b}}{{done|1=a=b}}
  • Точно так же нельзя использовать обычную вертикальную черту |в параметрах шаблона, так как она будет интерпретироваться как разделитель. [e] На этот раз проблему можно решить, используя волшебное слово вместо канала или — если канал не предназначен для анализа на более высоком уровне — используя сущность HTML . В качестве альтернативы, для встраивания вики -таблиц в шаблоны вы можете использовать , чтобы избежать чрезмерного расширения .{{!}} &#124;{{Wikitable}}{{!}}
  • Помните, что символы пробела (пробелы, табуляция, возврат каретки и перевод строки) не удаляются автоматически из начала и конца безымянных параметров, в отличие от именованных параметров. Включение таких символов (или любых других невидимых символов в любые параметры) может в некоторых случаях непредвиденным образом повлиять на поведение шаблона. (Разработчики шаблонов могут использовать их для удаления нежелательных пробелов в безымянных параметрах.){{Trim}}
  • В документации и обсуждениях часто удобно иметь возможность создавать синтаксис вызова шаблона со ссылкой на рассматриваемый шаблон, но без фактического вызова шаблона. Это можно легко сделать с помощью шаблона (шаблон " template link " ). Например, выдает {{ Example }}. Существует множество других шаблонов для связывания шаблонов с различными функциями.{{tl}}{{tl|Example}}
  • При изменении шаблона (при редактировании шаблона или одного из его подшаблонов) изменение отразится на всех страницах, на которые включен шаблон. Однако изменение может не сразу стать видимым на всех страницах; ранее кэшированная версия страницы, основанная на предыдущей версии шаблона, может продолжать отображаться в течение некоторого времени. Используйте функцию очистки , чтобы заставить страницу отображаться с использованием последних версий шаблонов, в том числе на самой странице шаблона, если она содержит примеры использования.
  • При просмотре старых версий страниц помните, что шаблоны будут включены в том виде, в котором они есть сейчас, а не в том виде, в каком они были, когда старая версия страницы была активной.
  • Чтобы вывести список всех страниц, на которые включен шаблон, используйте ссылки What здесь на странице шаблона. Это не будет включать страницы, где шаблон был заменен.
  • Чтобы получить список шаблонов, включенных на страницу, нажмите «Изменить» и найдите список под окном редактирования. Этот список также включает подшаблоны, используемые непосредственно включенными шаблонами. Чтобы получить такой список для раздела страницы, старой версии страницы, [f] или вашей новой отредактированной версии перед сохранением, нажмите Show previewна соответствующую страницу редактирования.
  • Существуют ограничения на количество и сложность шаблонов, которые может иметь статья. См. раздел « § Расширить пределы », чтобы узнать, как решить эту проблему.
  • Если вы хотите, чтобы шаблон оставил отметку времени или подпись , вы можете написать <noinclude><nowiki></noinclude>~~~~~<noinclude></nowiki></noinclude>, но это сработает только в том случае, если вы подмените шаблон. Если вы включите его, вы просто получите ~~~~~.
  • Чтобы улучшить читаемость, обычно программисты любят разбивать код символами новой строки и делать отступы. К сожалению, программное обеспечение MediaWiki не поддерживает эту функцию; во многих случаях эти специально созданные новые строки обрабатываются программным обеспечением как контент. Одним из возможных обходных путей является добавление <!--перед каждым символом новой строки и -->после него, что создает HTML-комментарий .

Создание и редактирование шаблонов

Шаблоны создаются и редактируются почти так же, как и любая другая страница: выберите подходящее имя, перейдите на эту страницу, затем щелкните вкладку «Редактировать» или создайте новую страницу по мере необходимости. Как упоминалось выше, шаблоны обычно размещаются в пространстве имен шаблонов , хотя шаблоны, предназначенные для вашего личного использования или для экспериментов, могут быть созданы в вашем собственном пользовательском пространстве . Все, что может быть включено в обычную страницу или статью, может быть включено в шаблон, включая другие шаблоны (так называемые подшаблоны ). Шаблоны часто используют функции программирования — параметры, функции парсера и другие волшебные слова .— которые позволяют включенному контенту варьироваться в зависимости от контекста. Существуют также специальные теги для контроля того, какая информация включается, а какая нет.

Перед созданием шаблона выполните быстрый поиск существующих шаблонов (например, просмотрев категорию: Шаблоны Википедии ), чтобы узнать, существует ли уже шаблон, который делает то, что вы хотите, или аналогичный шаблон, код которого можно скопировать и изменить (или оставить в место и расширено). Ищите общие шаблоны, на которых может основываться новый шаблон; например, шаблоны навигационных окон можно легко создать, вызвав общий шаблон Template:Navbox .

Не существует жесткого правила относительно того, какое имя выбрать для шаблона — делайте его коротким, но достаточно описательным. Если существуют похожие шаблоны, постарайтесь следовать единому шаблону именования. Шаблоны можно переименовывать, не нарушая существующих включений (что называется поломкой ), при условии, что перенаправление на новое имя шаблона остается позади.

Будьте предельно осторожны при редактировании существующих шаблонов — сделанные изменения могут повлиять на большое количество страниц, часто неожиданным для вас образом. По этой причине многие часто используемые шаблоны защищены от редактирования, за исключением администраторов и редакторов шаблонов ; другие редакторы могут предлагать изменения на странице обсуждения. Некоторые шаблоны предлагают песочницу и тестовые примеры для экспериментов.

Чтобы предложить удаление или объединение неиспользуемых или неподходящих шаблонов или шаблонов, которые можно легко объединить, перейдите в раздел Шаблоны для обсуждения (TfD).

Обработка параметров

Значения параметров, которые могут быть переданы в шаблон, представлены в коде шаблона элементами, заключенными в тройные фигурные скобки:

  • Код {{{xxx}}}будет заменен значением параметра с именем xxx. они известны как именованный параметр s .
  • Коды {{{1}}}, {{{2}}}, и т.д. будут заменены первым, вторым и т.д. безымянным параметром (или значением параметра с именем 1, 2, и т.д.); они известны как позиционный параметр s .

Если параметру не присвоено значение, то замены не будет; это означает, что если для параметра не передается |xxx=значение, значение выражения {{{xxx}}}внутри шаблона будет буквально {{{xxx}}} , а не пустым, как вы могли ожидать. Более интуитивное поведение может быть достигнуто путем указания значений параметров по умолчанию. Это делается с помощью синтаксиса канала : {{{xxx|dflt}}}указывает значение по умолчанию dfltдля именованного параметра |xxx=и {{{1|dflt}}}указывает значение по умолчанию dfltдля первого безымянного параметра. Чаще всего это используется для указания нулевых значений по умолчанию, таких как {{{1|}}}или {{{xxx|}}}.

Псевдонимы параметров — это особый случай значений по умолчанию. Например, если параметры |1=, |text=и |message=являются именами одного и того же параметра, то {{{message|{{{text|{{{1|}}}}}}}}}можно использовать викитекст. Если задано более одного из этих параметров, тогда messageбудет иметь приоритет, за которым следует text, и, наконец, первый безымянный параметр. То есть, если шаблону, содержащему этот викитекст, переданы параметры |message=A|text=B, викитекст расширится до A.

Из-за многократного использования синтаксиса с двойными и тройными скобками выражения иногда могут быть неоднозначными. Может быть полезно или необходимо включать пробелы для устранения такой двусмысленности. Например, {{ {{{xxx}}} }}или {{{ {{xxx}} }}}, вместо пяти последовательных фигурных скобок, может быть более удобочитаемым. Однако следите за появлением нежелательных пробелов в расширениях шаблона.

Особый случай: параметры внутри открывающего тега в стиле XML.

Параметры не расширяются, когда они заключены в теги. Они также не раскрываются, если помещаются в открывающий тег в стиле XML . Таким образом, в шаблоне не будет работать следующее:<nowiki>

  • <ref name={{{param}}}> Смит, Адам (1776 г.)...</ref>

потому что параметр не расширяется. Вместо этого вы можете использовать {{#tag:}} функцию парсера , которая, например, используется для генерации элемента; см. также Help:Волшебные слова § Форматирование . Поэтому следующий пример будет работать:{{sfn}}<ref>...</ref>

  • {{#тег: ссылка | Смит, Адам (1776 г.)... | имя={{{параметр}}} }}

Внимание: чрезмерное расширение URL

Если значение параметра равно (или заканчивается) 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}}

Шаблоны вложения

Ярлык
  • ВП: ГНЕЗДО

Шаблоны могут содержать другие шаблоны — это обычно называется вложением . По мере обработки шаблона викитекст, созданный любыми вложенными шаблонами, включается в шаблон вложения, так что конечный продукт по существу обрабатывается из шаблона с наиболее глубокой вложенностью. Несмотря на то, что приложение довольно простое, оно включает в себя некоторые примечательные особенности и хитрости.

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

Примеры:
Template:A содержит "the quick brown {{B|{{{3}}} }} jumps over..."Это принимает значение, переданное третьему позиционному параметру Template:A, и передает его в качестве первого позиционного параметра Template:B, а затем возвращает викитекст, созданный B, как часть фразы.
Шаблон:A содержит "the quick brown {{B|waldo={{{3}}} }} jumps over..."то же, что и ранее, за исключением того, что третий позиционный параметр шаблона:A передается именованному параметру "waldo" шаблона:B.

Сами параметры шаблона можно выбирать условно.

Примеры:
Template:A содержит the quick brown {{B|{{{3}}}=fox}} jumps over...Template:A передает слово «лиса» в качестве именованного параметра Template:B, имя которого является третьим позиционным параметром A.
{{#if: test string | value if test string is not empty | {{#if: test string | value if test string is not empty | value if test string is empty (or only white space) }} }}
Ярлык
  • WP:ШАБЛОН ЦИКЛ

Шаблон может вызывать сам себя, но остановится после одной итерации, чтобы предотвратить бесконечный цикл.

Когда вложенный шаблон содержит несовпадающие фигурные скобки, как в случае, несовпадающие фигурные скобки обрабатываются как текст во время обработки и не влияют на синтаксический анализ фигурных скобок во вложенном шаблоне. Однако при замене вложенного шаблона замена обрабатывается первой, и это меняет способ анализа фигурных скобок во вложенном шаблоне. Это имеет мало практического применения, но иногда может привести к неожиданным ошибкам.{{lb}}}

См. m:Help:Расширенные шаблоны и m:Help:Рекурсивное преобразование вики-текста для получения дополнительной информации. Эти страницы также содержат информацию о необычных вызовах, таких как {{template {{{parameter|}}} }}.

Управление включением: noinclude, includeonly и onlyinclude

Ярлыки
  • WP:НЕ ВКЛЮЧАТЬ
  • WP:ВКЛЮЧЕНО ТОЛЬКО
  • WP: ТОЛЬКО ВКЛЮЧАТЬ

По умолчанию, когда шаблон включается (или заменяется ), весь викитекст (код) страницы шаблона включается в текст целевой страницы. Однако это поведение можно изменить, используя теги, указывающие, какие части кода шаблона должны быть включены. Это позволяет избежать включения информации, предназначенной для отображения только на самой странице шаблона, такой как документация по шаблону или категории . Также возможно, что части кода будут включены, но не будут обрабатываться на самой странице шаблона (например, категории, применяемые к целевым страницам, которые не применяются к шаблону). Теги следующие:

  • <noinclude>...</noinclude> – текст между тегами не будет включаться при включении (подстановке) шаблона, но будет обрабатываться на странице шаблона; обычно используется для документации в шаблонах .
  • <onlyinclude>...</onlyinclude> – Это указывает, что ничего на странице, кроме того, что появляется между тегами, не будет включено (заменено).
  • <includeonly>...</includeonly> – Текст между тегами будет включен (подставлен), но не будет обработан на собственной странице шаблона.

Возможно, наиболее распространенной проблемой при использовании этих блоков являются нежелательные пробелы или линии. Важно помнить, что действие этих тегов начинается непосредственно перед первой угловой скобкой, а не на предыдущей строке или на предыдущем видимом символе; аналогично эффект заканчивается сразу после последней угловой скобки, а не на следующей строке или со следующим видимым символом. Например:

<includeonly>
}}<includeonly>
}}
<включать только>
<noinclude>
}}<без включения>
}}
<не включить>
</includeonly><noinclude>
{{template}}</includeonly><noinclude>
{{template}}</includeonly>
<noinclude>

Эти теги могут быть вложены друг в друга, хотя (для данной страницы) это действительно относится только к тегу; вложенность и теги довольно бессмысленны. Однако будьте осторожны, чтобы правильно вложить теги. Такие конструкции, как abc def ghi , не будут работать должным образом. Используйте стандартное для HTML/XML правило «первый открыт, последний закрыт».<onlyinclude><includeonly><noinclude><onlyinclude><includeonly></onlyinclude></includeonly>

Проблемы и обходные пути

  • Если первый символ, создаваемый шаблоном или функцией синтаксического анализатора, является одним из четырех символов вики-разметки :— , ;, *, #[g] — тогда он обрабатывается так, как если бы он находился в начале строки, даже если тег шаблона не является таковым. Это позволяет создавать различные типы списков в шаблонах, где шаблон не всегда может быть в правильном месте для списка. Чтобы избежать этого, либо используйте перед разметкой, либо используйте объекты HTML , , и соответственно. В некоторых случаях объекты HTML будут работать, а объекты — нет. Проблема часто возникает, когда значение параметра в вызове шаблона начинается с одного из четырех символов.<nowiki />&#58;&#59;&#42;&#35;<nowiki />
  • По вопросам, связанным с заменой шаблонов, например, как управлять заменой подшаблонов, а также при замене родительского шаблона, см. Help:Substitution .
  • Шаблон можно использовать для удаления любого начального или конечного пробела из безымянных значений параметров, если это вызовет проблемы; Таким образом, значения именованных параметров автоматически удаляются.{{Trim}}
  • Для отладки шаблонов иногда полезны следующие методы:
    • Используется subst:для замены шаблона (а не его включения), что может более четко показать, что происходит при включении шаблона; см. Справка: Замена .
    • Используйте msgnw:(сокращение от « mes sage , no wiki » ) , чтобы более или менее включить вики-текст страницы шаблона, а не обработанное содержимое. Это не идеально: списки отображаются, комментарии удаляются, а отдельные новые строки заменяются пробелами (что особенно сбивает с толку при включении таблиц викитекста).
    • Используйте Special:ExpandTemplates , чтобы увидеть полное рекурсивное расширение одного или нескольких шаблонов.
  • Для защиты ресурсов сервера и избежания бесконечных циклов парсер накладывает определенные ограничения на глубину вложенности трансклюзии и на размер страницы с развернутыми шаблонами. Это может привести к разрыву страниц при использовании очень сложных шаблонов, особенно если на одной странице несколько таких шаблонов. Для получения дополнительной информации см . Ограничения WP:Template . Общую нагрузку страницы на сервер можно проверить, изучив сгенерированный HTML для страницы и просмотрев NewPP limit reportкомментарии.
  • Не используйте =вики-разметку для создания заголовков разделов в шаблоне, который предназначен для использования в пространстве статьи; это создаст [edit]ссылку, которая при включении откроет шаблон для редактирования.
    • Вы можете избежать [edit]ссылок на шаблон, включив <includeonly>__NOEDITSECTION__</includeonly>.

Документация

Категоризация вашего шаблона и документирование его правильного использования облегчит другим редакторам поиск и использование.

Документация для пользователей вместе с категориями шаблона обычно размещается после кода шаблона внутри <noinclude>...</noinclude>тегов. Обычно необходимо поместить открывающий <noinclude>тег сразу после конца кода, без промежуточных пробелов или новых строк, чтобы избежать включения нежелательных пробелов.

В случае сложных шаблонов документация (вместе с категориями) часто хранится на отдельной подстранице страницы шаблона (с именем «Шаблон: XXX /doc»). Это также относится ко многим защищенным шаблонам, что позволяет редактировать информацию пользователям, не являющимся администраторами. Это достигается размещением шаблона после основного кода шаблона и внутри тегов. Если подстраницы «/doc» не существует, появится ссылка, позволяющая ее создать.{{Documentation}}<noinclude>...</noinclude>

Категоризация

Классифицировать страницы по включению шаблона

Некоторые шаблоны содержат определения категорий в своем включенном коде, поскольку они предназначены для размещения целевых страниц в определенных категориях. Это часто делается с помощью категорий обслуживания (помещать статьи в обычные категории контента таким образом не рекомендуется). При этом может потребоваться использование <includeonly>...</includeonly>тегов, чтобы сам шаблон не попадал в категорию. При разработке, тестировании, изолировании или демонстрации шаблона, предназначенного для применения категории, либо временно замените каждую категорию тестовой категорией (начиная с X1 , X2 или X3 ), либо отключите категоризацию (см. Подавление категорий в шаблонах ).

Классифицировать шаблоны

Объявление о категоризации [[Category:Some-topic templates]]должно быть размещено на странице документации шаблона (или внутри <noinclude>...</noinclude> тегов , если страницы документации нет), чтобы не загрязнять включающие страницы.

Псевдонимы

Псевдонимы могут быть созданы с помощью редиректов . Например, Template:Tsh перенаправляет на ярлык Template:Template . Затем вы можете написать вместо .{{tsh|foo}}{{Template shortcut|foo}}

Хорошо подготовить псевдонимы шаблонов, которые отличаются только пробелами и заглавными буквами. Например, есть шаблон под названием . Буква «W» заглавная, так как слово «Викисловарь» такое, но перенаправление с более низкой буквой «w» существует, потому что вместо этого пользователи могут набирать последнее.{{See Wiktionary}}{{See wiktionary}}

Ограничения шаблона

Ограничение «Пост-расширение включает размер». Когда шаблоны визуализируются или расширяются в HTML для просмотра в браузере, они используют память. Это называется «включаемый размер после расширения» и имеет ограничение в 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 был просто:

мв . getCurrentFrame (): предварительно обработайте  "{{msgnw::Main Page}}"  -- удалите эту строку, и размер включения после расширения станет равным нулю return  { main  =  function ()  end }  -- p.main() не имеет возвращаемого значения

язык программирования луа

С февраля 2013 года язык программирования Lua доступен для использования через расширение Scribunto MediaWiki. Код Lua можно встраивать в шаблоны, используя {{#invoke:}}функциональные возможности расширения Scribunto MediaWiki. Исходный код Lua хранится на страницах, называемых модулями, и эти отдельные модули затем вызываются на страницах шаблонов. Например, Module:Example можно вызвать, используя код {{#invoke:Example|hello}}для печати текста «Hello World!».

Поиск по шаблону

В качестве альтернативы использованию этого указателя, указанного выше, вы можете выполнить поиск в пространстве имен Template, используя поле Special:Search ниже:

Смотрите также

Страницы справки

  • Введение:
    • Справка:Краткое руководство по шаблонам
    • Справка:Замена
    • Справка:Включение
  • Справка:Волшебные слова
  • Справка:Работа со строками
  • Справка:Меташаблоны
  • WP:Расширенное кодирование шаблонов
  • WP:Шаблон документации
  • WP:Указатель шаблонов
  • WP:Ограничения шаблона
  • WP:пространство имен шаблонов
  • WP:Шаблон песочницы и тестовых случаев
  • WP:TemplateData — стандартизированное описание шаблона, используемое Визуальным редактором.
  • WP:Шаблоны WikiProject
  • m:Справка:Расширенные шаблоны
  • m:Справка:Расчет
  • m:Справка:Параметр по умолчанию
  • m:Справка:Шаблон
  • m:Пользователь:Happy-melon/Шаблоны
  • mw:Справка:ExpandTemplates
  • mw:Справка:Расширение:ParserFunctions
  • mw:Справка:Волшебные слова
  • mw:Справка:Шаблоны

Справочные страницы Mediawiki

  • mw:Manual:$wgEnableScaryTranscluding
  • mw:Manual:$wgNonincludableNamespaces
  • mw:Вручную:Parser.php
  • mw:Руководство:Функции парсера

Специальные страницы

  • WP:Отчеты/Шаблоны базы данных, включенные на большинстве страниц, не считая включений через перенаправления .
  • Special:Allpages (namespace 10) — все страницы в пространстве имен Template.
  • Special:ExpandTemplates
  • Special:Unusedtemplates — шаблоны, которые не включаются (но могут использоваться для замены)

Другие внутренние страницы

  • Справка:Пользовательский стиль — страницы CSS и JS
  • Справка:Системное сообщение — Страницы пространств имен MediaWiki
  • m:Project portals — многоязычные страницы портала.
  • Источники WP:Book — используются Special:Booksources.
  • m: Черный список спама
  • Шаблон:Пример

Примечания

  1. ^ Пространства имён, включение которых запрещено, указываются на вики переменной$wgNonincludableNamespaces.
  2. ^ Некоторые шаблоны, такие как, имеют код для отображенияв виде видимого вывода; нужно ли это делать, определяется в зависимости от шаблона.{{Requested move}}|reason=
  3. ^ Так как сам новый викитекст необходимо просмотреть, а сам новый викитекст не может быть предварительно просмотрен во время редактирования исходного кода, предварительный просмотр страницы не будет иллюстрировать результат замены шаблона в викитексте .
  4. ^ Это не применяется, если знак равенства встречается в другом вызове шаблона или другом элементе, который синтаксический анализатор обрабатывает отдельно.
  5. ^ Опять же, это не применяется, если он находится внутри другого отдельно анализируемого элемента, такого как переданная викиссылка.
  6. ^ Для старой версии дерево подшаблонов будет построено в соответствии с текущим состоянием шаблонов.
  7. ^ Они определены вdoBlockLevels функции Parser.php .
Получено с https://en.wikipedia.org/w/index.php?title=Help:Template&oldid=1063964564#Parameters .