From Test-Scratch-Wiki

SandCastleIcon.png This page has links to outside of the Scratch website or Wikipedia. Remember to stay safe when using the internet as we can't guarantee the safety of other sites.

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

Шаблон - це особлива сторінка вікі, вміcт якої може динамічно включатися (англ. transcluded) до інших сторінок.

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

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

Шаблони в двох словах

Назва сторінки шаблону містить префікс "Template:Ukr/" (в тестовому режимі не перекладається українською), що відносить її до простору назв "Template". Створити її можна так само, як і будь-яку іншу сторінку вікі.

Якщо ти створиш, приміром, сторінку шаблону "Template:Ukr/Вітання", яка містить такий текст:

Вітаємо в українській Скретч вікі!

то вставити цей текст до будь-якої іншої сторінки можна за допомогою синтаксису:

{{Ukr/Вітання}}

При перегляді сторінки, до якої включено цей шаблон, читач побачить "Вітаємо в українській Скретч вікі!" замість розмітки {{Ukr/Вітання}}.

Далі ти можеш застосувати цей шаблон на будь-якій кількості сторінок. Якщо тепер ти зміниш сторінку шаблону, приміром, на:

Привіт! Це українська Скретч вікі.

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

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

Включення шаблону

Шаблони можна включати до інших сторінок в різних режимах:

  • {{Ukr/Назва шаблону}}. Звичайна форма і основний спосіб використання. Як сказано вище, динамічно включає вміст сторінки [[Template:Ukr/Назва шаблону]] до сторінки з таким посиланням. Якщо шаблон містить елементи програмування, вони виконуються і відображується результат.
  • {{subst:Ukr/Назва шаблону}}. Така розмітка відрізняється від попередньої тим, що обробка шаблону виконується не при кожному перегляді, а при збереженні сторінки. До тексту включається результат, наче фото. Він залишатиметься при перегляді саме таким, незважаючи на подальші зміни шаблону, аж до наступного редагування сторінки з цією розміткою.
  • {{safesubst:Ukr/Назва шаблону}}. Така розмітка є варіантом попередньої, створеним для складних випадків підшаблонів і рекурсивного виконання шаблону.
  • {{msgnw:Ukr/Назва шаблону}}. Така розмітка динамічно включає вихідний текст шаблону, без виконання, при кожному перегляді сторінки.

Звичайна сторінка вікі теж може слугувати шаблоном. Для цього слід вказати простір назв, в якому розміщено цю сторінку (за замовчуванням це простір назв "Template"):

Запис Включає сторінку
{{Pagename}} [[Template:Pagename]]
{{Template:Pagename}} [[Template:Pagename]]
{{User:Pagename}} [[User:Pagename]]
{{:Pagename}} [[Pagename]]
{{NonExistentNamespace:Bar}} [[Template:NonExistentNamespace:Bar]]

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

Параметри шаблону

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

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

Gobo1.png
A little thank you...
for all your effort.
hugs, Me

Примітка-подяка має причину (в цьому прикладі "all your effort") та підпис ("Me"). Таким чином, цей шаблон {{Thankyou}} може бути застосований будь-яким дописувачем для висловлення подяки за будь-що.

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

'''A little thank you...'''
for {{{1}}}.
hugs, {{{2}}}

Зазнач застосовану особливу вікірозмітку {{{1}}} та {{{2}}}. Це спосіб посилання на параметр в тексті шаблону, на місце цього запису й буде підставлене значення параметру, передане при включенні шаблоні. Номер кожного параметру всередині шаблону оточений трьома фігурними дужками: {{{ }}}.

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

Анонімні параметри

Анонімні, або позиційні, параметри передаються просто списком, значення розділені вертикальною рискою |. Номер параметру всередині шаблону – це його позиція у списку, відлік починається з 1.

{{Thankyou|all your effort|Me}}

В цьому прикладі шаблон {{Thankyou}} отримує такі значення параметрів: {{{1}}}=all your effort та {{{2}}}=Me, що записується як:

Gobo1.png
A little thank you...
for all your effort.
hugs, Me


Якщо змінити послідовність параметрів у цьому списку:

{{Thankyou|Me|all your effort}}

шаблон {{Thankyou}} отримає такі значення параметрів: {{{1}}}=Me та {{{2}}}=all your effort, що приведе до, мабуть, небажаного відображення:

Gobo1.png
A little thank you...
for Me.
hugs, all your effort

Отже, послідовність, в якій вказано анонімні параметри, є критичною.

Іменовані параметри

Другий спосіб передавання параметів полягає в призначенні їм назв. Текст шаблону можна змінити в такий спосіб:

'''A little thank you...'''
for {{{причина}}}.
hugs, {{{підпис}}}

Тоді всередині шаблону значення параметрів ідентифікуватимуться не номером, а відповідними словами {{{причина}}} та {{{підпис}}}. Включення такого шаблону з передаванням параметрів виглядатиме як:

{{Thankyou|підпис=Me|причина=being who you are}}

Тут послідовність, в якій указано параметри, уже несуттєва. Шаблон {{Thankyou}} у даному прикладі отримує такі значення параметрів: {{{причина}}}=being who you are та {{{підпис}}}=Me. Це приводить до такого відображення:

Gobo1.png
A little thank you...
for being who you are.
hugs, Me

Переваги застосування такого способу передавання параметрів:

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

Недоліком, вочевидь, є трохи довший запис при включенні шаблону.

Нумеровані параметри

Фактично це іменовані параметри, для назв яких застосовано натуральні числа 1, 2, 3 тощо.

{{Thankyou|2=Me|1=your friendship}}

Шаблон {{Thankyou}} отримує у цьому прикладі значення параметрів {{{1}}}=your friendship та {{{2}}}=Me, що дає таке відображення:

Gobo1.png
A little thank you...
for your friendship.
hugs, Me


Значення за замовчуванням

Якщо включити шаблон, що очікує параметрів, але не подати їхніх значень, приміром, так:

{{Thankyou}}

отримаємо таке відображення:

Gobo1.png
A little thank you...
for 1.
hugs, 2


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

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

'''A little thank you...'''
for {{{причина|helping the Wiki}}}.
hugs, {{{підпис|A wikian}}}

Тут запис {{{причина|helping the Wiki}}} визначає, що у випадку, коли значення параметру причина не вказано, слід відобразити для нього everything. Те саме стосується і параметру підпис з його значенням за замовчуванням A wikian. Тепер включення шаблону без указання параметрів дасть таке відображення:

Gobo1.png
A little thank you...
for helping the Wiki.
hugs, A wikian


Керування включенням елементів шаблону

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

Будь-який текст, охоплений <noinclude> та </noinclude>, відображується лише при прямому перегляді сторінки шаблону і не входить у відображення при включенні шаблону.

Це може виявитися корисним для:

  • Категоризації шаблонів
  • Міжмовних посилань на версію цього шаблону іншою мовою
  • Пояснювального тексту щодо застосування шаблону

Зворотню поведінку задає тег <includeonly>. Текст, оточений <includeonly> та </includeonly>, виконується та дає відображення лише при включенні шаблону, але не при прямому перегляді його сторінки. Очевидним застосуванням є додавання певної категорії до сторінок, які включають шаблон, без додавання шаблону як такого до цієї категорії.

Примітка: коли ти змінюєш категорію, до якої належить шаблон, категоризація сторінок, що включають цей шаблон, не зміниться негайно і навіть після застосування "⧼Cargo-purgecache⧽". Ця ситуація вимагає певного обсягу обчислень рушія і контролюється чергою задач.

Організація шаблонів

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

Знайти перелік шаблонів можна так:

  1. Натисни Special pages
  2. Перейди там за посиланням All pages with prefix. На цій сторінці:
    1. У переліку Namespace: обери Template
    2. (Тестовий статус вікі) Якщо ти хочеш обмежитися тільки україномовними шаблонами, вкажи, що сторінка має починатися з "Ukr".
    3. Натисни кнопку Show.

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

Інформація про використання шаблонів зазвичай надається на сторінці шаблону:

<noinclude>
== Застосування ==
Подяка дописувачам:
{{Thankyou|причина=за що|підпис=хто дякує}}
</noinclude>

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

Рекомендована форма шаблонів

Зазвичай використовують стиль, описаний тут. Подробиці на сторінці того шаблону.

Копіювання між різними вікі

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

Якщо є права адміністратора

  1. Зайди на сторінку Special:Export вихідної вікі. Введи точну назву шаблону у велике поля для вводу, познач "Include templates" і натисни Export. Отримаєш результат у вигляді файлу .xml (його можна переглядати як звичайний текстовий файл).
  2. Зайди на сторінку Special:Import кінцевої вікі та завантаж отриманий файл .xml.
  3. В тексті шаблону пошукай посилання на класи CSS (на кшталт class="foobar"). Якщо таких класів немає у файлах "MediaWiki:Common.css" та "MediaWiki:Monobook.css" кінцевої вікі, скопіюй їх туди з відповідного файлу вихідної вікі.
  4. Якщо шаблон спирається на ParserFunctions, перевір, чи встановлене розширення ParserFunctions у кінцевій вікі, якщо ні – інсталюй його.

Якщо немає прав адміністратора

  1. Скопіюй текст шаблону до кінцевої вікі; залиш веб-посилання на нього у вихідній вікі в короткому описі редагування.
  2. Відкрий редагування шаблону в кінцевій вікі і подивись на перелік шаблонів унизу. Якщо там є якісь червоні посилання, ті шаблони слід також скопіювати з вихідної до кінцевої вікі. Цю процедуру, можливо, доведеться повторювати кілька (багато?) разів, доки жоден із нових шаблонів не міститиме червоних посилань.
  3. В тексті кожного зі скопійованих шаблонів пошукай посилання на класи CSS (на кшталт class="foobar"). Якщо таких класів немає у файлах "MediaWiki:Common.css" та "MediaWiki:Monobook.css" кінцевої вікі, скопіюй їх туди з відповідного файлу вихідної вікі.
  4. Якщо будь-який зі скопійованих шаблонів спирається на ParserFunctions, перевір, чи встановлене розширення ParserFunctions у кінцевій вікі, якщо ні – інсталюй його.

Дивись також

Cookies help us deliver our services. By using our services, you agree to our use of cookies.