Теги та їх синтаксис

Усі цикли повертають записи (інформацію) з бази даних: про статті, рубрики, авторів та ін. Кожен запис містить поля: назву, дату, вступний і основний текст, і багато інших. Аби відобразити цю інформацію в HTML шаблоні в необхідних місця ми використовуємо теги.

Теги SPIP використовуються для виведення потрібної нам інформації в необхідному місці.

Базове використання

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

Ім’я тегу завжди починається з символу «решітка» (#), а назва пишеться великими буквами.

Ім’я тегу завжди відповідає імені поля в базі даних SPIP.

Приклад, який виводить назви усіх статей в розділі:

<BOUCLE_articles(ARTICLES){id_rubrique}>
<li>#TITRE
</BOUCLE_articles>

Кожен раз, коли виконується цикл (SPIP знаходить інформацію про статтю), тег #TITRE замінюється на назву статті:

<li>Назва статті 1
<li>Назва статті 2
...
<li>Назва останньої статті

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

Опціональний код

На практиці вкрай рідко інформація виводиться в чистому вигляді, зазвичай елементам надається оформлення за допомогою HTML тегів.

Наприклад, існує SPIP тег, який відповідає за виведення топ-назви статті - надзаголовку - (#SURTITRE). Але часто це поле не заповнюється при внесенні інформації на сайт. Заздалегідь ми не можемо знати, чи внесуть цю інформацію редактори сайту чи ні.

Додамо виведення топ-назви в попередній приклад. Ми отримаємо наступний код:

<BOUCLE_articles(ARTICLES){id_rubrique}>
<li>#SURTITRE<br>#TITRE
</BOUCLE_articles>

який виводить топ-назву (#SURTITRE) і назву (#TITRE) для кожної статті рубрики. Але що станеться, якщо у якоїсь статті топ-назва буде порожньою? HTML код буде виглядати наступним чином: «<li><br> Назва статті», тобто виведеться макер (через HTML тег li), порожній рядок і в наступному рядку - назва статті.

Нам необхідно виводити «<br>» тільки тоді, коли у статті є інформація у полі топ-назва (#SURTITRE).

Наступний запис тегу дозволяє вирішити це завдання:

[опціональний код до (#TAG) опціональний код після]

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

Допрацюємо наш приклад:

<BOUCLE_articles(ARTICLES){id_rubrique}>
<li>[(#SURTITRE)<br>]#TITRE
</BOUCLE_articles>

Тепер приклад працює правильно: якщо топ-назва статті існує, вона виводиться, а після неї йде тег <br>; якщо ж поле порожнє, то <br> не додається на сторінку.

Розширене використання

Починаючи з версії 1.8 можна розміщувати один тег всередині іншого. Наприклад, якщо ми хочемо вивести топ-назву статті (#SURTITRE) тільки в тому випадку, коли є інформація в підзаголовку статті (#SOUSTITRE), то код буде виглядати так:

<BOUCLE_articles(ARTICLES){id_rubrique}>
[<li> [(#SURTITRE)<br>](#SOUSTITRE)]
</BOUCLE_articles>

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

Як відрізнити теги з однаковими іменами

Коли один цикл вкладений в інший, то дуже часто у нас є теги з однаковими іменами. Наприклад:

<BOUCLE_sections(RUBRIQUES){id_rubrique}>
     <BOUCLE_articles(ARTICLES){id_rubrique}>
         #TITRE
     </BOUCLE_articles>
</BOUCLE_sections>

В циклі (_sections) можна вивести назву рубрики (#TITRE), а в циклі (_articles) - назву статті (теж #TITRE). У даному прикладі виведуться назви статей, бо тег знаходиться в циклі (_articles).

Якщо необхідно у внутрішньому циклі використовувати тег з зовнішнього циклу, то синтаксис буде виглядати наступним чином: #n:TAG где n - назва циклу (нижнє підкреслення теж частина назви). Приклад:

<BOUCLE_sections(RUBRIQUES){id_rubrique}>
     <BOUCLE_articles(ARTICLES){id_rubrique}>
         #_sections:TITRE : #TITRE
     </BOUCLE_articles>
</BOUCLE_sections>

відобразить назву рубрики перед назвою статті.

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

<BOUCLE_sections(RUBRIQUES){id_rubrique}>
         #TITRE
</BOUCLE_sections>

 <BOUCLE_articles(ARTICLES){id_rubrique}>
         #_sections:TITRE : #TITRE
 </BOUCLE_articles>

значення #_sections:TITRE в циклі _articles не виведеться, оскільки _section не є зовнішнім по відношенню до _articles.

Фільтри. Змінюємо значення тега до його відображення на сторінці

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

Фільтри - це спосіб змінити інформацію, яка зберігається в базі даних і виводиться за допомогою тегу, безпосередньо перед генерацією сторінки. У SPIP вже є фільтри, які забезпечують основні операціі. Назва фільтра (або фільтрів) пишеться після імені тегу:

[ код до (#TAG|фільтр1|фільтр2|...|фільтрn) код після ]

Фільтри виконуються послідовно, зліва направо.

Примітка: Будь-який фільтр - це PHP функція, аргументом якої є значення тега. Таким чином можна використовувати вбудовані в PHP функції для роботи з тегами.

-  Увага: фільтри не можна використовувати з динамічними тегами.

Приклади деяких фільтрів:

-  majuscules виводить текст великими літерами, наприклад:

[(#TITRE|majuscules)]

-  justifier вирівнює текст по ширині (подібно до <p align=justify>), приклад:

[(#TEXTE|justifier)]

Більш детальна інформація щодо фільтрів є в цій статті.

Вимикаємо вбудовану обробку тегів SPIPом

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

У деяких випадках виникає необхідність вивести інформацію без цієї обробки, саме в тому вигляді, в якому вона зберігається в базі даних. Для цього досить додати зірочку (*) відразу після імені тега, таким чином:

[ код до (#TAG*|фільтр1|фільтр2|...|фільтрn) код після ]

(докладна інформація про #TAG* і #TAG**)

Теги з параметрами

Починаючи з версії [SPIP 1.8] окремі теги [1] використовуються з параметрами. Список параметрів передається між фігурними дужками «{» і «}», розділяються параметри комою. Наприклад: #ENV{lang,fr}.

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

Примітки

[1#ENV і #EXPOSER

Автор olly Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands, òc lengadocian, русский, українська