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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Загальна інформація[ред.ред. код]

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

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

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

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

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

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

це корисно для вбудовування сторінок одна в одну і комплектування "комплексних"

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

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

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

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

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

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

Параметри шаблонів[ред.ред. код]

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

Параметри шаблону можуть бути іменованими чи нумерованими. Варіанти синтаксису

  • {{назвашаблону|parname1=parvalue1|parname2=parvalue2}}, тоді у тексті шаблону слід посилатися на {{{parname1}}} і {{{parname2}}};
  • {{назвашаблону|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:  змінна-перевірки-або-параметр  
|| текст-для-випадку,-коли-значення-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}}

що використовується для привітання нових користувачів, відобразиться так:

Див. також[ред.ред. код]

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

Посилання на шаблон[ред.ред. код]

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

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

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