El critério {doublons}
una vez descubierto se convierte rápidamente en una herramienta indispensable para su esqueletos. [1]. Su función un poco curiosa, permite una clasificación muy interesante, pero no inmediatamente evidente al leer la documentación en spip.net que nos dice :
El critério {doublons}
o {unique}
[2] (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.
Identicos ? No del todo ! Con las nuevas versiones de SPIP, doublons se ha enriquecido con características adicionales :
— ¿Puedes nombrar tu criterio doublons con lo que coexisten varias exlusiones independientes en un solo código,
— También permite piruetas spiperas con los anti-doublons !
Uso básico : no mostrar elementos que ya se encuentran en la página
Un ejemplo se nos da en el esqueleto sommaire del dist [3]
<BOUCLE_articulos_recientes(ARTICLES) {par date}{inverse} {0,2} {doublons}>
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_articulos_recientes>
<BOUCLE_otros_articulos(ARTICLES) {par date}{inverse} {doublons} >
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_otros_articulos>
Esto lista los artículos del sitio en orden cronológico inverso, Y reserva a los dos últimos artículos publicados un trato especial. Como puede ver, los bucles « _articulos_recientes » y « _otros_articulos » se construyen de la misma manera. Por lógica, deberían devolver el mismo listado.
Gracias al trabajo del criterio « doublons » es que los 2 últimos artículos, ya cubiertos en el primer bucle, no terminan en la lista que se presenta con el bucle « _otros_articulos ».
Otros uso frecuente : excluir elementos
Nuestro gran clásico : excluir en función de una palabra clave
Frecuentemente en las lista de spip los usuarios plantean este tipo de problemas :
"No puedo excluir elementos en función de su palabra clave.
Intento :
<BOUCLE_secciones(RUBRIQUES) {racine} {titre_mot!=invisible}{par num titre, titre}>
pero esto no funciona !"
Y por una buena razón !
Lo que el usuario quiere aquí es seleccionar todos los elementos que no han recibido la palabra clave « invisible ». Pero el criterio {titre_mot != invisible}
indica a la base de datos que debe seleccionar todos los elementos que tienen una palabra clave y diferente a « invisible ».
Y eso lo cambia todo. Por ejemplo, se incluría en el resultado una sección a la que se le ha asignado la palabra clave « artilugio », tan diferente de « invisible » (ok !). Pero si si la sección no está asociada a ninguna palabra clave ¿Aparecerá en el resultado ?
La solución : Utilizar un bucle vacío que selecciona de acuerdo con la palabra clave y otro bucle que devuelve los resultados a través del criterio {doublons}
.
Siguiendo con nuestro ejemplo :
<BOUCLE_excluir(RUBRIQUES) {racine} {titre_mot=invisible}{doublons}>
</BOUCLE_excluir>
Este bucle seleccionara todas las secciones con la palabra clave « invisible » , pero no muestra nada.
<BOUCLE_secciones(RUBRIQUES) {racine}{par num titre, titre} {doublons}>
{lo que se quiere mostrar aqui}
</BOUCLE_secciones>
El segundo bucle se selecciona con el criterio doublons todas las otras secciones y le aplica el tratamiento deseado.
Nombrar los doublons para usar más de uno en el mismo archivo
Objetivo : administrar en una página que muestra enlaces a artículos y comunicados de prensa. La presentación de los dos últimos artículos publicados y las dos últimos comunicados es diferente del resto.
Por ejemplo, aquí nos encontramos con el mismo patrón ya visto con bucles de la DIST. Se trata simplemente de que cohabiten sin conflictos bucles muy próximos. Nombrar los doublons evitará la interferencia entre una clasificación y otra.
<BOUCLE_comunicados_recientes(ARTICLES) {!par date}{id_mot=1} {0,2} {doublons com}>
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_comunicados_recientes>
<BOUCLE_otros_comunicados(ARTICLES) {!par date}{id_mot=1} {doublons com} >
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_otros_comunicados>
<BOUCLE_articulos_recientes(ARTICLES) {par date}{inverse} {0,2} {doublons}>
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_articulos_recientes>
<BOUCLE_otros_articulos(ARTICLES) {par date}{inverse} {doublons} >
Elementos a mostrar, por ejemplo #TITRE
</BOUCLE_otros_articulos>
En general, nombrar los doublons es una buena práctica para evitar no sólo problemas actuales sino también futuros (esqueletos que están cambiando). También es un elemento que aporta claridad a su código.
Dentro de un uso avanzado, puede tratar de usar etiquetas de SPIP. Por ejemplo : {doublons #TITRE}
o bien {doublons #_mibuclesuperior:TITRE}
o incluso {doublons (doublons #_mibuclesuperior:TITRE|supprimer_numero)}
.
Uso avanzado : anti-doublons o cómo construir una pila de datos que deban tratarse
Mecánica del los anti-doublons
Aquí « doublosn » reunirá a los resultados de varios bucles utilizando diferentes criterios y « !doublons » para aplicar a esa pila de elementos el tratamiento deseado.
El patrón de uso es la siguiente :
Se selecciona una primera serie de artículos (que no muestra nada) ...
<BOUCLE0(ARTICLES){id_mot=2}{doublons A}></BOUCLE0>
... a continuación, una segunda serie de artículos (que tampoco muestra nada )....
<BOUCLE1(ARTICLES){id_auteur=1}{doublons A}></BOUCLE1>
... una vez hecha la pila de los elementos, se mostrarán todos juntos a través del ant-idoublons
<BOUCLE2(ARTICLES){par date}{!doublons A}>#TITRE<br></BOUCLE2>
Un ejemplo de anti-doublons
Objetivo :
hacer un bucle que recupera los artículos de todas las secciones excepto los de la sección 2 y 3, y en lo que respecta a los artículos de la sección 4, sólo los que tengan menos de 60 días.
La solución :
tenemos un primer bucle que recuperará todos los artículos excepto los de la sección 2 y 3, pero también excluyendo los de la sección 4 ...
<BOUCLE0(ARTICLES) {id_rubrique !IN 2,3,4}{doublons tri1}></BOUCLE0>
... a la que le dedicamos el segundo bucle ...
<BOUCLE1(ARTICLES) {id_rubrique=4}{age<60}{doublons tri1}></BOUCLE1>
... Y es en un bucle final que se visualiza a través del anti-doublons los artículos seleccionados.
<BOUCLE2(ARTICLES){par date}{!doublons tri1}>#TITRE<br></BOUCLE2>
Genial, ¿verdad ?
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |