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

Материал из Справочная Gamepedia
Перейти к: навигация, поиск

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

Написание простого шаблона[править | править код]

Если вы создаете страницу под названием "Шаблон:Добро пожаловать" с содержимым:

Привет! Добро пожаловать в вики.

вы создали свой первый шаблон! Если вы затем вставите код:

{{Добро пожаловать}}

на любой другой странице, на этой странице появится текст "Привет! Добро пожаловать в вики.". Вместо {{Добро пожаловать}}. Содержимое шаблона «будет показано» на другой странице, то есть он интегрируется в страницу.

Затем вы можете использовать {{Добро пожаловать}} на любой страницы, где вы хотите приветствовать кого-то. Предположим, он используется на 100 страницах. Если вы затем измените содержимое шаблона на:

Всем привет! Добро пожаловать в эту замечательную вики.

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

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

Параметры[править | править код]

Чтобы обогатить механизм включения, MediaWiki позволяет передавать параметры в шаблон, когда он включён. Параметры позволяют шаблону создавать различное содержимое или иметь различное поведение.

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

{{Спасибо|все ваши усилия|я}}

У благодарственной заметки будет причина (в данном случае "за все ваши усилия") и подпись ("я"). Ваша цель — любой пользователь может поблагодарить любого другого пользователя по любой причине.

Чтобы заметка будет выглядеть везде, где она используется, вы можете определить шаблон с именем, например, [[Шаблон:Спасибо]]. Хотя заметка будет выглядеть одинаково, когда пользователь благодарит другого пользователя, его конкретное содержимое (то есть причина и подпись) будет отличаться. По этой причине вы должны передать их в качестве параметров. Если мы проигнорируем оставшиеся элементы для форматирования блока и размещения изображения, основным содержимым шаблона будет следующим:

'''Спасибо тебе...'''
за {{{1}}}.
обнимаю, {{{2}}}

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

При использовании шаблона на странице вы заполняете значения параметров, разделенных символом «pipe» (|). MediaWiki позволяет передавать параметры шаблону тремя способами: анонимно, пронумеровано или названо.

Анонимные параметры[править | править код]

Чтобы передать анонимные параметры, последовательно укажите значения этих параметров:

{{Спасибо|все ваши усилия|я}}

В этом случае шаблон {{Спасибо}} получает параметры {{{1}}}=все ваши усилия и {{{2}}}=Я, производя:

Спасибо тебе... за все ваши усилия. обнимаю, я

Порядок, в котором передаются анонимные параметры, имеет решающее значение для его поведения. Изменение порядка параметров, например:

{{Спасибо|я|все ваши усилия}}

приведет к такому результату:

Спасибо тебе... за я. обнимаю, все ваши усилия.

Примечание: определение параметров по порядку (с{{{1}}} и т.д.) Работает только с анонимными параметрами. Если ваша страница определяет любой параметр по номеру или имени, как показано ниже, этот метод больше не будет доступен шаблону, который их получает.

Нумерованные параметры[править | править код]

Чтобы передать параметры по номеру, определите каждый параметр при его передаче:

{{Спасибо|2=я|1=нашу дружбу}}

На этот раз шаблон {{Спасибо}} получает параметры {{{1}}}=нашу дружбу и {{{2}}}=я, хотя они были поставлены в обратном порядке, и производят:

Спасибо тебе... за нашу дружбу. обнимаю, я

Именованные параметры[править | править код]

Третий способ передачи параметров — по имени, а не по номерам. В этом случае содержимое шаблона будет изменено на:

'''Спасибо тебе...'''
за {{{причина}}}.
обнимаю, {{{подпись}}}

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

{{Спасибо|подпись=я|причина=то, что ты тот, кто ты есть}}

В этом случае шаблон {{Спасибо}} получает параметры {{{причина}}}=то, что ты тот, кто ты есть и {{{подпись}}}=я, и выдает:

Спасибо тебе... за то, что ты тот, кто ты есть. обнимаю, я

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

Значения по умолчанию[править | править код]

Если вы включаете шаблон, который ожидает параметров, но не предоставляет их, таким образом:

{{Спасибо}}

в примере с пронумерованными параметрами вы получите следующее:

Спасибо тебе... за {{{1}}}. обнимаю, {{{2}}}

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

'''Спасибо тебе...'''
за {{{причина|всё}}}.
обнимаю, {{{подпись|я}}}

то {{{причина|всё}}} определяет, что если не указан параметр {{{причина}}}, значение всё будет использоваться. Аналогично, {{{подпись|я}}}, по умолчанию использует параметр {{{подпись}}} для значения я. Теперь, снова включая шаблон без передачи какого-либо параметра, получим следующее:

Спасибо тебе... за всё. обнимаю, я

Управление шаблоном[править | править код]

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

Отображение контента только на странице шаблона[править | править код]

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

  • Категория Ссылки при категоризации самого шаблона
  • Межъязыковые ссылки к аналогичным шаблонам на других языках
  • Пояснительный текст о том, как использовать шаблон

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

Отображение контента только при трансляции или замещении[править | править код]

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

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

Всегда показывать содержимое[править | править код]

Если не используются теги <onlyinclude>, все за пределами <noinclude> и <includeonly> обрабатывается и отображается нормально; то есть как при просмотре страницы шаблона, так и при ее включении в другую страницу.

В противном случае внутри тега шаблона и при его включении будут отображаться все внутри тегов <onlyinclude>, кроме тех случаев, когда <includeonly> используются внутри.

Организация шаблонов[править | править код]

Чтобы шаблоны были эффективными, пользователям нужно найти их и узнать, как их использовать.

Чтобы найти их, пользователи могут:

  1. Нажмите Спецстраницы > Все страницы
  2. В списке Пространство имен выберите Шаблон и нажмите Перейти.

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

<noinclude>
== Применение ==
Приветствуем пользователей:
{{Спасибо тебе|причина=ваша причина|подпись=ваша подпись}}
</noinclude>

Затем можете просто скопировать и вставить пример для использования шаблона.

Копирование из одной вики в другую[править | править код]

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

Код MediaWiki[править | править код]

Если у вас есть права на импорт в новой вики:

  1. Перейдите к Служебная:Экспорт на исходной wiki и загрузите файл .xml с полной историей всех необходимых шаблонов, как показано ниже:
    • Введите имя шаблона в большом текстовом поле, например. "Шаблон: Добро пожаловать". Обратите особое внимание на заглавные и специальные символы - если имя шаблона не совсем верно, экспорт все равно может произойти, но файл .xml не будет иметь ожидаемых данных.
    • Установите флажок "Включить шаблоны".
    • Снимите флажок "Включать только текущую версию, без полной предыстории".
    • Нажмите "Экспортировать".
  2. Перейдите в Служебная:Импорт в новой wiki и загрузите файл .xml.

Если у вас нет прав на импорт в новой вики:

  1. Перейдите к Служебная:Экспорт на исходной wiki и загрузите файл .xml с полной историей всех необходимых шаблонов, как показано ниже:
    • Введите имя шаблона в большом текстовом поле.
    • Установите флажок "Включить шаблоны".
    • Снимите флажок "Включать только текущую версию, без полной предыстории".
    • Нажмите "Экспортировать".
    • Откройте файл в текстовом редакторе и замените определенные XML entities соответствующими символами: &lt; → <, & gt; → >, &quot; → "и &amp; → &. Из-за правил синтаксиса XML эти объекты отображаются в файле XML, но они не должны отображаться в окне редактирования экземпляра MediaWiki.
    • Вручную скопируйте текст внутри тега <text> каждого из перечисленных шаблонов в шаблон с аналогичным именем в вашей wiki. В сводке редактирования каждого шаблона укажите ссылку на исходную страницу для атрибуции.

Это скопирует весь необходимый код и будет достаточным для некоторых шаблонов.

Расширения[править | править код]

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

Код CSS и JavaScript[править | править код]

Помимо кода MediaWiki, многие шаблоны используют CSS, а некоторые полагаются на JavaScript для полноценной работы. Если скопированные шаблоны ведут себя не так, как ожидалось, это может быть причиной. Чтобы скопировать необходимые CSS и JavaScript в вашу wiki, вам, как правило, необходимо иметь права администратора, потому что вы будете редактировать системные сообщения в пространстве имен "MediaWiki:".

  1. Найдите в тексте шаблона классы CSS (такие как class="foobar"). Если эти классы отображаются в "MediaWiki:Common.css" или "MediaWiki:Monobook.css" в исходной wiki, скопируйте их в "MediaWiki:Common.css" в новой вики-версии и проверьте, в порядке ли шаблон теперь.
  2. Если скопированный шаблон по-прежнему не работает должным образом, проверьте, есть ли код в "MediaWiki:Common.js" или "MediaWiki:Monobook.js" на оригинальной wiki. Если это так, вы можете попробовать скопировать его в "MediaWiki:Common.js" на новой вики. Как правило, рекомендуется копировать код из надежных источников и сначала просматривать код, чтобы идентифицировать и выбрать нужные части. Вы можете найти комментарии, которые могут служить подсказками для определения функциональности каждой части.

Смотрите также[править | править код]