Lussen en lussen

werken met meerdere niveaus

Op één pagina gegevens uit meerdere omgevingen weergeven.

We weten al hoe we een lijst van titels in een rubriek kunnen maken. Nu gaan we op dezelfde bladzijde elementen van de rubriek zelf weergeven: de naam, de omschrijving, enz.

We gaan het proberen!

Dit is alvast één oplossing:

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

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

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

Wanneer we dit in ons skelet zetten en de pagina oproepen met http://mijnsite.nl/spip.php?page=tutor&id_rubrique=1.
Wat is er precies gebeurd?

Onze ARTICLES lus bevindt zich nu binnen een RUBRIQUES lus. De context voor de lus ARTICLES is de id_rubrique die door de lus RUBRIQUES wordt afgegeven, die op zijn beurt zijn eigen context kreeg vanuit de URL (id_rubrique=1). Dus in de lus ARTICLES zitten we in de goede rubriek, namelijk die gevraagde id_rubrique. Dus eigenlijk is er nog niet veel veranderd.

Maar door gebruik te maken van de lus RUBRIQUES is SPIP in staat gebruik te maken van de gegevens van die rubriek: we kunnen dus (bovenaan) de titel weergeven: #TITRE (de titel van de rubriek), alsmede de #TEXTE van deze rubriek. Je ziet hier dat #TITRE en #TEXTE hier op de gegevens van de rubriek slaat, terwijl dezelfde #TITRE en #TEXTE binnen de lus ARTICLES betrekking hebben op het artikel. De functionaliteit van SPIP zorgt ervoor dat #TITRE en #TEXTE uitsluitend van toepassing zijn op de binnenste lus waarin ze worden aangeroepen.

We maken ook kennis met een volgend filter: |justifier op het veld #TEXTE. Dit filter doet aanpassingen op de inhoud van de tekst voordat deze op de defintieve pagina wordt geplaatst: ze wordt uitgelijnd.

PS Later zullen we je uitleggen waarom de regel [(#TEXTE|justifier)] tussen dubbele (rechthoekige en ronde) haakjes staat!

Auteur Hanjo Gepubliceerd op: Aangepast: 21/03/23

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