Help:Templates/ru

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

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

Пример простейшего шаблона. Если Вы создадите страницу с названием "Template:Welcome" с содержимым:

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

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

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

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

Привет всем! Добро пожаловать в этот замечательный вики-проект.

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

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

Использование
Шаблоны — это вики-страницы, используемые в других вики-страницах. Доступных способов использования три:


 * добавляет в страницу копию содержимого шаблона (страницы с именем Template:Name ). Обращение к шаблону производится каждый раз, когда производится извлечение использующей его страницы. Таким образом, если изменить шаблон, то отображение использующих его страниц тоже изменится.
 * заменяет данную строку содержимым шаблона в момент сохранения страницы. Таким образом, после сохранения в ней остается копия шаблона, которую можно будет изменять так же, как обычную вики-разметку. После сохранения шаблон и страница редактируются независимо: изменение страницы не влияет на шаблон, изменение шаблона не влияет на страницу. Замечание: не стоит пользоваться данным способом, если вы хотите, чтобы дальнейшие изменения шаблона отображались в использующих его страницах.
 * — это понятие было введено, чтобы позволить замены без нарушения содержимого, см. w:en:Help:Substitution.
 * включает шаблон в виде формы, отображающейся в использующей его странице, аналогично тому как действует тэг . Как и в первом случае, изменение шаблона изменяет то, что мы видим при отображении страницы.

На самом деле, обычная Вики-страница тоже может использоваться в качестве шаблона, просто укажите пространство имён, в которой она хранится, так:


 * содержит
 * содержит
 * содержит
 * заменяет себя содержимым

Если такого пространства имён не существует, то полное название предполагает, что это шаблон:


 * содержит

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

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

В благодарственном сообщении будет указана причина (в данном случае "все ваши усилия") и подпись ("Подпись"). Задача состоит в том, чтобы любой пользователь мог поблагодарить другого пользователя по любой причине.

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

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

Вставляя шаблон в страницу, вы задаете значения параметров, разделяя их символом "вертикальная черта". Медиавики позволяет передавать параметры в шаблон в тремя способами: анонимно, по порядковому номеру и по названию параметра.

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

В этом случае шаблон  принимает параметры   и   и выдаёт:

Порядок параметров при анонимной передаче важен. Например, передача их в обратном порядке:

приведёт к следующему результату:

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

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

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

Большое спасибо... за. Обнимаю,

Теперь мы используем  и   для вставки параметров вместо чисел. Для передачи параметров задайте соответствующие имена при вставке:

В этом случае шаблон  принимает параметры   и   и выдаёт:

Именованные параметры являются регистрозависимыми, т.о.:

Named parameters are case-sensitive, so:

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

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

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

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

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

Often default values are used to specify alternate names of parameters. For example, if you have, the template will first look for a parameter named "a". If it is not set, it will use the parameter named "b". If neither "a" nor "b" is set, it will output nothing.

Evaluation
Generally speaking, template parameters are substituted into the template after tokenization, but as is. They are not evaluated until they are used.

This has a few consequences. First of all, if you have a  containing , and a   containing  , and put   on a page, mytemplate isn't transcluded, because tokens like "|" cannot be added by a template and keep their special meaning in templates. You can still use templates to control the name of a parameter or template, but you cannot split a template call amongst multiple templates.

The second consequence of this is dead-code elimination. If you make a template call like, and Template:Foo does not contain  , then the displaytitle is not used, since it is only evaluated when needed, and it there is no parameter to substitute it into, so it is never evaluated. This usually comes into play when using Extension:ParserFunctions, and can be especially noticed when used in combination with the  magic word that varies by user language.

Template calls starting with the magic word  or   are evaluated in a separate first pass that only happens at save time, along with ~ and links using the pipe trick. If they cannot be evaluated during the first pass, subst: calls are ignored, and safesubst: are treated as if a normal template.

Many but not all parser functions, parser tags and trancluded special pages are not directly included like templates but instead are replaced by a "strip marker". This means you cannot manipulate the results with parser functions like padleft: or similar functions from extensions, as they see the strip marker instead of the result of the parser function.

Рекурсия в шаблонах
Рекурсия - это вызов какого-либо шаблона внутри самого себя. Вызов шаблона сам по себе не бросит MediaWiki в бесконечную рекурсию. MediaWiki остановит рекурсию с именем шаблона, выделенным жирным шрифтом. Например, если содержимое "Шаблона:Aaaa" - " ", то при вызове его на какой либо странице, будет показано "Template:Aaaa".

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

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


 * Отнесение шаблонов к категориям
 * Межъязыковые ссылки на похожие шаблоны на других языках
 * Пояснительный текст по использованию шаблона

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


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

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

А вот всё, что находится за пределами тегов, исключается из обработки и отображения при вызове шаблона. Даже разделы, помеченные как includeonly, игнорируются при вызове такого шаблона, если только они не помечены как onlyinclude. Акцент делается на то, что находится за пределами этого тега.

Вложение всех этих тегов также возможно.

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

Систематизация шаблонов
Для эффективного использования шаблонов нужно их легко находить и применять. Легче всего это обеспечить, поместив на страницу шаблона пример его использования.

To find them, users can:
 * 1) Click ' > '
 * 2) In the ' list, choose Template and click '.

Например такой:

Usage
Welcome users:

Таким образом редактор сможет просто скопировать пример и модифицировать его для своих нужд.

Ссылки на шаблон
На страницу шаблона можно сослаться как на любую другую вики-страницу. Например, ссылка Template:Navbar создаётся викикодом.

On many wikis, Template:Tl can be used to provide a link to a template formatted in a way that shows the "double curly-braces" wikicode necessary to transclude the template without actually doing the tranclusion. For example, the code  may be used to create the link Navbar.

This construct is commonly used in template documentation, on help pages, and on talk pages when referring to templates. The same effect can be achieved by using, but the tl approach involves much less typing. On any given wiki the Tl template, if it exists, may or may not render the text in a "code" element, as shown here. If not, another similarly named template may do so. See, for example, the "See also" section of the documentation of en:Template:Tl at the English Wikipedia.

Копирование из одной вики в другую
Templates often require CSS or other templates, so users frequently have trouble copying templates from one wiki to another. The steps below should work for most templates.

Код MediaWiki
If you have import rights (Specifically importupload) on the new wiki:


 * 1) Go to Special:Export on the original wiki, and download an .xml file with the complete history of all necessary templates, as follows:
 * 2) * Enter the name of the template in the big text box, e.g. "Template:Welcome". Pay special attention to capitalization and special characters — if the template name isn't exactly correct, the export may still occur but the .xml file will not have the expected data.
 * 3) * Check the box "".
 * 4) * Uncheck the box "".
 * 5) * Click "".
 * 6) Go to Special:Import on the new wiki and upload the .xml file.

If you don't have import rights on the new wiki:


 * 1) Go to the template you want to copy from the original wiki. Go to the edit page, and copy all the wikitext
 * 2) On the new wiki, go to the page with the same name as the template you copied. Hit create/edit and paste the wikitext you copied. In the edit summary of each template, link to the original page for attribution.
 * 3) Back in the original wiki at the edit window, below the edit box, look at the list of "Templates used on this page". For each template listed follow these instructions. Also do that for any template used by any of these templates, and so on.

This will copy the entire code necessary, and will suffice for some templates. If it doesn't work also check for red links listed under "Pages transcluded onto the current version of this page:", below the edit box. If there are any repeat the above steps for these as well and also copy the code in the modules.

After successfully importing the template and all its linked templates from the other wiki, edit it to change customisations to suit your wiki. For example to change a logo, remove redundant categories or red links.

Расширения
An extension often used in templates is ParserFunctions. Visit page and check if any of the functions listed there are used in the templates you've copied. If so, you have to install the extension. To install it, you'll need system admin access to the server of your MediaWiki installation.

Another dependency that may be used in templates, especially those on Wikipedia, is Lua. Having   in template code is a good sign for it. In case it's used, you need to install the extension and system admin access is required too. See that page for more instructions about installing and using the extension.

CSS и JavaScript-код
Besides MediaWiki code, many templates make use of CSS and some rely on JavaScript to work fully. If the copied templates are not behaving as expected, this may be the cause. To copy the required CSS and JavaScript to your wiki you'll normally need to have admin privileges, because you'll be editing system messages in the "MediaWiki:" namespace.


 * 1) Look for the use of CSS classes (text like  ) in the template text. If those classes appear in "MediaWiki:Common.css" or "MediaWiki:Monobook.css" on the original wiki, copy those classes to "MediaWiki:Common.css" on the new wiki and check if the template is now fine.
 * 2) If the copied template is still not working as expected, check if there is code in "MediaWiki:Common.js" or "MediaWiki:Monobook.js" on the original wiki. If so, you can try copying it to "MediaWiki:Common.js" on the new wiki. Normally, it is a good idea to only copy code from trusted sources, and first browsing the code to identify and select the parts that are relevant. You may find comments that can serve as clues to identify the functionality of each part.

См. также

 * — пример необычного использования шаблонов.
 * — функциональные вещи («волшебные слова»), которые вы можете найти в некоторых шаблонах
 * - additional fancy control functions such as #if and #switch
 * - guidance on using parser functions in templates
 * m:Help:Template – contains a much more thorough manual on how exactly templates function
 * m:Help:Advanced templates – describes even more advanced techniques such as dynamic template calls and variable parameter names
 * Help:Embed page — встраиваемые страницы из пространств имен отличающихся от.
 * Manual:Creating pages with preloaded text - Using templates as the starting text of a page
 * Manual:Creating pages with preloaded text - Using templates as the starting text of a page
 * Manual:Creating pages with preloaded text - Using templates as the starting text of a page
 * Manual:Creating pages with preloaded text - Using templates as the starting text of a page
 * Manual:Creating pages with preloaded text - Using templates as the starting text of a page

Внешние ссылки

 * Miraheze template repository - MediaWiki templates intended for general use.