Цикли і теги

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

Цикли

Цикл - це базове поняття мови SPIP. Він використовується для відбору елементів (статей, розділів), які необхідно вивести на сторінках шаблону.

Логіка роботи циклу

Зазвичай, базу даних розглядають як список елементів: список статей, список розділів, список користувачів (авторів) і т.д. Що б «побудувати» сайт нам треба відібрати і вивести необхідні елементи з бази даних. Найпоширеніші завдання при створенні сайту:
-  необхідно отримати один елемент зі списку, наприклад, показати конкретну статтю;
-  часто нам необхідно отримати не один елемент, а кілька елементів зі списку, наприклад, на сторінці рубрики ми можемо вивести усі статті, які знаходяться в цій рубриці;
-  менш очевидна задача виникає, коли в списку немає елементів, наприклад, в рубриці немає жодної статті. SPIP повинен вміти обробляти такі ситуації - коли немає елементів, які треба показати. Наприклад, нам необхідно зробити шаблон, який виводить всі підрозділи даної рубрики; що необхідно вивести, якщо у нас немає підрозділів?

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

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

Аналогія з PHP/MySQL програмуванням

Той, хто вже має досвід програмування запитів до бази даних MySQL з PHP, знає, що запит обробляється в два етапи:
-  побудова синтаксису запиту (який є способом сказати «Я хочу список статей з «цієї» рубрики...»);
-  аналіз і відображення результатів за допомогою циклу.

У SPIP обидві дії виконуються за допомогою циклів.

Теги SPIP

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

Тим не менше, кожен елемент таких списків складається з багатьох більш детальних елементів, наприклад, стаття складається з заголовка, топ-заголовка, підзаголовка, вступного тексту, основного тексту, постскриптуму і т.д. Тому є багато конкретних тегів SPIP, щоб ми могли вказати, де розмістити елементи: «вивести назву тут», «помістити текст тут», і так далі.

Теги всередині циклів

Давайте проаналізуємо за допомогою класичного прикладу загальну концепцію циклу і його теги (попередження: це не мовою SPIP, це опис логіки побудови):

ЦИКЛ (BOUCLE у SPIP): показати список статей у цій рубриці
  • показати тут заголовок статті
  • показати підзаголовок
  • показати текст
кінець циклу


Цей цикл, коли його аналізуватиме SPIP, може дати три різні результати.

— Нема жодної статті у цій рубриці.

У цьому випадку, очевидно, жоден з елементів «показати це... (заголовок, підзаголовок, текст)» не використовується. Знову ж таки, якщо ми таке передбачимо, ми можемо показати повідомлення, наприклад: «Там немає статей».

— Існує єдина стаття у цій рубриці.

У цьому випадку сторінка HTML будується на моделі циклу:

  • Заголовок статті
  • Підзаголовок
  • Текст статті


— Є багато статей у цій рубриці.

Опис форматування сторінки («розмістити тут...») буде застосовуватися послідовно для кожної з статей. Результат буде такий:

  • Заголовок статті 1
  • Підзаголовок статті 1
  • Текст статті 1
  • Заголовок статті 2
  • Підзаголовок статті 2
  • Текст статті 2
    ...
  • Заголовок of the last article
  • Підзаголовок of the last article
  • Текст of the last article


Дане керівництво продовжується з наступною структурою:
-  Цикли та їх синтаксис;
-  Теги та їх синтаксис;
-  потім сторінки для кожного типу циклу, в тому числі список тегів, які доступні для кожного з них (див. розділ Loops and Tags Reference Manual).

Автор olly Publié le : Mis à jour : 07/08/15

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