Il criterio doublons : la sua meccanica ed il suo utilizzo avanzato

Il criterio {doublons} una volta scoperto diventa rapidamente indispensabile ai vostri modelli. Permette selezioni molto interessanti ma la sua utilità nonè immediatamente comprensibile a una prima lettura della documentazione di « spip.net ».

Il criterio {doublons} una volta scoperto diventa rapidamente indispensabile ai vostri modelli [1]. Con un po’ di curiosità è possibile realizzare effetti e selezioni molto interessanti, ma che non sono evidenti dalla lettura della documentazione di base su Spip.net, da cui leggiamo :

Il criterio {doublons} o {unique} [2] : permette di inibire la visualizzazione dei risultati già pubblicati in altre circuiti che utilizzano questo criterio. Questi due criteri sono rigorosamente identici.

Identici ? Non completamente ! Nel corso delle versioni di SPIP, doublons s’est arricchito di ulteriori possibilità :
-  si possono assegnare nomi ai criteri doublons, e farne così coesistere molti in uno stesso codice,
-  doublons permette la realizzazine di piroette tecniche attraverso l’utilizza dell’anti-doublons :  !doublons

Utilizzo di base : escludere elementi già trattati nella pagina

Un esempio ci è dato nel modello sommaire della dist [3]

<BOUCLE_articles_recents(ARTICLES) {par date}{inverse} {0,2} {doublons}>
éléments à afficher, par exemple #TITRE
</BOUCLE_articles_recents>
<BOUCLE_autres_articles(ARTICLES) {par date}{inverse} {doublons} >
éléments à afficher, par exemple #TITRE
</BOUCLE_articles>

Si tratta di elencare gli articoli del sito per ordine cronologico invertito E di riservare un trattamento particolare agli ultimi due articoli pubblicati. Come vedete, i circuiti « _ articles_recents » e « _ autres_articles » sono costruite nello stesso modo. Dunque, secondo logica, devono restituire lo stesso elenco d’articles.

E’ grazie al lavoro del criterio « doublons » che i 2 articoli più recenti, già trattati nel primo circuito, non si troveranno nell’elenco pubblicato col circuito « _ autres_articles ».

Altro utilizzo corrente : escludere alcuni elementi

Un grande classico : escludere alcuni element che presentano una parola chiave.

Regolarmente sulla web-list spip-users si pone questo tipo di problema :

« Non riesco ad escludere elementi in funzione della loro parola chiave : ho provato »

<BOUCLE_rubriques(RUBRIQUES) {racine} {titre_mot!=invisible}{par num titre, titre}>

ma non funziona"

E’ a causa del punto esclamativo  !

L’utente qui desidera scegliere tutte le rubriche che non hanno la parola chiave « invisible ». Ma, il messaggio mandato al database con {titre_mot != invisible}, è che deve scegliere tutte le rubriche che HANNO una parola chiave E che la suddetta parola chiave sia diversa da « invisible ».

Questo cambia tutto. Infatti nel risultato apparirà ad esempio una rubrica alla quale è stata assegnata la parola chiave « bidule », che effettivamente risulta diversa da « invisible » (ok !), anche se la rubrica è legata anche alla parola chiave « invisible » (arg !) e, non appariranno rubriche a cui non è stata assegnata nessuna parola chiave ( l’opposto del risultato sperato !). [4]

La soluzione : inserire un circuito vuoto che sceglie secondo la parola chiave e un’altro circuito che cerca i risultati utilizzando il criterio
{doublons}.

Riprendendo il nostro esempio otteniamo :

<BOUCLE_exclure(RUBRIQUES) {racine} {titre_mot=invisible}{doublons}>
</BOUCLE_exclure>

Questo circuito sceglie tutte le rubriche che hanno la parola chiave « invisible » , ma non stampa nulla.

<BOUCLE_rubriques(RUBRIQUES) {racine}{par num titre, titre} {doublons}>
{le traitement  à effectuer ici}
</BOUCLE_rubriques>

Questo secondo circuito sceglierà tutte le altre rubriche, grazie al criterio doublons ed applicherà loro il trattamento scelto.

Dare un nome ai doublons per utilizzarne molti nello stesso file

Obiettivo : gestire su una pagina d’accoglienza la pubblicazione di link ad articoli, e stringhe degli annunci(le brevi). La presentazione degli ultimi due articoli pubblicati e degli ultimi due annunci è diversa dagli altri.

Per esempio, ritroviamo lo stesso schema già visto con i circuiti della DIST. Si tratta semplicemente di fare coabitare senza conflitto alcuni circuiti molto simili. Dare un nome ai doublons eviterà che le selezioni dell’uno interferiscano con l’altro.

<BOUCLE_communiques_recents(ARTICLES) {!par date}{id_mot=1} {0,2} {doublons com}>
éléments à afficher, par exemple #TITRE
</BOUCLE_communiques_recents>
<BOUCLE_autres_communiques(ARTICLES) {!par date}{id_mot=1} {doublons com} >
éléments à afficher, par exemple #TITRE
</BOUCLE_autres_communiques>

<BOUCLE_articles_recents(ARTICLES) {!par date} {0,2} {doublons art}>
éléments à afficher, par exemple #TITRE
</BOUCLE_articles_recents>
<BOUCLE_autres_articles(ARTICLES) {!par date} {doublons art} >
éléments à afficher, par exemple #TITRE
</BOUCLE_articles>

Generalmente, dare un nome ai doublons è una buona pratica per evitare ogni conflitto presente e futuro (i modelli evolvono). Inoltre il codice diventa più leggibile.

Nel quadro d’un utilizzo avanzato, potete provare l’utilizzo di segnaposti SPIP. Ad esempio :
{doublons #TITRE}
o anche
{doublons #_mabouboucle:TITRE}
o ancora
{doublons (#_mabouboucle:TITRE|supprimer_numero)}.

Utilizzo avanzato : anti-doublons o come costruire una pila di dati da trattare

Meccanica di anti-doublons

Nel seguito vari « doublons » permetteranno di raccogliere i risultati di piu circuiti che utilizzano differenti criteri ; «  !doublons » permette poi di applicare alla lista completa il trattamento richiesto.

Lo schema d’utilizzazione è il seguente :

Si sceglie una prima serie di articoli (senza stampare nulla)...

<BOUCLE0(ARTICLES){id_mot=2}{doublons A}></BOUCLE0>

... quindi una seconda serie di articoli (senza stampare nulla)...

<BOUCLE1(ARTICLES){id_auteur=1}{doublons A}></BOUCLE1>

... si pubblica la lista completa secondo le proprie necessità utilizzando l’anti-doublons.

<BOUCLE2(ARTICLES){par date}{!doublons A}>#TITRE<br></BOUCLE2>

Un esempio d’anti-doublons

Obiettivo : fare un circuito che recupera gli articoli di tutte le rubriche a eccezione delle rubriche 2 e 3, E riguardo agli articoli della rubrica 4, soltanto quelli di meno di 60 giorni.

La soluzione : ci occorre un primo circuito che andrà a cercare tutti gli articoli escludendo quelli delle rubriche 2, 3 e 4...

<BOUCLE0(ARTICLES) {id_rubrique !IN 2,3,4}{doublons tri1}></BOUCLE0>

... poi dobbiamo recuperare gli articoli di questa rubrica con un secondo circuito...

<BOUCLE1(ARTICLES) {id_rubrique=4}{age<60}{doublons tri1}></BOUCLE1>

... e infine un’ultimo circuito pubblica con l’anti-doublons gli articoli scelti con criteri a piacere.

<BOUCLE2(ARTICLES){par date}{!doublons tri1}>#TITRE<br></BOUCLE2>

Notes

[2Attenzione : non confondere il criterio « unique » col filtro « unique » di cui si possono trovare applicazioni qua e .

[3si tratta del modello di default di SPIP che si trova nella cartella /DIST. Richiamo : non dovete modificare questi file, ma sistemare i file dei vostri modelli nella cartella /squelettes da creare allo stesso livello di /DIST, cioè alla radice del sito.

[4questo punto è tratto da questa discussione (GrazieCédric)

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