La situazione è questa: nello stesso sito la presentazione degli articoli in rubriche diverse deve essere differente:
- in alcune rubriche gli articoli sono pubblicati uno dietro l’altro. Si vuole quindi presentarli in ordine cronologico, con i più recenti in cima all’elenco e i più dattati alla fine dell’elenco;
- in altre rubriche si vuole "forzare" la visualizzazione degli articoli numerandoli ("1. Il primo articolo", "2. Il secondo articolo"...); sul sito pubblico si vuole presentarli seguendo questo ordine indicato dalla numerazione.
Spieghiamo ora un metodo per ottenere questo effetto.
Siamo all’interno di un ciclo di rubrica (per esempio, la pagina "rubrique.html"):
<BOUCLE_rubrica_principale(RUBRIQUES){id_rubrique}>
...
</BOUCLE_rubrica_principale>
All’interno di questo ciclo noi effettuiamo il test seguente: in questa rubrica è presente almeno un articolo il cui titolo comincia con un numero seguito da un punto?
<BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}>
C'è un articolo numerato in questa rubrica.
</BOUCLE_test_numero>
Non c'è nessun articolo numerato.
<//B_test_numero>
In questo codice il criterio interessante è:
{titre==^[0-9]+\.}
Si tratta, infatti, di una selezione sul titolo (titre
) in base a una espressione regolare ("==
" rappresenta una selezione secondo un’espressione regolare) la cui sintassi è: all’inizio del titolo (titre
) ("^
" indica l’inizio della stringa da verificare), c’è uno o più ("+
" indica "almeno uno dei caratteri precedenti") caratteri compresi tra 0 e 9 ("[0-9]
" significa "caratteri compresi tra 0 e 9 inclusi"), seguito dal carattere "punto" ("\.
").
Osserviamo che esso seleziona solo un articolo così numerato ({0,1}
); in questa maniera, l’interno del ciclo viene effettuato una sola volta. Inoltre, è sufficiente che sia presente un solo articolo numerato per provocare la visualizzazione di un elenco per ordine "numerato".
Pertanto questo ciclo mostra "C’è un articolo numerato in questa rubrica." se nella rubrica c’è almeno un articolo il cui titolo è preceduto da un numero, e "Non c’è nessun articolo numerato." in caso contrario.
Ora, al posto di queste frasi dobbiamo solo inserire i cicli di visualizzazione degli articoli secondo l’ordine di presentazione desiderato:
<BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}>
<BOUCLE_ordine_numeri(ARTICLES){id_rubrique}{par num titre}>
<li> [(#TITRE|supprimer_numero)]
</BOUCLE_ordine_numeri>
</BOUCLE_test_numero>
<BOUCLE_ordine_data(ARTICLES){id_rubrique}{par date}{inverse}>
<li> #TITRE
</BOUCLE_ordine_data>
<//B_test_numero>