Перейти до вмісту

Довідка:Шаблони

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Вікіпедія:Включення)

Шаблони — це спеціальний клас сторінок Вікіпедії, вміст яких динамічно включається в текст інших сторінок.

Загальна інформація

[ред. | ред. код]

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

Вікірозмітка для виклику шаблону на сторінці складається з пари відкривальних фігурних дужок ({), назви шаблону, і пари закривальних фігурних дужок (}):

{{<Назва шаблону>}}

При перегляді сторінки, замість цього коду буде вставлено текст шаблону із назвою <Назва шаблону>. Якщо шаблон {{назва шаблону}} ще не існує, то відобразиться «червоне» посилання на відсутню сторінку: Шаблон:Назва шаблону. Щоб уникнути цього, переконайтесь перед збереженням сторінки, що усі використані Вами шаблони існують. Зробити це можна скориставшись функцією попереднього перегляду.

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

{{:Назва статті}}

Це корисно для вбудовування сторінок одна в одну і комплектування «комплексних» сторінок, які складаються з окремих розділів, що, в свою чергу, можуть бути окремими сторінками, ба, навіть, статтями. У багатьох Вікіпедіях така можливість використовується для будування, наприклад, сторінок багатозначності, що містять переліки окремих значень поняття.

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

Пам'ятайте, що назва сторінки (також шаблону) у Вікіпедії чутлива до регістру (окрім першої літери).

Допускається рекурсивне включення шаблонів.

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

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

Способи використання

[ред. | ред. код]

Зазвичай шаблони використовуються таким чином: у подвійних фігурних дужках {{ }} прописується назва шаблону — частина назви сторінки шаблону одразу після префіксу простору назв Шаблон:. У включеннях шаблонів перша літера одразу після префіксу простору назв Шаблон: може бути і великою, і маленькою. Наприклад: {{Назва шаблону}} або {{назва шаблону}}.

Для відокремлення назви шаблону від його параметрів, а також наступних параметрів один від одного використовується вертикальна риска (пайп) (|). Існують нумеровані та іменовані параметри (наприклад, параметр (date= у шаблонах упорядкування — іменований параметр, оскільки має власну назву; нумеровані параметри не мають власної назви). Для увімкнення іменованих параметрів необхідно надати їм конкретне значення вказавши назву параметру (наприклад: {{Navbox|name=Box}}), для увімкнення інших параметрів достатньо вказати будь-яке значення (залежно від того, як ці параметри прописано в коді шаблону). Для чіткого задання нумерованого параметра перед його значенням вказують його номер (наприклад, 1= для першого параметра).

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

Включення

[ред. | ред. код]

Включення — це стандартне використання шаблону, що являє собою включення вмісту певної сторінки (зазвичай шаблону) в іншу сторінку, вказавши назву доданої сторінки. При такому використанні вміст доданої сторінки (шаблону) не переноситься до коду цільової сторінки. Подібно до того, як будь-яка назва сторінки може стати посиланням, якщо її розмістити у подвійних квадратних дужках ([[Простір назв:Назва сторінки]]), будь-яка назва сторінки може стати шаблоном, якщо її розмістити у подвійних фігурних дужках, {{Простір назв:Назва сторінки}}. Шаблони можуть бути одночасно включені до багатьох різних сторінках, зміни, внесені до шаблону, автоматично відображатимуться на всіх сторінках, у які він був включений. У цьому прикладі зображено шаблон «B», код якого містить лише слово foo, та як його включення відображається на сторінках, у яких він включений.

Підстановка

[ред. | ред. код]

На відміну від включення, при використанні підстановки код шаблону переноситься безпосередньо в тіло сторінки. Для підстановки шаблону використовується {{subst:Назва шаблону}}. На сторінках документації шаблонів має бути чітко прописано, якщо вони використовуються з підстановкою.

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

[ред. | ред. код]

Передача параметрів в шаблон

[ред. | ред. код]

Параметри шаблону використовують для передачі інформації в шаблон. Шаблони може не приймати жодного параметру ({{Шаблон:Без ілюстрацій}}), може приймати один параметр (наприклад: {{Шаблон:Messier|35}}), чи приймати багато параметрів, наприклад:

{{speciesbox 
  | name = Заєць сірий 
  | image = Feldhase.jpg 
  | genus = Lepus 
  | species = europaeus 
  | range_map = European Hare area.png
}}

Для аналізу та роботи з переданими в шаблон параметрами використовують парсерні функції (наприклад: #expr, #if, #ifeq, #ifexpr, #switch, #time, #iferror ... ).

Робота з параметрами всередині шаблону

[ред. | ред. код]

У коді шаблону параметри розміщують в потрійних дужках: {{{1}}}, {{{parameter_1}}}, {{{name}}}...

При виконанні механізм шаблону виконує два типи підстановок:

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


Приклад: Нехай у нас є файл https://uk.wikipedia.org/wiki/Шаблон:X з наступним кодом:

Початок {{{1}}} Кінець.

Тоді виклик: {{X|[[Main Page|Головна сторінка]]}}, де параметром шаблону слугує посилання на іншу статтю, буде розгорнуто, як:

Початок Головна сторінка Кінець.

Типи параметрів

[ред. | ред. код]

Розрізняють два типи параметрів шаблонів:

  • іменовані параметри: {{{назва параметра}}}, {{{населення}}}, {{{вартість}}},...
  • нумеровані параметри, чи неіменовані: {{{1}}}, {{{2}}}, {{{3}}}...

Параметри шаблонів — є чутливими до регістрів. У різних мовних розділах Вікіпедії існують власні усталені конвенції, щодо найменування параметрів. В MediaWiki великі та малі літери сприймаються по-різному, тому, до прикладу, {{{еквівалент НАТО}}} та {{{еквівалент нато}}} — це два різні параметри. Крім того, пробіли та нижні підкреслення також сприймаються по-різному, тому {{{еквівалент НАТО}}} i {{{еквівалент_НАТО}}} — теж два різні параметри.

Імена параметрів чутливі до регістру, пробілів, підкреслень та інших символів не з набору [a-z\-A-Z0-9].

У назвах іменованих параметрів слід використовувати малі літери: {{{заголовок}}},{{{alignment}}}, {{{width}}} проте у випадку коли вони позначають власні назви чи акроніми використовують великі літери, наприклад: {{{ЄДРПОУ}}}, {{{код НАТО}}}.

Зайві параметри, що не використовуються в коді шаблону, ігноруються.

Іменовані

[ред. | ред. код]

Іменовані параметри, при виклику шаблону, можна задавати в довільному порядку:

{{Шаблон | параметр1 = значення1 | параметр2 = значення2 }}
{{Шаблон | параметр2 = значення2 | параметр1 = значення1 }}

Тому результат обох викликів буде ідентичним.

Нумеровані

[ред. | ред. код]

Як нумеровані, так й іменовані параметри можна задавати за порядком їх слідування, не вказуючи імені чи нумерації:

{{Шаблон|значення1|значення2}}

Параметри можна також задавати явно вказуючи порядковий номер параметру:

{{Шаблон|1=значення1|2=значення2}}

Вказання порядкового номеру параметра, дозволяє (як і у випадку з вказанням імені параметра) змінювати порядок задання параметрів. Наступні виклики шаблонів дадуть однаковий результат:

{{Шаблон | 1 = значення1 | 2 = значення2 }}
{{Шаблон | значення1 | 2 = значення2 }}
{{Шаблон | 2 = значення2 | 1 = значення1 }}
{{Шаблон | 2 = значення2 | значення1 }}

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

Позиційно не задані параметри

[ред. | ред. код]

Виклики:

{{Шаблон|значення2|1=значення1}},
{{Шаблон2|значення1|1=значення2|значення3}},
{{Шаблон2|значення1|значення2|2=значення3}}

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

Якщо параметр someparameter не визначено (не задано), то він передаватиметься нерозкритим текстом: {{{someparameter}}} на сторінку, де він викликаний; у разі рекурсивного виклику його можна розкрити на наступному рівні.

Натомість у випадку пропуску параметрів значення "пропущеного позиційного параметра", ініціалізуватиметься порожнім рядком.

Пропуск параметрів

[ред. | ред. код]

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

Позиційно не задані параметри — не ініціалізуються, пропущені параметри — ініціалізуються порожнім рядком.

У випадку якщо параметр «a» не є першим параметром шаблону, виклик: {{Шаблон|a=значення1|значення2}} задасть параметр «a», проте не встановить параметр «1». Щоб одночасно ініціалізувати обидва параметри «1» та «a» тим самим значенням, можна скористатися наступною синтаксичною конструкцією: {{Шаблон|1=a=значення1|2=значення2}}.

Задання значення параметру за замовчуванням

[ред. | ред. код]

Якщо поява нерозкритого тексту не бажана, можна задати значення параметра за замовчуванням: {{{parameter|альтернативне значення}}}. Значення параметра буде використано в коді шаблону в тому разі, якщо значення параметра задане (всередині чи зовні шаблону), в іншому випадку замість параметра використовуватиметься альтернативне значення. Параметр можна ініціалізувати за замовчуванням порожнім рядком, написавши: {{{parameter|}}}, в такому разі замість альтернативного значення підставлятиметься порожній рядок, у випадку якщо параметр виявиться незаданим, неініціалізованим.

Загалом можна виділити три варіанти:

  • значення за замовчуванням відсутнє: {{{1}}}, {{{назва міста}}} тощо. Якщо цей параметр не задано, шаблон відображатиме його назву.
  • порожнє значення за замовчуванням: {{{1|}}}, {{{назва міста|}}} тощо. Якщо у включенні відповідний параметр не заповнений, шаблон, залежно від налаштувань, не покаже нічого або покаже порожній рядок.
  • задане значення за замовчуванням: {{{1|100%}}}, {{{назва міста|Київ}}}, {{{2|{{{3}}}}}}, {{{2|{{{місто|}}}}}} тощо. Якщо відповідний параметр не задано, то значення буде взяте з розрахунку формули після символу (pipe) "|".

Текст значення за замовчуванням задається після символу (pipe) |. Це може бути порожнє місце, текст, число, інший шаблон чи параметр.

Умовна шаблонна функція

[ред. | ред. код]

Для того, щоб вибирати поведінку шаблону в залежності від значення вхідного параметру можна використати умовну функцію: {{#if}} та інші: #ifeq, #ifexpr, #ifexist, #iferror, #ifeq, #switch.

Функція if (англ. якщо) служить для створення конструкцій вигляду if-then-else, з наступним синтаксисом:
{{ #if: ''<умова>'' | ''<код, якщо умова істинна>'' | ''<код, якщо умова помилкова>'' }}
{{ #if: ''<умова>'' | ''<код, якщо умова істинна>'' }}
{{ #if: ''<умова>'' || ''<код, якщо умова помилкова>'' }}

Приклад використання:

{{#if: {{{sample|}}}
    |"Параметр '''sample'''визначено!" 
    |"Параметр'''sample'''порожній!" 
}}

Ефект порожніх рядків

[ред. | ред. код]

Розглянемо приклад роботи комбінації з трьох умовних операторів:

{{#if: {{{sample1|}}}|'''sample1'''! }}
{{#if: {{{sample2|}}}|'''sample2'''! }}
{{#if: {{{sample3|}}}|'''sample3'''! }} 

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

Ситуація Код при виклику шаблону Код Результат
Всі оператори визначені
|sample1=sample1
|sample2=sample2
|sample3=sample3
{{#if: {{{sample1|sample1}}}|'''sample1'''! }}
{{#if: {{{sample2|sample2}}}|'''sample2'''! }}
{{#if: {{{sample3|sample3}}}|'''sample3'''! }}

sample1! sample2! sample3!

Другий оператор не визначено
|sample1=sample1
|sample2=
|sample3=sample3
{{#if: {{{sample1|sample1}}}|'''sample1'''! }}
{{#if: {{{sample2|}}}     |'''sample2'''! }} 
{{#if: {{{sample3|sample3}}}|'''sample3'''! }}

sample1!

sample3!

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

'''sample1'''! 
< порожній рядок > 
'''sample3'''! 

Такий ефект може виявлятися в шаблонах-картках, коли на місці невизначених параметрів з'являється порожній простір. Щоб не допустити подібного ефекту, необхідно не допускати перенесення рядка між умовними операторами. Цього можна домогтися декількома способами:

Спосіб Код Результат
Писати всі умовні параметри в один рядок
{{#if: {{{sample1|sample1}}}|'''sample1'''! }}{{#if: {{{sample2|}}}|'''sample2'''! }}{{#if: {{{sample3|sample3}}}|'''sample3'''! }}

sample1!sample3!

Включати коментарі для виключення знака переносу
{{   #if: {{{sample1|sample1}}}|'''sample1'''! }}<!--роздільник 
-->{{#if: {{{sample2|}}}      |'''sample2'''! }}<!--роздільник 
-->{{#if: {{{sample3|sample3}}}|'''sample3'''! }}

sample1!sample3!

Робити переноси всередині умовних операторів, а не між ними
{{
#if: {{{sample1|sample1}}}|'''sample1'''! 
}}{{
#if: {{{sample2|}}}     |'''sample2'''! 
}}{{
#if: {{{sample3|sample3}}}|'''sample3'''! 
}}

sample1!sample3!

Перегляд вмісту шаблону

[ред. | ред. код]

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

Теги noinclude та includeonly

[ред. | ред. код]

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

Для розміщення у шаблоні додаткової інформації — наприклад правил використання шаблону або категорії шаблону, яка не повинна відображатись в статтях, в яку включається даний шаблон, таку інформацію слід розмістити наступним чином: <noinclude>Додаткова інформація (''наприклад'': шаблон використовується для...)</noinclude>. В протилежному випадку — якщо нам слід закласти в шаблон інформацію, яка має відображатись в статтях, в яких цей шаблон включається, але не повинна впливати на сам шаблон (найчастіше це — категоризація статті) — слід писати <includeonly>Додаткова інформація, (''наприклад:'' [[Категорія статті]]) </includeonly>

He допускайте порожніх рядків навколо конструкцій <noinclude> і <includeonly>, так як порожній рядок буде тлумачитися як перенесення рядка, що буде додано шаблоном у статтю.

Посилання на редагування шаблону

[ред. | ред. код]

Іноді бажано мати посилання на сторінку редагування шаблону в тексті самого шаблону (наприклад, якщо його вміст може часто змінюватися). Таке посилання можна «зашити» всередину самого шаблону, більш того, зробити саме шаблоном. Див. Шаблон:ed, приклад використання: {{ed|{{PAGENAMEE}}|{{NAMESPACE}}:{{PAGENAME}}}} дасть ред. Довідка:Шаблони.

Обмеження й можливості

[ред. | ред. код]

Використання вкладених подвійних чи потрійних фігурних дужок всередині подвійних вкладених дужок

[ред. | ред. код]

Через використання подвійних і потрійних дужок зміст виразу може бути невизначеним. Наприклад замість

{{{{{abra}}}}}

слід використовувати або

{{{ {{abra}} }}}

— повернене шаблоном abra значення є назвою параметра даного шаблону, або

{{ {{{abra}}} }}

— значення параметра abra є назвою шаблона, вкладеного в даний. Уникайте, однак зайвих пробілів.

Тег категорії в шаблоні. Проблема кешування

[ред. | ред. код]

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

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

Рекомендується використовувати категорії у шаблонах типу {{TODO}} для «маркування» статей певного типу, та не рекомендується використання у навігаційних шаблонах.

Кешування

[ред. | ред. код]

Редагування шаблону автоматично очищає кеш сервера від усіх статей що безпосередньо його використовують. Однак у випадах непрямого виклику (рекурсивний виклик, шаблони які залежать від параметрів тощо.), внутрішній кеш системи не очищується і стандартний «Refresh» браузера може не працювати. У таких випадках використовуйте «action=purge», тобто переходьте за URL типу:

 [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAMEE}}|action=purge}} Очистити кеш сторінки]

що буде відображено як:

Очистити кеш сторінки

Або ви можете просто скористатися готовими шаблонами: Шаблон:Purge: очистити кеш; {{Очистити кеш}}: очистити кеш.

[ред. | ред. код]

Підстановка subst і параметри ({{{1}}}) не працюють в тегах ref і gallery. Це можливо обійти, використавши магічне слово tag.

Меташаблони

[ред. | ред. код]

Меташаблони або Шаблони-контейнери — такі шаблони Вікіпедії, які призначені для використання у інших користувацьких шаблонах.

Див. також категорію К:Шаблони-контейнери (0)

Див. також

[ред. | ред. код]

Коли сторінка, викликана для включення, є сторінкою-перенаправленням, буде включено вміст сторінки на яку вказує редирект (перенаправлення).

Посилання на шаблон

[ред. | ред. код]

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

Історія змін для сторінок, що містять шаблони

[ред. | ред. код]

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