Википедия:Механизм шаблоновШаблоны — класс особых страниц в MediaWiki (программном обеспечении Википедии), содержимое которых можно вставить в другие страницы. Причём это содержимое считывается при каждой загрузке страницы: изменения в шаблоне проявятся на страницах, их применяющих (за исключением случая, когда шаблон используется с подстановкой, — см. ниже). Ниже описывается их работа. Общая информацияСтраницы шаблонов — полноценные вики-документы, для которых отведено своё пространство имён «Шаблон». В Википедии их позволено править любому участнику. Вызывается шаблон помещением в текст редактируемой страницы записи Если представить, что в основном пространстве имён существует статья Имя шаблона, то можно вызвать её, поставив перед именем шаблона двоеточие:
Если в редактируемую страницу поместить вызов шаблона Как обычно в MediaWiki, имя статьи или шаблона чувствительно к регистру (кроме первого символа), а пробел эквивалентен подчёркиванию. Возможно также включение шаблона в шаблон, то есть вызов одного шаблона из другого или из него же самого́. Переменные (см. ниже) в шаблоне получают значения после вставки шаблона в статью, где он вызван. Если в шаблоне содержится подстановка Список ссылок на используемые в тексте страницы шаблоны показывается в окне редактирования статьи, причём показываются все шаблоны, даже если редактируется только раздел документа, который не содержит шаблонов (при предварительном просмотре). ПараметрыПараметры шаблона могут быть именованными или нумерованными. Синтаксис вызова шаблона и способ использования параметров в теле шаблона в этих двух случаях будут различаться:
Обратите внимание, что фигурные скобки вокруг имён параметров на странице шаблона должны быть тройными Параметры, присутствующие на странице с вызовом шаблона, но отсутствующие в теле шаблона (на странице шаблона), игнорируются. Именованные параметры чувствительны к регистру символов. При вызове шаблона выполняются два типа подстановок:
Параметром шаблона может быть ссылка на другую статью.
Пример работы шаблона. ![]() Пусть, у нас есть страница шаблона Шаблон:Песенка и статья на странице Статья. {{{1}}} — жу-жу-жу…
Если на странице редактирования Статья создать обращение к шаблону Песенка с параметром «Ля-ля-ля» {{Песенка|Ля-ля-ля}}
тогда на записанной странице Статья наш шаблон будет развёрнут в текст: Ля-ля-ля — жу-жу-жу…
Т. е. механизм работы шаблона следующий: на странице Статья из имеющегося шаблона Неопределённые и пустые значения параметровЕсли в строке вызова шаблона с именованными или нумерованными параметрами параметр не получил значение, то он остаётся нераскрытым текстом: с именованными параметрами Заметим, что вызов шаблона с именованными параметрами Аналогично для шаблона с нумерованными параметрами: вызов Когда код между вертикальными чертами содержит знак равенства (например, Условное значение параметраЧтобы не появлялся нераскрытый текст параметра с незаданным значением, используют условное значение параметра в тексте шаблона. Если в вызове шаблона значение параметра не задано В зависимости от значения параметра шаблона в текст статьи можно вставлять фрагменты. Для этой цели в тексте шаблона используются функции парсера, многие из которых являются частными случаями условного оператора: {{#if: проверяемый параметр | текст, когда значение параметра заполнено | текст, когда значение параметра пустое }} Текст, когда значение параметра пустое, не является обязательным, поэтому можно использовать сокращённую форму: {{#if: проверяемый параметр | текст, когда значение параметра заполнено }} Если проверяемый параметр шаблона записан в форме Пример использования условного значения пусто для параметра sample: {{#if: {{{sample|}}} | параметр '''sample''': задано непустое значение! | параметр '''sample''': значение не задано или задано пустое значение! }} Реальный пример использования функции парсера Эффект пустых строкПусть нужно вывести имена параметров с заданными значениями в виде текста, а имена параметров, значения которых не заданы или пустые, не выводить. Для этого будем использовать условный оператор в сокращённой форме: {{#if: {{{sample1|}}} | '''sample1'''! }} {{#if: {{{sample2|}}} | '''sample2'''! }} {{#if: {{{sample3|}}} | '''sample3'''! }} Если все значения параметров заданы и не пустые, то результаты условных операторов выстраиваются в одну строку. Если значение второго параметра не задано или задано пустым, то между первым и третьим результатом появляется пустая строка. Такой же эффект даёт вариант со вторым оператором в полной форме: Тот же пример, но второй условный оператор в полной форме и выводит неразрывный пробел. Результаты выводятся в строку: {{#if: {{{sample1|}}} | '''sample1'''! }} {{#if: {{{sample2|}}} | '''sample2'''! |{{nobr|}} }} {{#if: {{{sample3|}}} | '''sample3'''! }} Тот же пример, но второй условный оператор в сокращённой форме и после него стоит неразрывный пробел. Результаты также выводятся в строку: {{#if: {{{sample1|}}} | '''sample1'''! }} {{#if: {{{sample2|}}} | '''sample2'''! }}{{nobr|}} {{#if: {{{sample3|}}} | '''sample3'''! }} Примеры реализованы в таблице:
Пустая строка между первой и третьей строкой появилась из-за того, что условный оператор во второй строке вывел два перевода строки вместо пустого значения и результат обработки условными операторами принял следующий вид: sample1! (пустая строка) sample3! Если один перевод строки подавлен, например, малым неразрывным пробелом sample1! sample3! Эффект пустых строк может проявляться в шаблонах-карточках, когда на месте неопределённых параметров появляются пустые строки. Чтобы этого не происходило нужно исключать перевод строки между условными операторами. Этого можно добиться не только описанными выше, но и способами, исключающими все (и это обязательно!) переводы строки между условными операторами. Примеры реализованы в таблице:
Вики-разметка и перенос строк в параметрах
Будьте аккуратны с вики-разметкой около параметров. Вики-разметка в шаблоне может взаимодействовать с вики-разметкой внутри параметра и вики-разметкой текста, окружающего шаблон. Например, для Параметр может приходить с переносом на новую строку.
Перевод строки пропадёт в случае Пустой параметр Просмотр содержимого шаблонаЧтобы увидеть «сырое» содержимое шаблона (подстановки параметров и т. д.), нужно смотреть на шаблон в режиме редактирования, поскольку в противном случае некоторые подстановки вроде msgnwДля показа необработанного содержимого шаблона можно использовать кодовый «волшебный» префикс
А
Ссылка на редактирование шаблонаСсылка «[править]» на каждой странице-статье не позволяет редактировать текст используемого шаблона, а иногда желательно иметь такую ссылку (приглашающую поправить шаблон, например, если шаблон ещё не устоялся, или если его содержимое может часто изменяться). Такую ссылку можно «зашить» внутрь самого шаблона, даже более того — сделать шаблоном, который можно использовать внутри других шаблонов. См. шаблон {{править}}. Ограничения и возможностиИспользование вложенных двойных или тройных фигурных скобок внутри двойных вложенных скобокПри использовании обычной формы вызова не получится вызывать те или иные шаблоны в зависимости от содержимого других шаблонов. Предположим, у нас есть шаблон Тем не менее, вызов Также можно использовать значения переданных переменных при указании значений переменных для вызываемого шаблона. Тег категории в шаблоне. Проблема с кэшированиемЕсли шаблон содержит код категории, то в указанную категорию помещается не только шаблон, но и все страницы, включающие его, поэтому удобно использовать шаблоны для рубрикации статей. Но может возникнуть проблема с кэшированием — если поменять категорию у шаблона, то категория у включающих этот шаблон страниц поменяется не сразу, а только через некоторое время, после того как серверы Википедии выполнят необходимые действия. При необходимости быстро обновить большое количество статей с изменённым шаблоном можно обратиться к ботоводам с запросом на проведение нулевых правок. Кроме того, категория немедленно меняется у только что отредактированных статей, включая статьи, в которых сделана нулевая правка. Служебные категории включаются в статьи обычно шаблонами, предназначенными для пометки статей (типа {{stub}}), а классифицирующие — с помощью шаблонов-карточек и однородных навигационных шаблонов. Теги noinclude, includeonly, onlyincludeВсё, что находится между тегами
Тег
Если текст обёрнут в теги Не допускайте пустых строк вокруг конструкций Следует отметить, что при этом сохраняется описанная в предыдущем разделе проблема: если включить статью в категорию посредством шаблона, а затем изменить категорию в шаблоне, то статьи будут содержаться в старой категории, хотя при их просмотре будет создаваться впечатление, что они содержатся в новой; и статьи будут на деле включены в новую категорию либо немедленно после их редактирования и сохранения, или через некоторое время (по мере отложенной обработки заданий сервером Википедии). КэшированиеПравка шаблона автоматически сбрасывает кэширование всех статей, напрямую использующих этот шаблон. Однако, в случае с косвенными зависимостями (шаблоны, зависящие от параметров и т. п.), внутренний кэш системы не сбрасывается и стандартное обновление страницы в браузере может не помочь. В таких случаях используйте action=purge, то есть вызывайте URL типа https://ru.wikipedia.org/wiki/Статья?action=purge. Существует стандартный гаджет часов (см. в настройках), по клику по которым очищается кэш страницы. Чтобы добавить ссылку на очистку кэша на произвольную страницу, используйте шаблон {{очистить кэш}}. Если шаблон рассчитан на постоянную работу с косвенными зависимостями, можно воспользоваться шаблоном {{очищать кэш}}, чтобы заставить бота периодически сбрасывать кэш страницы. ПодстановкаКонструкция Например, если мы напишем {{подст:CURRENTDAY}} {{подст:CURRENTMONTHNAMEGEN}} {{подст:CURRENTYEAR}}, {{подст:CURRENTTIME}} (UTC) при сохранении страницы подставятся текущие дата и время: 23 августа 2012, 14:53 (UTC) в то время как {{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}} {{CURRENTYEAR}}, {{CURRENTTIME}} (UTC) каждый раз будет показывать текущее время: 3 июня 2025, 01:00 (UTC) А следующий код используется для приветствия новых участников: {{подст:приветствие}} ~~~~ Если нужно использовать подстановку для статьи из основного пространства имён, используйте конструкцию с двумя двоеточиями подряд. Так, следующий пример: {{подст::Страница}} подставит в текст содержимое страницы Страница. Альтернатива подстановке
Подстановка и функции парсера в примечаниях
Избегайте использования подстановки шаблонов в примечаниях (теги
Та же проблема и решение относятся к функциям парсера, хотя их редко требуется вызывать из ПеренаправленияЕсли страница, вызванная для включения, является страницей-перенаправлением, то включается содержимое страницы, на которую указывает перенаправление. Страница, которая ничего не содержит, кроме включения другой страницы, отличается от страницы-перенаправления, например, следующим:
Ссылки на шаблонОтметим, что при указании ссылок на страницы-шаблоны (например, [[Шаблон:имя шаблона]]), нельзя указать параметры шаблона. Однако иногда это могло бы быть полезно, например, для получения ссылки на увеличенное изображение. История изменений для страниц, содержащих шаблоныПри просмотре предыдущих версий статей, содержащих шаблоны и/или картинки, всегда используются текущие версии шаблонов и картинок, то есть автоматически невозможно получить полные реконструкции (со ссылками на предыдущие версии шаблонов и картинок) предыдущих версий статей. См. также |
Portal di Ensiklopedia Dunia