Довідка:Шаблони
Шаблони у Вікіпедії є спеціальним класом сторінок, що їх вміст динамічно підставляється в текст інших сторінок при кожному їх перегляді.
Зміст |
Загальна інформація [ред.]
Сторінки шаблонів є повноцінними статтями, для яких відведено власний простір імен Шаблон:. У Вікіпедії їх дозволено правити усім користувачам.
Вікі-розмітка для виклику шаблону у статті:
{{Ім'я шаблону}}
При перегляді сторінки, замість цього тегу буде вставлено текст шаблону Шаблон:Ім'я шаблону. Якщо шаблон ще не існує, то тег відображатиметься як «червоне» посилання на неіснуючу статтю: Шаблон:Неіснуючий шаблон. Щоб уникнути цього, переконайтесь перед збереженням сторінки, що усі використані Вами шаблони існують. Зробити це можна скориставшись функцією попереднього перегляду.
Якщо у головному просторі імен існує стаття із такою ж назвою, що й ім'я шаблону, її можна використати як шаблон за допомогою наступної синтаксичної конструкції:
{{:Назва_статті}}
Якщо назва статті це зображення чи категорія, то виклик шаблону поверне опис зображення чи категорії. Така можливість використовувати будь-яку статтю як шаблон дає змогу експериментувати із шаблонами, не створюючи зайвих статей у просторі імен Шаблон:, чи використовувати підписи та пояснення до зображень.
Пам'ятайте, що назва статті чи шаблону чутлива до регістру.
Допускається рекурсивне включення шаблонів.
Значення змінних шаблону підставляються після того як шаблон буде вставлено в статтю, тобто, наприклад, якщо шаблон містить виклик змінної {{PAGENAME}}, вона поверне як значення назву статті у яку підставлено шаблон, а не ім'я шаблону.
При редагуванні сторінки внизу під віконцем редагування відображається список використаних у статті шаблонів. При цьому він відображатиметься навіть тоді, коли редагується лише секція статті, що не містить викликів шаблонів. Якщо шаблони викликаються рекурсивно, то у цей список попадуть як шаблони верхнього, так і нижніх рівнів.
Параметри шаблонів [ред.]
Параметри шаблону застосовують в тому разі, коли необхідно передбачити можливість дописати в шаблон певну інформацію, оригінальну для кожної даної статті. Шаблон може не використовувати жодного параметру (наприклад Шаблон:noimg), використовувати один параметр (наприклад Шаблон:Messier) або використовувати багато параметрів (наприклад Шаблон:Зображення).
Параметри шаблону можуть бути іменованими чи нумерованими. Варіанти синтаксису
{{templatename|parname1=parvalue1|parname2=parvalue2}}, тоді у тексті шаблону слід посилатися на{{{parname}}};{{templatename|parvalue1|parvalue2}}, тоді у тексті шаблону слід використовувати{{{1}}},{{{2}}}.
Зайві параметри (що не використовуються в тексті шаблону) ігноруються. Імена параметрів чутливі до регістру, пробілів, підкреслень та інших символів не з набору [a-z\-A-Z0-9] не допускаються.
Зверніть увагу на потрійні фігурні дужки при використанні параметрів!
Таким чином, механізм шаблонів виконує два типи підстановок:
- виклик шаблону (подвійні фігурні дужки) підмінюється вмістом шаблону;
- параметри шаблону (потрійні фігурні дужки) підмінюються значеннями параметрів шаблону.
Параметром шаблону може бути посилання на іншу статтю. Нехай наприклад в нас є Шаблон:
Початок {{{1}}} Кінець.
Тоді {{Шаблон| [[Main_Page|Головна сторінка]]}} буде розгорнуто в
Початок Головна сторінка Кінець.
Якщо деякий параметр someparameter не визначено, він передається нерозкритим текстом {{{someparameter}}} у викликаючу статтю, у випадку рекурсивного виклику його можна розкрити на наступному рівні.
Зауважте наступну різницю у викликах: виклик {{Шаблон||a}} встановлює значення першого параметру рівним порожній стрічці. Щоб присвоїти значення другому параметру не визначаючи значення першого скористайтесь викликом {{Шаблон||2=a}}.
Також, виклик {{Шаблон|a=b|c}} визначить параметр «a» і не встановить параметр «1», щоб правильно визначити обидва параметри, скористайтесь наступною синтаксичною конструкцією {{Шаблон|1=a=b|2=c}}.
Умовне включення параметрів [ред.]
Якщо поява нерозкритого тексту не бажана, можна використовувати умовне включення параметра в текст шаблону. Параметр, записаний у формі {{{parameter|альтернативний текст}}} буде включений в текст шаблону тільки в тому випадку, якщо значення параметра задано, інакше замість значення параметра з'явиться альтернативний текст. Цей спосіб доречний тоді, коли для деякого параметра шаблона передбачається певне значення за замовчуванням. Найпростіший приклад: якщо деякий параметр parameter записаний усередині шаблону у формі {{{parameter|}}} (тобто якщо в якості альтернативного тексту використано порожній рядок), на його місці не виводитиметься взагалі нічого (навіть {{{parameter}}}), якщо цей параметр виявиться не заданим.
Іноді виникає необхідність змінити в тексті шаблону щось більше, ніж сам параметр, якщо цей параметр не заданий. Для цієї мети використовуються функції парсера: {{#if}} та інші. {{#if}} викликається наступним чином:
{{#if: перевірювана-змінна-або-параметр
| текст-для-випадку,-коли-значення-test-не-пусте
| текст-для-випадку,-коли-значення-test-пусте
}}
Другий параметр не є обов'язковим, тому можна використовувати скорочену форму:
{{#if: змінна-перевірки-або-параметр
| текст-для-випадку,-коли-значення-test-не-пусте
}}
Демонстраційний приклад вживання:
{{#if: {{{sample|}}}
|параметр '''sample'''визначено!
|параметр'''sample'''порожній!
}}
Реальний приклад застосування {{#if}} ви можете знайти в коді шаблону {{Fidonet}}.
Ефект порожніх рядків [ред.]
Розглянемо приклад роботи комбінації з трьох умовних операторів:
{{#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) [ред.]
- Докладніше у статті Вікіпедія:Підстановка
Використання «subst:» після подвійних фігурних дужок матиме наслідком підстановку тексту шаблону чи значення змінної на момент збереження сторінки у якій вони використовується.
Наприклад «timestamp»:
{{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}, {{subst:CURRENTTIME}} (UTC)
підставиться при збереженні, як:
13 вересня 2005, 16:24
Тоді як
{{subst:Welcome}}
що використовується для привітання нових користувачів, відобразиться так:
Див. також [ред.]
Коли сторінка, викликана для включення, є сторінкою-перенаправленням, буде включено вміст сторінки на яку вказує редирект (перенаправлення).
Посилання на шаблон [ред.]
Якщо використовуються посилання на шаблони як на звичайні статті, в цьому випадку передача параметрів неможлива.
Історія змін для сторінок, що містять шаблони [ред.]
При перегляді історичних версій статей, що містять шаблони і/або зображення, завжди використовується поточна версія шаблону та зображень, тобто автоматична «абсолютна» реконструкція історичних версій композитних текстів є неможливою.