Цикл в циклі

Виводимо інформацію з декількох рівнів

Будемо відображати елементи, одержувані з різних місць, на одній сторінці.

Ми вже знаємо, як сформувати список статей з рубрики. Тепер ми збираємося відобразити на тій самій сторінці інформацію про цю рубрику: її назву, пояснювальний текст і таке інше.

Спробуйте самі!

Ось можливе рішення:

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<h1>#TITRE</h1>

<BOUCLE_article(ARTICLES){id_rubrique}{par date}{inverse}{0,10}>
<a href="#URL_ARTICLE">#TITRE</a><br/>
</BOUCLE_article>

[(#TEXTE|justifier)]
</BOUCLE_rubrique>

Викликаємо сторінку: http://yoursite.net/spip.php?page=tutorial&id_rubrique=1. Що відбувається?

Наш цикл ARTICLES викликається всередині циклу RUBRIQUES, який відповідає за виведення всієї інформації про рубрику. Контекст циклу ARTICLES задається циклом RUBRIQUES, який і визначає значення id_rubrique. Сам цикл RUBRIQUES отримує це значення з URL в адресному рядку браузера, де ми ввели http://yoursite.net/spip.php?page=tutorial&id_rubrique=1, отже id_rubrique=1. Тобто ми з рівня ARTICLES зробили запит про значення id_rubrique. На цьому рівні нічого не змінилося.

Але цикл RUBRIQUES дозволяє SPIP вибрати значення полів для рубрики, про яку ми зробили запит, таким чином ми можемо відобразити назву рубрики #TITRE та її пояснювальний текст #TEXTE. Зазначимо, що значення тегу #TEXTE залежить від того, в якому циклі він розташований. Зараз він в циклі RUBRIQUES і тому виводить текст рубрики, а якби він містився в циклі ARTICLES, то виводив би текст статті. Функція відображення в SPIP гарантує, що використання #TEXTE для статей не викличе конфлікту із значенням цього тегу для зовнішнього циклу.

Зазначимо ще: ми використали перший фільтр для тега #TEXTE, а саме |justifier. Цей фільтр встановлює вирівнювання тексту по ширині, додаючи style = "align: justify" в теги <p>.

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

Traductions : عربي, català, corsu, Deutsch, English, Español, français, italiano, Nederlands, polski, Português, русский, slovenčina, Türkçe, українська