Criterios comunes a todos los bucles

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

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. 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.

Clasificar siguiendo varios criterios 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).

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.

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.

-  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.

Se puede utilizar la notación {xxx != yyy} y {xxx !== yyy, el símbolo ! corresponde a la negación (operador lógico NOT).

<BOUCLE_art(ARTICLES){id_secteur != 2}>

selecciona los artículos que no pertenecen al sector número 2.

<BOUCLE_art(ARTICLES){titre!==^[aA]}>

selecciona los artículos cuyo título no comienza por «a» o por «A».

Publicación en función de la fecha

Para facilitar la utilización de comparaciones de fechas, se agregaron los siguientes criterios de "edad" de un artículo:
-  age y age_redac corresponden respectivamente à la antigüedad de la publicación y de la primera publicación de un artículo, expresada en días:
{age<30} selecciona los elementos publicados hace menos de un mes;
-  los criterios mois, mois_redac, annee, annee_redac permiten comparar con valores fijos respectivamente del mes y del año. (por ejemplo, {annee<=2000} para los elementos publicados antes de fin del año 2000).

Se pueden combinar varios criterios para efectuar selecciones sumamente detalladas. Por ejemplo:

<BOUCLE_art(ARTICLES){id_secteur=2}{id_rubrique!=3}{age<30}>

cuelga los artículos del sector 2, excepto los que están en la sección 3, y publicados desde hace menos de 30 días.

Un truco astuto. El criterio age es muy práctico para seleccionar los artículos o breves cuya fecha se sitúa «en el futuro», con valores negativos (a condición de haber seleccionado, en la Configuración precisa del sitio, la opción «Publicar los artículos con fecha posterior»). Por ejemplo, este criterio permite resaltar eventos futuros: {age<0} selecciona los artículos o las breves cuya fecha está situada en el futuro («después» de hoy).

Edad respecto a una fecha dada. El criterio edad (age) se calcula en relación a la fecha del día de hoy (es decir que {age<30} corresponde a los artículos publicados desde hace un mes respecto a la fecha de hoy). El criterio de ’edad relativa’, <b>age_relatif</b>, compara la fecha de un artículo o de una breve a una fecha «corriente»; por ejemplo, dentro de un bucle ARTICLES, ya se conoce una fecha para cada resultado del bucle, respecto a la cual se hace la selección (y ya no respecto a la fecha de hoy).

Por ejemplo:

<BOUCLE_articulo_principal(ARTICLES){id_article}>

	<h1>#TITRE</h1>
	
	<BOUCLE_siguiente(ARTICLES){id_rubrique}{age_relatif<=0}{exclus}{par date}{0,1}>
	Artículo siguiente: #TITRE
	</BOUCLE_siguiente>

</BOUCLE_articulo_principal>

El BOUCLE_siguiente extrae los artículos de la misma sección que el «articulo_principal», cuya fecha de publicación es anterior a la de éste, los ordena por fecha, y muestraa un solo artículo (ver más adelante la explicación del criterio {0,1}): es decir que se obtiene el artículo que sigue cronológicamente al artículo principal.

Hay información más amplia sobre la utilización de las fechas en el artículo sobre «La gestión de las fechas».

Mostrar una parte de de los resultados

-   branche limita los resultados — para los bucles que tengan una #ID_RUBRIQUE — a la rama (branche) actual (la sección actual y sus subsecciones). Por ejemplo:
<BOUCLE_articles(ARTICLES) {branche}> devolverá todos los artículos de la sección actual y de sus subsecciones,
<BOUCLE_articles(ARTICLES) {!branche}> devolverá todos los artículos que no estén en la sección actual o en sus subsecciones,

Se puede utilizar el criterio {branche?} opcional para aplicarlo sólo si hay una sección seleccionada en el contexto (un bucle que lo incluye o la url contiene una id_rubrique). Por ejemplo:
<BOUCLE_articles(ARTICLES) {branche?}> devolverá todos los artículos de la sección actual y de sus subsecciones si hay una id_rubrique en el contexto; si no, todos los artículos del sitio.


-  {doublons} o {unique} (estos dos criterios son rigurosamente idénticos) permite no mostrar resultados que ya aparecieron en otros bucles del mismo esqueleto que también utilizan este criterio.


-  {doublons xxxx}, se pueden definir varios juegos de criterios {doublons} independientes. Los bucles que llevan, por ejemplo, un criterio {doublons rojo} no tendrán ninguna incidencia en aquellos que llevan {doublons azul}.

-  {xxxx IN a,b,c,d}, limita los resultados que aparecen a aquellos cuyo criterio xxxx es igual a a, b, c o d. Los resultados se ordenan como se ha indicado (salvo petición explícita de otro criterio de clasificación). Es posible, incluso, seleccionar cadenas de caracteres, por ejemplo con {titre IN 'China', 'Japón'}.

-  {a,b} donde a y b son dos números.
Este criterio permite limitar el número de resultados.
a indica el resultado a partir del cual se empieza la selección (OjO: el primer resultado es el número 0 - cero); b indica el número de resultados que comprende la selección.

Por ejemplo {0,10}muestra los diez primeros resultados; {4,2} muestra dos resultados a partir del quinto (incluido: es decir el quinto y el sexto).

-  {debut_xxx,b} es una variante más elaborada del criterio precedente. Permite hacer empezar la limitación de los resultados utilizando una variable pasada en la dirección URL (esta variable reemplaza el número a que se indicaba inicialmente).
Su funcionamiento es algo complejo, pero afortunadamente no es necesario utilizarlo muy a menudo.

La variable que se pasa en el URL debe empezar por debut_. En su nombre completo debut_xxx, el/la webmestre escoge la segunda parte xxx. De esta manera, para una página cuyo URL es: spip.php?page=petition&id_article=13&debut_signatures=200
con un esqueleto (peticion.html) que contenga, por ejemplo:

<BOUCLE_firmas(SIGNATURES){id_article}{debut_firmas,100}>

obtendremos una lista de 100 firmas a partir de la 201a [OjO]. Y, sin cambiar de esqueleto, con el URL: spip.php?page=petition&id_article=13&debut_signatures=300 obtendremos una lista de 100 firmas a partir de la 301a [OjO].

-  {a,n-b}, es una variante de {a,b} que limita lo que se muestra en función del número de resultados en el bucle. a es el resultado a partir del cual se empiezan a mostrar; b indica el número de resultados que no se deben mostrar al final del bucle.

Por ejemplo, {0,n-10} mostrará todos los resultados del bucle salvo los 10 últimos.

-  {n-a,b} , es la otra cara de {a, n-b}. Se limitan a b los resultados empezando a mostrarlos a partir del ao resultado antes del final del bucle.

Por ejemplo: {n-20,10} mostrará 10 resultados empezando por el 20o resultado antes del final del bucle.

-  {a/b} donde a y b son dos números. Este criterio permite dividir la totalidad de los resultados en b «grupos» de una misma cantidad (excepto eventualmente el último) y mostrar el a-esimo grupo.

Por ejemplo: {1/3} muestra el primer tercio de los resultados. Este criterio es útil principalmente para presentar listas en varias columnas.
Para obtener una presentación en dos columnas, alcanza con crear un primer bucle, dentro de una celda de tabla, con el criterio {1/2} (primera mitad de los resultados), y luego un segundo bucle en la celda siguiente, con el criterio {2/2} (segunda mitad de los resultados).

OjO. La utilización del criterio {doublons} con este criterio es peligrosa. Por ejemplo:

<BOUCLE_primera(ARTICLES){id_rubrique}{1/2}{doublons}>
	<li> #TITRE
</BOUCLE_primera>
<BOUCLE_segunda(ARTICLES){id_rubrique}{2/2}{doublons}>
	<li> #TITRE
</BOUCLE_segunda>

¡no mostrará todos los artículos de la sección!
Imaginemos por ejemplo que haya un total de 20 artículos en nuestra sección. El BOUCLE_primera va a colgar la primer mitad de los artículos, es decir los 10 primeros, y prohibir (a causa de {doublons}) volver a utilizarlos. El BOUCLE_segunda, por su parte, va a recuperar la segunda mitad de los artículos de esta sección que aún no fueron mostrados por el BOUCLE_primera; en consecuencia, la mitad de los 10 artículos siguientes, es decir los 5 últimos artículos de la sección. Y de paso se te «perdieron» 5 artículos por el camino...

Separador de resultados

{"inter"} permite indicar un código HTML (aquí, inter) que será insertado entre los resultados del bucle. Por ejemplo, para separar una lista de autores por una coma, se indicará el criterio {", "}:

<BOUCLE_auteurs(AUTEURS){id_article}{", "}>

Notas

[1"par", en francés, significa "por". Recuerda que el lenguaje de bucles utiliza un vocabulario francés. Al respecto puedes consultar el Léxico SPIP francés - español .

[2sección en la raíz del sitio

[OjOrecordemos que el primer resultado está numerado 0, por lo cual el número 200 representa en realidad la 201a firma

Autor o autora dani Publicado el: Actualizado: 30/08/23

Traducciones: عربي, català, Deutsch, English, Español, français, italiano, Nederlands