{tri} en #TRI in lussen

SPIP 3.0 introduceerde een voorwaarde en een baken om gemakkelijk sorteerbare lijsten te maken.

  • Apparu en : SPIP 3.0

De voorwaarde {tri} vereenvoudigt het maken van sorteerbare lijsten net zoals {pagination} de indeling in pagina’s mogelijk maakt.

In een eenvoudige lus bepaalt de voorwaarde de sorteervolgorde door aan te geven op welk veld moet worden gesorteerd:

<BOUCLE_art(ARTICLES){tri titre}>
</BOUCLE_art>

Tot zover is er geen verschil ten opzichte vande voorwaarde {par}. Maar {tri} kan ook worden gekoppeld aan een baken #TRI waarmee een link kan worden gemaakt om de sorteervolgorde te beïnvloeden. Als eerste argument neemt het baken #TRI het sorteerveld en als tweede argument de titel van de klikbare link om dit veld voor de sortering te gebruiken:

<B_art>
<p>#TRI{titre,'Sorteer op titel'} | #TRI{date,'Sorteer op datum'} | 
#TRI{date_redac,'Sorteer op redactiedatum'}</p>
<BOUCLE_art(ARTICLES){tri titre}>
</BOUCLE_art>

De gebruiker zal nu een menu zien waarmee hij de sorteervolgorde van de lus kan aanpassen. Daarin wordt de actuele volgorde in het vet weergegeven, terwijl op de andere geklikt kan worden.

Is de lus in een ajax routine opgenomen, dan moet deze ajax class als derde argument aan het baken #TRI worden toegevoegd zodat de link voor een gedeeltelijke verversing van de pagina zullen zorgen:

<B_art>
<p>#TRI{titre,'Sorteer op titel',ajax} | #TRI{date,'Sorteer op datum',ajax} | 
#TRI{date_redac,'Sorteer op redactiedatum',ajax}</p>
<BOUCLE_art(ARTICLES){tri titre}>
</BOUCLE_art>

De voorwaarde {tri} kan ook de sorteerrichting als tweede argument meekrijgen. Je geeft daarvoor direct of 1 aan voor een oplopende volgorde, en inverse of -1 voor een aflopende:

<B_art>
<p>#TRI{titre,'Sorteer op titel'} | #TRI{date,'Sorteer op datum'} | 
#TRI{date_redac,'Sorteer op redactiedatum'}</p>
<BOUCLE_art(ARTICLES){tri date,-1}>
</BOUCLE_art>

Deze sorteerrichting kan ook als keuze worden aangeboden. Je doet dat met > voor een oplopende en < voor een aflopende volgorde in het eerste argument van het baken #TRI :

<B_art>
<p>#TRI{>,'Sorteer oplopend',ajax} | #TRI{<,'Sorteer aflopend',ajax} | #TRI{titre,'Sorteer op titel',ajax} | #TRI{date,'Sorteer op datum',ajax} | 
#TRI{date_redac,'Sorteer op redactiedatum',ajax}</p>
<BOUCLE_art(ARTICLES){tri titre}>
</BOUCLE_art>

In plaats van het systematisch gebruik van sorteerknoppen, kan het ook anders: automatisch sorteren op de kolom. Dat doe je door als tweede argument een tabel door te geven met de standaardrichting voor iedere kolom:

#SET{std_volgorde,#ARRAY{
titre,1,
date,-1,
date_redac,-1
}}
<B_art>
<p>#TRI{titre,'Sorteer op titel',ajax} | #TRI{date,'Sorteer op datum',ajax} | 
#TRI{date_redac,'Sorteer op redactiedatum',ajax}</p>
<BOUCLE_art(ARTICLES){tri titre,#GET{std_volgorde}}>
</BOUCLE_art>

Zo zal bij sortering op titel een oplopende volgorde (A tot Z) worden gebruikt, maar bij de andere twee opties is dat aflopend (jong naar oud).

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

Vertalingen: English, français, Nederlands