Страница полузащищенная
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры

Ярлыки
  • H: ПАРАМЕТР
  • WP: ПАРАМЕТР
‹См. TfM›

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

Пробельные символы (пробелы, табуляции, символы возврата) удаляются с начала и с конца имен и значений именованных параметров, но не с середины: таким образом, {{ ... | 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

Замена

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

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

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

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

Щелкните Шаблон: Lambda , затем щелкните вкладку «Редактировать источник», чтобы увидеть код шаблона (его вики-текст). «Активная» часть этого кода, называемая расширением шаблона, - это одно слово &lambda;. [c] Остальная часть викитекста заключена между тегами, поэтому он отображается на самой странице шаблона, но не отображается, когда шаблон используется (или вызывается) на другой странице.<noinclude>

Чтобы включить Template: Lambda на другую страницу (т. Е. Использовать ее на другой странице), введите (или - регистр первой буквы не имеет значения) в викитекст целевой страницы и нажмите . Страница будет отображаться с вызовом шаблона, замененным расширением шаблона, как если бы викитекст действительно содержался в этой точке. Таким образом, отображаемая страница будет содержать текст «λ».{{lambda}}{{Lambda}}Show preview&lambda;

Например, введите, и вы увидите «11-я буква греческого алфавита - лямбда (𝜆)» при предварительном просмотре страницы или после сохранения изменения. Вы можете использовать шаблоны, не зная деталей их кода; нужно только помнить, какой результат они дают, что обычно описывается на странице шаблона.The 11th letter of the Greek alphabet is the lambda ({{lambda}})

Другой способ использовать этот шаблон - заменить его. Если вы напечатаете и предварительно просмотрите или сохраните страницу, вы снова увидите «11-я буква греческого алфавита - это лямбда (λ)». Если вы еще раз посмотрите на сохраненный викитекст [d] , вы увидите, что вызовы шаблона действительно были заменены расширением шаблона при сохранении страницы. Связь между выходным текстом и шаблоном теперь разорвана, и будущие изменения в шаблоне не повлияют на выходные данные (как это было бы в случае включения).The 11th letter of the Greek alphabet is the lambda ({{subst:lambda}})

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

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

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

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

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

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

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

{| 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: сплошной черный 1px;" | {{{ 2L | Left }}}
| style = "width: 33%; border-bottom: сплошной черный 1px;" | {{{ 2R | Right }}}| -| style = "border-right: сплошной черный 1px; text-align: right;" | {{{ 1U | Up }}}
| style = "border-right: сплошной черный 1 пиксель; нижний край : сплошной черный 1 пиксель; фон: {{{ ULc | white }}} ; размер шрифта: 120%;" | {{{ UL | 0, 0 }}}
| style = "граница-право: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон: {{{ URc | белый }}} ; размер шрифта: 120%; "| {{{ UR | 0, 0 }}}| -| style = "border-right: сплошной черный 1px; text-align: right;" | {{{ 1D | Down }}}
| style = "border-right: сплошной черный 1px; border-bottom: сплошной черный 1px; фон: {{{ DLc | white }}} ; font-size: 120%;" | {{{ DL | 0, 0 }}}
| style = "border-right: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон: {{{ DRc | white }}} ; размер шрифта: 120%; "| {{{ DR | 0, 0 }}}| -| style = "размер шрифта: 90%;" colspan = 3 | '' {{{ Имя | {{PAGENAME }}} }} ''|}

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

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

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

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

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

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

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

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

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

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

Параметры обработки

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

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

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

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

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

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

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

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

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

  • {{#tag: ref | Смит, Адам (1776 г.) ... | name = {{{param}}}}}

Внимание: чрезмерное расширение 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}}

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

Ярлык
  • РГ: НЕСТ
‹См. TfM›

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

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

Примеры:
Шаблон: 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.

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

Примеры:
Шаблон: A содержит the quick brown {{B|{{{3}}}=fox}} jumps over...шаблон: A передает слово «лиса» как именованный параметр шаблона: 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: ПЕТЛЯ ШАБЛОНА
‹См. TfM›

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

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

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

Контроль включения: noinclude, includeonly и onlyinclude

Ярлыки
  • WP: NOINCLUDE
  • WP: ТОЛЬКО ВКЛЮЧЕНО
  • РГ: ТОЛЬКО ВКЛЮЧИТЬ
‹См. TfM›

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

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

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

<includeonly>
}} <includeonly>
}}
<includeonly>
<noinclude>
}} <noinclude>
}}
<noinclude>
</includeonly><noinclude>
{{шаблон}} </includeonly> <noinclude>
{{шаблон}} </includeonly>
<noinclude>

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

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

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

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

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

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

В случае сложных шаблонов документация (вместе с категориями) часто хранится на отдельной подстранице страницы шаблона (с именем «Template: 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» - это заглавная буква, так как слово «Wiktionary» таково, но существует перенаправление с меньшим «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 (): preprocess  "{{msgnw :: Main Page}}"  - удалите эту строку, и размер включения после расширения станет нулевым return  { main  =  function ()  end }  - p.main () не имеет возвращаемого значения

Язык программирования Lua

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

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

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

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

Примечания

  1. ^ Пространства имен, из которых включение не разрешено, указываются в вики с помощью переменной$wgNonincludableNamespaces.
  2. ^ Некоторые шаблоны, например, имеют код для отображения ввиде видимого вывода; следует ли это делать, определяется для каждого шаблона отдельно.{{Requested move}}|reason=
  3. ^ &lambda; - это символ HTML для греческой буквы (λ).
  4. ^ Так как сам новый викитекст нуждается в проверке, а сам новый викитекст не может быть предварительно просмотрен во время редактирования исходного кода, предварительный просмотр страницы не будет иллюстрировать результат подстановки шаблона в викитексте .
  5. ^ Это не применяется, если знак равенства присутствует в другом вызове шаблона или другом элементе, который анализатор обрабатывает отдельно.
  6. ^ Опять же, это не применяется, если оно входит в другой отдельно анализируемый элемент, например вики-ссылку по конвейеру.
  7. ^ Для старой версии дерево подшаблонов будет построено в соответствии с текущим состоянием шаблонов.
  8. ^ Они определены вdoBlockLevels функции Parser.php .