Help:Templates/uk

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

Створення шаблону
Шаблони - це звичайні вікі-сторінки, вміст яких призначено для включення (вбудовування) в інші сторінки. Назві шаблону передує слово " ", яке відносить шаблон до простору імен "   ". Знаючи це, ви можете створити шаблон так само, як і звичайну сторінку.

Найпростіший приклад застосування шаблону. Якщо створити сторінку "Template:Welcome", на якій записано:

Привіт! Ласкаво просимо до вікі.

то ця сторінка буде шаблоном. Тепер її включення за допомогою такого коду:

до будь-якої іншої сторінки приведе до того, що при перегляді цієї сторінки на місці коду  з'явиться текст "Привіт! Ласкаво просимо до вікі." Так вміст шаблону включається (інтегрується) до іншої сторінки.

Тепер ви можете вписати  в будь-якому місці кожної сторінки, де ви вважаєте доречним появу такого привітання. Нехай ви записали такий код на 100 сторінках. Якщо тепер ви зміните текст шаблону на такий:

Наші вітання! Ласкаво просимо до цієї чудової вікі.

і знову відвідаєте будь-яку з цих 100 сторінок, які використали цей шаблон, ви побачите вже модифікований текст. В такий спосіб ви можете змінити одразу 100 сторінок без редагування кожної з них, - змінивши шаблон, який ці сторінки включають.

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

Використання
Інші сторінки можуть використовувати сторінки шаблонів в такий спосіб:


 * - як описано вище, таке посилання буде замінено поточним вмістом сторінки Template:Назва при кожному перегляді сторінки. Рушій MediaWiki залишає це посилання в вікі-тексті сторінки незмінним.
 * — when this template link is used, it will be replaced once and for all with the content of Template:Name as of the time the page with the link is saved: a copy of the contents of Template:Name will be substituted for the template link. The contents are then a part of the including page, and can be edited normally, separately from the original. Note: later changes to the source template page will not be propagated to the page with the template link.
 * - ця конструкція поводить себе точно так, як і, різниця виникає лише коли вона зустрічається всередині іншого шаблону і цей шаблон або вставляють (за першою схемою), або прямо переглядають.
 * включає шаблон у формі без вікі-форматування (так само, як це робить ) при перегляді сторінки.

Насправді будь-яка сторінка вікі може бути використана як шаблон, для цього слід явно вказати простір імен, в якому вона знаходиться:


 * включає сторінку
 * includes
 * включає сторінку
 * заміщується вмістом

Якщо такого простору імен не існує, назву буде доповнено простором імен    :


 * включає сторінку

Параметри
Для збагачення механізму підставлення MediaWiki дозволяє передавати параметри шаблону. Ці параметри дозволяють одному й тому самому шаблону продукувати різні результати чи по-різному поводитися.

Нехай ви вставляєте коротку подяку на сторінку обговорення іншого користувача, приміром:

Ця подяка містить причину (в наведеному прикладі - за вашу працю) та підпис (Я). Зробити те ж за допомогою вашого шаблону Thankyou зможе будь-який користувач.

Подяка, висловлена за допомогою цього шаблону Template:Thankyou, матиме однаковий вигляд, але міститиме різні фрагменти тексту - ті самі, що при кожному використанні було передано шаблону як параметри. Знехтувавши кодом форматування рамки та зображення, звернемо увагу на змістовний в даному контексті фрагмент шаблону:

Зверніть увагу на використання  та. Нумерація - один із способів ідентифікувати параметри всередині шаблону. В шаблоні номер кожного параметру оточують три фігурних дужки:. Ця конвенція відрізняється від синтаксису використання назви шаблону.

Використовуючи цей шаблон на деякій сторінці, ви вказуєте значення параметрів, розділяючи їх символом вертикальної риски (|). MediaWiki дозволяє передавати параметри шаблону трьома способами: анонімні, нумеровані, названі.

Анонімні параметри
Анонімні (за програмістською термінологією, позиційні) параметри просто перелічують послідовно один за одним:

В цьому випадку шаблон  отримує для заміщення   та   і дає в результаті:

Послідовність, в якій перелічено параметри, критична для правильного функціонування. Якщо при включенні шаблону змінити порядок параметрів таким чином:

дістанемо такий результат:

Примітка: звернення всередині шаблону до його аргументів за порядковим номером ( і т.ін.) дозволено лише для анонімних (позиційних) та нумерованих параметрів.

Note: If an equal sign appears inside the argument to an anonymous template parameter, that parameter may be misinterpreted as a named parameter (which is explained below in this document) treating the text before the equal sign as the parameter name and the text after it as the argument value. This is a common problem when you need to include an external link, or an HTML element with attributes (see Task 16235). The workaround is to use named parameters instead, or even numbered parameters as explained in the following section.

Нумеровані параметри
Для того щоб передати параметри в нумерованому стилі, просто позначте кожен з них номером:

Цього разу код шаблону  отримає параметри   та , незалежно від порядку їх запису при використанні шаблону, і дасть такий результат:

Названі параметри
Третій спосіб передавати параметри шаблону - це надати їм якісь особливі імена замість номерів. Для цього слід змінити сторінку шаблону так:

Спасибі... за. жму руку,

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

В цьому разі код шаблону  отримає параметри   and , в результаті побачимо:

Перевагою такого способу передачі параметрів, крім гнучкості у порядку, в якому їх можна вказувати, є те, що код шаблону стає більш зрозумілим, в ньому суттєво легше розібратися у випадку більшої кількості параметрів. Необхідність пам'ятати назви параметрів при використанні шаблону можна віднести як до переваг, так і до вад цього способу.

Значення за замовчуванням
If you transclude a template that expects parameters, but do not provide their arguments, in this way:

то результат (для перших двох способів передачі параметрів) вийде схожим на

Since no arguments were passed in, the template presents the parameters themselves, instead of their respective values. In these cases, it may be useful to define default values for the parameters, i.e. values that will be used if no value is passed in. For example, if the template contents are changed to:

then  defines that if no argument is provided for parameter , then the value   will be used. Similarly,, defaults parameter   to value. Now, transcluding the template again without passing any argument results in the following:

Order of evaluation
Template parameters are fully evaluated before they are passed to the template. So if one of your parameters is a call to another template, what is actually passed is the expanded parameter.

becomes before it becomes:

In a few circumstances, this order of evaluation makes a difference from the alternative. (The alternative being to check the results of the template call to see if there are additional templates to be expanded.)

First, the name of the template can be expanded at the same time and in the same way as the parameters.

Thus might expand to So that a template called  could display the thank you in the preferred language (however that was determined.)

Secondly, the template being called can't construct a template from pieces to be called later. A template that took the form would not work if was and was.

Thirdly, the parameter being passed is expanded only once, rather than every place the parameter is used in the template. This is more efficient on the mediawiki server.

Finally, the template being called can't stop the parameter from being expanded altogether. Even if a template only uses a parameter in some circumstances, it will always have been expanded before the call was made.

Recursion in templates
Including a template in itself won't throw MediaWiki into infinite recursion. MediaWiki will stop the recursion with the template's name in bold. For example, if the content of "Template:Aaaa" is " ", it'll show as "Template:Aaaa".

Управління включенням тексту шаблону до сторінок
За звичайного стану справ текст шаблону цілком відображується як при прямому перегляді, так і на сторінці, яка включає шаблон. Але є можливість обирати, які частини сторінки шаблону буде відображено чи включено, за допомогою теґів  та.

Будь-який текст між  та   буде відображено при прямому перегляді сторінки шаблону, але не буде включено до будь-якої іншої сторінки. Це корисно якщо необхідно включити до шаблону частину коду, яка не буде розповсюджуватися на інші сторінки, що цей шаблон включають, таку як:


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

Аналогічно, будь-який текст між  та   буде відображено лише при включенні шаблону на тій сторінці, яка його включає. Але його не буде відображено при прямому перегляді сторінки шаблону. Це корисно для:


 * Категоризації сторінок, які включають шаблон. Примітка: якщо в такий спосіб змінити категорії, до яких віднесено шаблон, на відображення цієї зміни на сторінках, що включають цей шаблон, необхідний певний час: це зумовлено . Щоб примусити рушій MediaWiki терміново переглянути категорії певної сторінки, відкрийте її для редагування та збережіть без жодної зміни.
 * Гарантування того, що код шаблону не виконуватиметься при перегляді сторінки шаблону. Зазвичай це роблять, коли шаблон очікує параметри, а без параметрів дасть безглуздий результат.

Everything outside  and   is processed and displayed normally; that is, both when the template page is being viewed directly and when the template is included in another page. The focus is on what is inside these two tags.

Everything outside  tags is discarded in the transclusion. Even sections tagged includeonly are discarded in the transclusion unless they are also tagged as onlyinclude. The focus is on what is outside this tag.

Nesting of these tags is also possible.

The three partial transclusion tags enable all possible combinations of what is processed and rendered. Comments also fill a role.

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

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

Для надання інформації про використання шаблону слід вмістити на його сторінці приклад, подібний до такого:

Використання
Подякувати користувачу:

Тоді дописувач може скопіювати цей приклад і вставити його на сторінку, а потім вписати актуальні параметри.

Linking to a template
To link to a template instead of including it, use the tl template. The name of the template the editor wants to link to goes after the vertical pipe. For example: links to the navbar template.

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

Код MediaWiki
Якщо у вас є права на імпортування (конкретно, ) на цільовому проекті:
 * 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) * Введіть повну назву потрібного шаблону у текстове поле, приміром "Template:Welcome". Особливу увагу звертайте на регістр літер та спеціальні символи - якщо назва шаблону не є абсолютно точною, експорт відбудеться, але результуючий .xml-файл не міститиме очікуваних даних.
 * 3) * Check the box "".
 * 4) * Uncheck the box "".
 * 5) * Click "".
 * 6) На цільовому вікі-проекті перейдіть до сторінки Special:Import та завантажте отриманий .xml.

Якщо у вас немає прав імпорту на цільовому вікі-проекті:


 * 1) Перейдіть до сторінки необхідного шаблону, потім до сторінки його редагування, звідки скопіюйте весь вікітекст
 * 2) На цільовому проекті перейдіть до створення/редагування сторінки з такою самою назвою, як сторінка шаблону, текст якого ви скопіювали. Вставте скопійований вікітекст. В короткий опис змін нового шаблону запишіть посилання на його оригінал.
 * 3) На сторінці редагування шаблону оригінального вікі-проекту, нижче вікна редагування, знайдіть перелік "". Для кожного шаблону з цього переліку відтворіть інструкції, описані вище. Зробіть так само для шаблонів, використовувані шаблонами з цього переліку, і так далі.

В такий спосіб буде скопійовано весь необхідний код, і цього виявиться досить для багатьох шаблонів. Якщо це не спрацює, на цільовому вікі-проекті перевірте червоні посилання під "Pages transcluded onto the current version of this page:", що знаходиться під вікном редагування. Якщо таки посилання там є, повторіть описані вище кроки і для цих сторінок.

Після успішного переносу з оригінального вікі-проекту шаблону та всіх сторінок, що з ним пов'язані, відредагуйте його на цільовому вікі-проекті, налаштувавши його відповідно до ваших потреб. Зверніть увагу на логотип, взаємозалежні категорії та червоні посилання.

Розширення
Розширення ParserFunctions часто використовується в шаблонах. Зайдіть на сторінку і перевірте, чи використовує скопійований вам шаблон будь-які з цих функцій. Якщо так, вам слід встановити. Для цього знадобиться доступ системного адміністратора до сервера, на якому розміщено ваш вікі-проект.

Інша залежність, яку ви часто побачите в шаблонах, особливо на Вікіпедії, - це Lua. Команда  у коді шаблону є характерним показником. Якщо вона присутня, слід встановити, для чого знов-таки необхідний адміністративний доступ. Див. інструкції із встановлення та використання функцій на сторінці розширення.

Код CSS та JavaScript
Крім коду MediaWiki, багато які шаблони використовують CSS, а деяким для повноцінного функціонування потрібен JavaScript. Це може бути причиною неочікуваної поведінки скопійованого шаблону. Для того, щоб скопіювати необхідний код CSS або JavaScript, необхідний адміністративний доступ до цільового вікі-проекту, оскільки доведеться редагувати системні повідомлення з простору імен "".


 * 1) Знайдіть в коді шаблону посилання на клас CSS (типове  ). Якщо ці класи визначено в "MediaWiki:Common.css" або в "MediaWiki:Monobook.css" оригінального вікі-проекту, скопіюйте ці класи до "MediaWiki:Common.css" цільового вікі-проекту та перевірте функціонування шаблону.
 * 2) Якщо функціональність шаблону все ще не відновлено, перевірте наявність коду в "MediaWiki:Common.js" та "MediaWiki:Monobook.js" на оригінальному вікі-проекті. Якщо він є, можете спробувати скопіювати його до "MediaWiki:Common.js" цільового вікі-проекту. Зазвичай вам слід копіювати такий код лише з довірених джерел, і навіть тоді спочатку переглянути код, спробувавши виділити частини, що можуть стосуватися вашого шаблону. Можете також очікувати знайти коментарі, які пояснять функціонування кожної частини.

Див. також

 * – приклад особливого застосування шаблону
 * – корисні фрагменти коду, які зустрічаються в багатьох шаблонах
 * - additional fancy control functions such as #if and #switch
 * - guidance on using parser functions in templates
 * m:Help:Template – значно детальніша інформація про функціонування шаблонів
 * m:Help:Advanced templates – describes even more advanced techniques such as dynamic template calls and variable variables
 * m:Help:Embed page – заміщення сторінок із інших просторів імен, ніж.
 * m:Help:Embed page – заміщення сторінок із інших просторів імен, ніж.