Ciertos criterios se aplican a (casi) todos los tipos de bucles. Son criterios destinados a limitar el número de resultados mostrados o a indicar el orden de presentación. Se puede, sin dificultad alguna, combinar varios de estos criterios de selección.
Clasificar los resultados
{par criterio_de_clasificación} indica el orden de presentación de los resultados [1]. Este criterio corresponde a una de las balizas extraídas de la base de datos para cada tipo de bucle. Por ejemplo, se pueden clasificar los artículos por fecha ({par date}
), por fecha de redacción ({par date_redac}
) o por el título ({par titre}
.
OjO: si bien las balizas se escriben en mayúsculas, los criterios de clasificación son en minúsculas.
Caso particular: {par hasard} ("al azar") permite obtener una lista presentada en orden aleatorio.
Invertir la clasificación. Adicionalmente, {inverse} hace que se muestre una clasificación en orden invertido. Por ejemplo, con el criterio {par date}
se empieza por los artículos más antiguos, mientras que con {par date}{inverse}
la lista empieza por los más recientes.
Clasificar por número. (SPIP 1.3) Cuando el criterio de clasificación es un elemento de texto (por ejemplo el título — titre), la clasificación se hace por orden alfabético. Sin embargo, para imponer cierto orden de presentación, se puede indicar un número delante del título, por ejemplo: «1. Mi primer artículo», «2. El segundo artículo», «3. Tercero...», etc.
Si utilizáramos un criterio habitual par titre, la clasificación alfabética de estos elementos sería la serie: «1, 10, 11,..., 2, 3...». Para restablecer la clasificación numérica se puede utilizar el criterio:
{par num criterio}
Ejemplos:
<BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}>
cuelga los artículos de una sección clasificados por orden cronológico invertido (los más recientes al principio, los más antiguos al final);
<BOUCLE_articles(ARTICLES){id_rubrique}{par titre}>
los muestra por orden alfabético de su título; y
<BOUCLE_articles(ARTICLES){id_rubrique}{par num titre}>
los muestra ordenados por el número de su título. (OjO: la opción {par num titre}
no funciona con las versiones antiguas de MySQL, anteriores a la 3.23).
Clasificar siguiendo varios criterios A partir de [SPIP 1.8], se puede clasificar con varios criterios: {par criterio1, criterio2}. Así se indican los órdenes consecutivos de clasificación. Los resultados se ordenan primero siguiendo el criterio1, y después el criterio2 para los resultados que tengan el mismo criterio1. Se pueden especificar tantos criterios como sea necesario.
Por ejemplo {par date, titre}
ordenará los resultados por date (fecha) y luego los resultados que tengan la misma date se ordenarán por titre (título).
Con [SPIP 1.8.2] se pueden especificar varios criterios {par ...} en un bucle para obtener el mismo resultado. Por ejemplo: {par date} {par titre}
es equivalente al ejemplo precedente.
Atención: Cuando se utilizan varios criterios de ordenación, el criterio {inverse} se aplica sólo al criterio de clasificación situado justo antes.Esto es debido a que [SPIP 1.8.2] introduce la notación {!par ...} que invierte un criterio de ordenación en particular. Por ejemplo:
{!par date} {par num titre}
ordena por fecha (date) decreciente, y después por número creciente de título (titre) para los resultados que tengan la misma fecha.
Comparaciones, igualdades
{criterio < valor} Comparación con un valor fijo (se pueden utilizar «>», «<», «=», «>=», «<=». Todos los criterios de clasificación (tal y como se extraen de la base de datos) pueden utilizarse igualmente para limitar el número de resultados.
El valor a la derecha del operador puede ser:
- Un valor constante fijado en el esqueleto. Por ejemplo:
<BOUCLE_art(ARTICLES){id_article=5}>
muestra únicamente el artículo cuyo número es 5. Es útil, por ejemplo, para resaltar en la portada un artículo determinado.
<BOUCLE_art(ARTICLES){id_secteur=2}>
muestra los artículos del sector [2] número 2.
- A partir de [SPIP 1.8], una baliza disponible en el contexto del bucle. Por ejemplo:
<BOUCLE_art(ARTICLES){id_article=5}>
<BOUCLE_titre(ARTICLES) {titre=#TITRE}>
...
</BOUCLE_titre>
</BOUCLE_art>
permite encontrar todos los artículos que tengan el mismo título que el artículo 5.
Cuidado: No se puede utilizar nada más que una simple baliza. No se permite filtrarla o añadir código opcional.Especialmente, si se quiere utilizar la baliza #ENV — o cualquier otra baliza que admita parámetros —, se debe utilizar la notación:
{titre = #ENV{titre}}
y no:{titre = [(#ENV{titre})]}
.
Expresiones regulares.
Sumamente potente (pero claramente más complejo de manejar). el símbolo de comparación «==» introduce una comparación con una expresión regular. Por ejemplo:
<BOUCLE_art(ARTICLES){titre==^[aA]}>
selecciona los artículos cuyo título empieza por «a» o por «A».
<BOUCLE_art(ARTICLES){id_rubrique==(4|9|20)}>
selecciona los artículos que se encuentran, ya sea en la sección número 4, ya sea en la número 9, o en la número 20.
Más allá de estos ejemplos, las "expresiones regulares" (“regex”, para los íntimos, pronunciar: reguex) son una técnica común a varios sistemas y lenguajes informáticos (shell unix, perl, C, php, ...) que permite analizar y hacer operaciones complejas sobre textos.
Una documentación completa sobre las regex estaría fuera del objetivo de la presente documentación de SPIP. Si necesitas, hay extensa documentación al respecto en la web, y no dudes en poner un emilio en las listas SPIP para ayudarte a construir un criterio de selección.
Negación.
Desde (SPIP 1.2) se puede utilizar la notación {xxx != yyy} y xxx !== yyy