WikiDer > Справка: шаблон - Википедия

Help:Template - Wikipedia

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

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

Справка: краткое руководство по шаблонам дает краткое введение в предмет. Дополнительную помощь можно получить от MediaWiki и Wikimedia по адресу mw: Справка: Шаблоны, m: Справка: Шаблон, и m: Справка: Расширенные шаблоны.

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

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

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

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

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

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

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

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

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

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

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

Параметры

Приведенный выше базовый синтаксис включения может быть расширен добавлением параметры, которые используются для управления выводом шаблона. Синтаксис для этого:{{Имя Шаблона|параметр|параметр|...}}куда Имя Шаблона это имя шаблона, и каждый параметр может содержать только значение (они называются безымянные параметры) или иметь форму имя=ценить ( именованные параметры). Первым, вторым, третьим и т. Д. Безымянным параметрам будут присвоены имена 1, 2, 3, так далее.

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

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

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

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

Вызов

Вызов шаблона мало чем отличается от вызова Переменная или функция на языке программирования: вызовите его со ссылкой, и он вернет значение ( выход). Как и функции, некоторые шаблоны принимают параметры, изменяющие вывод.

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

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

В числовой знак # называется идентификатор фрагмента потому что это означает фрагмент или раздел документа (например, раздел в статье в Википедии). Хотя это может быть использован для ссылки на раздел страницы шаблона (например, Шаблон: Портал # Пример), нет причин помещать идентификатор фрагмента или имя фрагмента в ссылку на шаблон. В {{Портал#Место расположения| Книги}}, например, строка #Место расположения не имеет цели и поэтому игнорируется.

Замена

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

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

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

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

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

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

Например, введите 11-я буква греческого алфавита - это лямбда ({{лямбда}}) и вы увидите «11-я буква греческого алфавита - лямбда (λ)» при предварительном просмотре страницы или после сохранения изменения. Вы можете использовать шаблоны, не зная деталей их кода; нужно только помнить, какой результат они дают, что обычно описывается на странице шаблона.

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

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

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

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

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

РазметкаОтображается как
{{матрица выплат | UL = 5 | UR = 7 | DL = 2 | DR = 9 | Name = Пример использования}}
ОставилиПравильно
Вверх57
Вниз29
Пример использования

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

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

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

{| id = "Матрица выплат" style = "background: white; float: {{{Поплавок | вправо}}}; ясно: правильно; выравнивание текста: центр; "выравнивание ={{{Поплавок | вправо}}} cellspacing = 0 cellpadding = 8 width ={{{Ширина | 225}}}| - | style = "width: 33%;" | | style = "width: 33%; border-bottom: сплошной черный 1px;" | {{{2L | Слева}}}| style = "width: 33%; border-bottom: сплошной черный 1px;" | {{{2R | Вправо}}}| - | style = "border-right: сплошной черный 1px; text-align: right;" | {{{1U | Вверх}}}| style = "border-right: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон:{{{ULc | белый}}}; размер шрифта: 120%; "| {{{UL | 0, 0}}}| style = "border-right: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон:{{{URc | белый}}}; размер шрифта: 120%; "| {{{UR | 0, 0}}}| - | style = "border-right: сплошной черный 1px; text-align: right;" | {{{1D | Вниз}}}| style = "border-right: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон:{{{DLc | белый}}}; размер шрифта: 120%; "| {{{DL | 0, 0}}}| style = "border-right: сплошной черный 1 пиксель; нижняя граница: сплошной черный 1 пиксель; фон:{{{DRc | белый}}}; размер шрифта: 120%; "| {{{DR | 0, 0}}}| - | style = "font-size: 90%;" colspan = 3 |''{{{Имя | {{PAGENAME}}}}}''|}

Организация {{{2L | Слева}}} указывает шаблону использовать указанный параметр 2L или текст Оставили если параметр отсутствует в вызове.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • <ref name={{{param}}}> Smith, Adam (1776)...</ref>

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

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

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

Если значение параметра равно (или заканчивается) a URL, проверьте, отображается ли он в Википедии с расширением ссылки на один или несколько символов после URL-адреса, так что щелчок по ссылке вызывает ошибку или сбой. Убедитесь, что после обработки программным обеспечением мягкое пространство (нет а жесткое или неразрывное пространство) следует за URL-адресом, независимо от того, предоставили ли вы или пользователь URL-адрес или он был создан в результате автоматической обработки. Возможно, исходный код может содержать или генерировать пространство, которое отбрасывается при обработке, или там может не быть места. Исправьте исходный код, например, заставив мягкое пространство после URL-адреса. В {{пробелы}} шаблон может быть полезен.

Системные переменные и условная логика

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

Некоторые из наиболее часто используемых переменных и функций перечислены ниже. Подробнее см. Справка: Волшебные слова и более полную документацию на страницах MediaWiki mw: Help: Волшебные слова и mw: Справка: Расширение: Функции парсера.

Примеры основных функций парсера
ОписаниеТекст введенРезультат
Текст в верхнем регистре{{uc: Небеса БЕТСИ! }}НЕБО БЕТСИ!
Текст в нижнем регистре{{lc: Небеса БЕТСИ! }}небеса Бетси!
Получение имени пространства имен{{NS: 1}}Разговаривать
Получение URL-адреса Википедии{{fullurl: pagename}}//en.wikipedia.org/wiki/Pagename

Расширение ParserFunctions предоставляет больше функций синтаксического анализатора, ориентированных на программирование.

Примеры функций синтаксического анализатора расширений
ОписаниеТекст введенРезультат
Проверка на равенство двух строк (или параметров){{#ifeq: да | да | Ура...! | Штопать...! }}Ура...!
{{#ifeq: да | нет | Ура...! | Штопать...! }}Штопать...!
Проверка того, содержит ли строка (или параметр) что-либо (кроме пробелов){{#if: {{{param |}}} | Ура...! | Штопать...! }}Штопать...!
Расчет (математика)
[площадь круга радиуса 4 до 3 знаков после запятой]
{{#expr: (pi * 4 ^ 2) round 3}}50.265
Проверка результата расчета
[1230 четное или нечетное?]
{{#ifexpr: 1.23E + 3 mod 2 | Нечетный | Четное }}Четное
Примеры системных переменных
ОписаниеТекст введенРезультат (для этой справочной страницы)
Имена страниц{{PAGENAME}}Шаблон
{{FULLPAGENAME}}Справка: шаблон
Имя текущего пространства имен{{NAMESPACE}}Помощь
Количество зарегистрированных пользователей{{КОЛИЧЕСТВО ПОЛЬЗОВАТЕЛЕЙ}}40,532,064
Количество страниц в данной категории{{PAGESINCATEGORY: Альбомы "Странный Эл" Янковича}}20
Текущая версия ПО{{ТЕКУЩАЯ ВЕРСИЯ}}1.36.0-wmf.21 (d6a6c3b)
Отметка времени последней редакции{{REVISIONTIMESTAMP}}20201216141344

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

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

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

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

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

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

Примеры:
Шаблон: A содержит быстрый коричневый {{B | {{{3}}} = лисица}} перепрыгивает ... Шаблон: A передает слово «лиса» в качестве именованного параметра шаблона: B, имя которого является третьим позиционным параметром A.
{{#если: тестовая строка | значение, если тестовая строка не пуста | {{#если: тестовая строка | значение, если тестовая строка не пуста | значение, если тестовая строка пуста (или только пробел) }} }}

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

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

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

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

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

  • <не включать> ... - Текст между тегами будет нет быть включенным при включении (замене) шаблона, но буду обрабатываться на странице шаблона; общее использование для документация в шаблонах.
  • <onlyinclude> ... - Это означает, что на странице ничего нет. Кроме то, что появляется между тегами, будет включено (заменено).
  • <включать только> ... - Текст между тегами буду будут включены (заменены), но будут нет обрабатываться на собственной странице шаблона.
ВикитекстЧто рендерится Вот (исходная страница)Что включено там (целевая страница)
text1 text2текст1 текст2text2
text1 text2текст1 текст2текст 1
text1 text2text2текст1 текст2
text1 text2text2текст 1

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

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

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

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

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

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

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

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

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

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

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

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

Категоризация шаблонов

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

Псевдонимы

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

Хорошо подготовить псевдонимы шаблонов, которые отличаются только пробелами и заглавными буквами. Например, есть шаблон с названием {{См. Викисловарь}}. "W" заглавная, так как слово "Викисловарь" таково, но перенаправление {{См. Викисловарь}} с меньшим "w" существует, потому что пользователи могут вместо этого вводить последнее.

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

Ограничение на размер после развертывания. Когда шаблоны отображаются или расширяются в HTML для просмотра в вашем браузере, они используют память. Это называется «размер включения после расширения» и имеет ограничение в 2 048 000 байт. Этот размер включен в виде невидимого комментария в вывод HTML - используйте функцию просмотра исходного кода вашего браузера, чтобы показать необработанный HTML и выполнить поиск по запросу «newpp». Отчет будет выглядеть так:

<!--Отчет о лимитах NewPPКоличество узлов препроцессора: 2382/1000000Размер включения после развертывания: 63476/2048000 байтРазмер аргумента шаблона: 9517/2048000 байтКоличество дорогостоящих функций парсера: 2/500-->

Пример показывает, что расширение шаблона использует 63 476 байт из 2 048 000 байт доступной памяти.

Проблема с отображением. Если на страницу включено слишком много шаблонов, размер включения после развертывания может превысить лимит. Когда это происходит, шаблоны после ограничения больше не будут расширяться и вместо этого будут отображаться как вики-ссылки (например, Шаблон:Имя Шаблона). Распространенными причинами являются включение слишком большого количества шаблонов цитирования и / или шаблонов флагов. Чтобы решить эту проблему заменять шаблоны, удалить шаблоны или расколоть страница.

Необработанные включения по-прежнему учитываются при подсчете лимита. Например, страница, содержащая только {{#if: {{: Главная страница}}}} все равно будет иметь размер включения после расширения, даже если он вообще не будет выводить.

То же самое касается Модули Scribunto. Например, {{#invoke: Test | main}} все равно увеличивал бы размер включения после расширения, даже если бы Module: Test был просто:

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

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

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

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

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

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

Справочные страницыСтраницы руководстваСпециальные страницыДругие страницы не для прямого просмотра

Примечания

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