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

Материал из FictionBook
Перейти к: навигация, поиск
Справка
Справка по MediaWiki
Как подготовить статью (документ)
Справка по редактированию
Форматирование Таблиц
Ссылки
Категории
Шаблоны
Пространства имен
Интервики
Специальные символы
Таблица цветов
Справка по FictionBook
Правила оформления таблиц
Описание категорий сайта
Описание шаблонов сайта


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

Общая информация

Страницы шаблонов суть полноценные вики-документы, для которых отведено своё пространство имён ?Шаблон:?.

Вызывается шаблон пометкой

{{Имя шаблона}}

При отображении страницы на место этого будет помещено содержимое страницы ?Шаблон:Имя шаблона?. Если её ещё нет, то пометка будет отображена как ссылка на несуществующую статью шаблона. Поэтому, чтобы не озадачивать читателя красной ссылкой подобной Шаблон:Мой шаблон, удостоверьтесь в существовании вызываемых шаблонов ? это делается предпросмотром страницы до сохранения правки.

Если статья Имя шаблона есть в главном пространстве имён, или предварено двоеточием (что означает ссылку на главное пространство имен), то ссылка не будет автоматически направляться в пространство имён ?Шаблон:?. Таким образом, любую страницу можно использовать как шаблон. Если вызывать так картинку или категорию, то будет подставлена описательная часть картинки и категории соответственно). Таким способом удобно

  • экспериментировать с шаблонами (не залезая в пространство шаблонов);
  •  ?вытаскивать? подписи и описания картинок;
  • изготавливать специальные составные статьи (например для печати).

Как обычно в MediaWiki, имя статьи или шаблона чувствительно к регистру, и что пробел эквивалентен подчеркиванию.

Возможно также рекурсивное включение.

Переменные шаблона вычисляются после вставки шаблона в ?вызывающую? статью, т. е. если в шаблоне содержится подстановка {{PAGENAME}}, то она будет развернута в имя вызывающей статьи, а не имя шаблона.

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

Параметры

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

  • {{templatename|parname1=parvalue1|parname2=parvalue2}}, тогда в теле шаблона надо ссылаться на {{{parname}}};
  • {{templatename|parvalue1|parvalue2}} тогда в теле шаблона нужно использовать {{{1}}}, {{{2}}}.

Лишние (не используемые в теле шаблона) параметры игнорируются. Имена параметров чувствительны к регистру, пробелы, подчеркивание и остальные символы не из набора [a-z\-A-Z0-9] недопустимы.

Обратите внимание на тройные фигурные скобки при использовании параметров!

Т.е. механизм шаблонов выполняет два типа подстановок:

  • вызов шаблона (двойные фигурные скобки) заменяется содержимым шаблона;
  • параметры шаблона (тройные фигурные скобки) заменяются параметрами шаблона.

Параметром шаблона может быть ссылка на другую статью. Пусть например у нас есть Шаблон:

   Начало {{{1}}} Конец.
 

Тогда

   {{Шаблон| [[FictionBook]]}}
 

будет развернуто в

Начало FictionBook Конец.

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

Заметим, что вызов {{Шаблон||a}} делает первый параметр определенным, но равным пустой строке. Если нужно задать второй параметр, не определяя первый, то нужно использовать вызов {{Шаблон||2=a}}. Этот синтаксис нужно использовать также, когда параметр вызова содержит знак ?=", например "a=b?, т. е. {{Шаблон|a=b|c}}, не определит параметр ?1?, зато определит параметр ?a?, зато {{Шаблон|1=a=b|2=c}} сделает все как надо.

Просмотр содержимого шаблона

Чтобы правильно увидеть содержимое шаблона, нужно смотреть на шаблон в режиме редактирования, т. к. некоторые подстановки, типа {{PAGENAME}}, могут раскрыться.

msgnw

Для показа содержимого шаблона (без wiki-интерпретации) можно использовать кодовый ?волшебный? префикс u ?msgnw:?. Т.е. {{en}} и {{msgnw:en}} будут показаны как Шаблон:En и [[:Шаблон:En]] соответственно.

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

?Редактирующая? ссылка на каждой странице-статье не позволяет редактировать текст используемого шаблона, а иногда желательно иметь такую ссылку (приглашающую поправить шаблон, например, если шаблон еще не устоялся, или если его содержимое может часто изменяться). Такую ссылку можно ?зашить? внутрь самого шаблона, даже более того, сделать шаблоном, который можно использовать внутри других шаблонов. См. Шаблон:edit.


Ограничения и возможности

Использование вложенных двойных или тройных фигурных скобок внутри двойных вложенных скобок

Не получится вызывать шаблоны в зависимости от содержимого других шаблонов. Допустим, у нас есть шаблон ?tctc? с содержимым ?tc?, и шаблон ?tc? с содержимым ?Ура?.

Тогда вызов {{{{tctc}}}} даст текст {{{{tctc}}}}, а не ?Ура?.

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

Тэг категории в шаблоне. Проблема с кэшированием

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

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

Желательно использовать категории включённые в шаблон только для шаблонов предназначенных для пометки статей (типа {{stub}}), и не включать категории в навигационные шаблоны.

Теги <noinclude> и <includeonly>

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

  • категоризация шаблонов самих по себе (а не страниц которые их содержат)
  • интервики на аналогичные шаблоны на других языках
  • страницы в пространстве имён MediaWiki
  • текст, объясняющий как использовать шаблон

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

  • включение всех статей, содержащих шаблон в категорию (при этом сам шаблон в категорию не попадёт)

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

Кэширование

Правка шаблона автоматически сбрасывает кэширование всех статей, напрямую использующих этот шаблон. Однако в случае с косвенными зависимостями (шаблоны зависящие от параметров и т. п.), внутренний кэш системы не сбрасывается и стандартный ?Refresh? браузера может не помочь. В таких случаях используйте ?action=purge?, т. е. вызывайте URL типа:

[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAMEE}}|action=purge}} Очистить кэш страницы]

что отобразится как

Очистить кэш страницы

subst

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

Например ?timestamp?:

{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}},  {{subst:CURRENTTIME}} (UTC)

подставится при сохранении страницы:

3 марта 2005,  16:56 (UTC)

в то время, как

{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}},  {{CURRENTTIME}} (UTC)

каждый раз будет показывать текущее время:

15 декабрь 2018,  18:20 (UTC)

{{subst:welcome}} ~~~~ используется для приветствия новых участников.

Альтернатива subst

  • Используйте {{..}}, затем, в окне ?preview?, вытащите результат и замените исходные {{..}}.
  • Аналогично можно использовать msgnw.

Перенаправления

Когда страница, вызванная для включения, является страницей-перенаправлением, то включается содержимое страницы, на которую указывает перенаправление.

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

  • Заголовок страницы-результата есть имя исходной страницы, а не включаемой страницы.
  • Вся функциональность, (редактирование, обсуждение, watch-list, ?) относится к включающей странице, и ничего (если не смотреть код) не связывает ее с включаемой страницей.
  • Включающая страница лежит в тех же категориях, что и включаемая.
  • Работают ?двойные перенаправления? основанные на включении.

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

Отметим, что если ссылаться (в смысле гиперссылок) на шаблоны, как на обычные статьи, то нельзя передать им параметры (что, в общем, очевидно). Однако, иногда это может быть полезно, например, ссылка на увеличенное изображение.

История изменений для страниц содержащих шаблоны

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


Что еще посмотреть?

Здесь находится список шаблонов сайта FictionBook.

Описание шаблонов сайта.