La situación es la siguiente: en un mismo sitio la presentación de artículos en diferentes secciones debe estar diferenciada:
- en algunas secciones, los artículos son publicados los unos tras los otros y se quiere que se presenten por orden cronológico: los más recientes al principio de la lista, los más antiguos al final de la lista;
- en otras secciones se quiere "forzar" la publicación de los artículos numerándolos (« 1. El primer artículo », « 2. El segundo artículo »...) ; en el sitio público se les quiere presentar según este orden indicado por la numeración.
He aquí un método para realizar este efecto:
Estamos en el interior de un bucle de sección (por ejemplo la página « rubrique.html ») :
<BOUCLE_rubrique_principale(RUBRIQUES){id_rubrique}>
...
</BOUCLE_rubrique_principale>
En el interior de este bucle vamos a efectuar el test siguiente: ¿existe en esta sección al menos un artículo cuyo título empiece por un número seguido por un punto?
<BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}>
Existe un artículo numerado en esta sección.
</BOUCLE_test_numero>
No hay ningún artículo numerado.
<//B_test_numero>
El criterio interesante aquí es:
{titre==^[0-9]+\.}
Se trata de una selección del título según una expresión regular(« == » indica una selección según una expresión regular) cuya sintaxis es: al principio del título (« ^ » indica el principio de la cadena testada), hay uno o varios (« + » indica « al menos uno de los caracteres precedentes ») caracteres comprendidos entre 0 y 9 (« [0-9]
» significa « caracteres comprendidos entre 0 y 9 incluidos »), seguidos del carácter « punto » (« \. »).
Notar finalmente que sólo se selecciona un artículo así numerado ({0,1}
); de esta manera el interior del bucle solo será efectuado una sola vez. Por otro lado basta que exista un solo artículo numerado para provocar la publicación de una lista por orden « numerado ».
Este bucle muestra también « Existe un artículo numerado en esta sección. » si existe al menos un artículo cuyo título es precedido por un número en la sección, y « No hay ningún artículo numerado. » si no existe.
Es suficiente ahora instalar en lugar de estas menciones bucles que publiquen los artículos según el orden de presentación deseado:
<BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}>
<BOUCLE_ordre_numeros(ARTICLES){id_rubrique}{par num titre}>
<li> [(#TITRE|supprimer_numero)]
</BOUCLE_ordre_numeros>
</BOUCLE_test_numero>
<BOUCLE_ordre_date(ARTICLES){id_rubrique}{par date}{inverse}>
<li> #TITRE
</BOUCLE_ordre_date>
<//B_test_numero>