El criterio doublons : su mecánica y su utilización avanzada

El critério {doublons} una vez descubierto se convierte rápidamente en una herramienta indispensable para tus esqueletos. Permite una clasificación muy interesante, pero su uso no es evidente con la primera lectura de la documentación en « spip.net ».
une fois découvert devient rapidement indispensable à vos squelettes. Il permet des tris très intéressants mais son emploi n’est pas immédiatement perceptible à la première lecture de la documentation de « spip.net ».

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 ?

Notes

[2Atención, no confundas el criterio « unique » y el filtro « unique »

[3Esto es el esqueleto de SPIP que por defecto se encuentran en la carpeta /dist. Recuerda : no debes tocar estos archivos sino guardar los tuyos en una carpeta /squelettes al mismo nivel que /dist, es decir, en la raíz del sitio.

Traducido por Martín Gaitán para la comunidad Spip en español.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom