I criteri comuni a tutti i cicli

Alcuni criteri si applicano a (quasi) tutti i tipi di ciclo. Sono criteri destinati a limitare il numero di risultati visualizzati o a indicare l’ordine in cui i risultati devono essere mostrati. È anche possibile combinare fra loro più criteri di selezione.

Ordinare i risultati

{par criterio_di_ordinamento} indica l’ordine di presentazione dei risultati. Questo criterio di ordinamento corrisponde a uno dei segnaposti estratti dal database per ogni tipo di ciclo. Per esempio, è possibile ordinare gli articoli per data ({par date}), per data di pubblicazione ({par date_redac}) o per titolo ({par titre}). (Notare che i segnaposti sono sempre in lettere maiuscole mentre i criteri di ordinamento sono sempre in minuscolo.)

Caso particolare: {par hasard} permette di ottenere un elenco in ordine casuale.

Invertire l’ordine. Inoltre, {inverse} provoca la visualizzazione invertita dell’ordinamento. Per esempio {par date} inizia con gli articoli più vecchi; con {par date}{inverse} si inizia l’elenco con gli articoli più recenti.

A partire da SPIP 1.9, il criterio inverse può prendere come parametro qualsiasi segnaposto per variare dinamicamente il senso di ordinamento. Per esempio, è possibile scrivere: <BOUCLE_esempio(ARTICLES){par #ENV{ordina_per}}{inverse #ENV{senso_ordinamento}}>, il che permette di scegliere la colonna di ordinamento e il senso di ordinamento attraverso l’URL (&senso_ordinamento=1 oppure &senso_ordinamento=0)

Ordinare per numero. [SPIP 1.3] Quando si ordina secondo un elemento di testo (per esempio il titolo), l’ordinamento viene effettuato in ordine alfabetico. Tuttavia, per forzare un ordine di visualizzazione è possibile indicare un numero davanti al titolo, per esempio: « 1. Il mio primo articolo », « 2. Secondo articolo », « 3. Terzo... », ecc; con un ordinamento alfabetico l’ordine di questi elementi sarebbe « 1, 10, 11, 2, 3... ». Per fare in modo che l’ordine segua le cifre si può usare il criterio:

{par num criterio}

Per esempio:

<BOUCLE_articoli(ARTICLES){id_rubrique}{par date}{inverse}>

mostra gli articoli di una rubrica in ordine cronologico inverso (i più recenti all’inizio, i più vecchi alla fine), e:

<BOUCLE_articoli(ARTICLES){id_rubrique}{par titre}>

li visualizza secondo l’ordine alfabetico del titolo; infine:

<BOUCLE_articoli(ARTICLES){id_rubrique}{par num titre}>

li visualizza secondo l’ordine del numero del titolo (nota: l’opzione {par num titre} non funziona con le versioni di MySQL precedenti alla 3.23).

<BOUCLE_articoli(ARTICLES){id_rubrique}{par multi titre}>

Nel caso di un sito multilingue, il criterio {par multi criterio} permette di mettere in ordine alfabetico in ciascuna lingua disponibile. Se non si aggiunge "multi" il ciclo restituisce il medesimo ordinamento per tutte le lingue disponibili.

Ordinare secondo più criteri A partire dalla versione SPIP 1.8, SPIP 1.8.1, è possibile ordinare secondo molteplici criteri: {par criterio1, criterio2}. In tal modo si indicano ordini consecutivi. I risultati verranno innanzitutti ordinati in base al criterio1, poi in base al criterio2 per quei risultati che hanno il medesimo criterio1. Non vi sono limiti al numero di criteri che è possibile specificare.

Per esempio {par date, titre} ordinerà i risultati per data e i risultati che hanno la medesima data (date) saranno in ordine di titolo (titre).

Con [SPIP 1.8.2] è possibile specificare più criteri {par ...} per un ciclo al fine di ottenere il medesimo risultato. Per esempio: {par date} {par titre} è equivalente all’esempio precedente.

Avvertenza: Quando si utilizzano più criteri di ordinamento, il criterio {inverse} si applica unicamente al criterio di ordinamento che lo precede.

Per tale motivo, [SPIP 1.8.2] ha introdotto la sintassi {!par ...} che inverte un criterio di ordinamento specifico. Per esempio: {!par date} {par num titre} ordina per date (date) decrescenti e poi per numeri crescenti nel titolo (titre) quei risultati che hanno una data uguale.

Confronti, uguaglianze

{criterio < valore} Confronto con un valore fisso (si possono usare ">", "<", "=", ">=", "<=". Al fine di limitare il numero di risultati è possibile usare anche tutti i criteri di ordinamento (così come sono estratti dal database).

Il valore a destra dell’operatore può essere:

-  un valore costante stabilito nel modello di layout. Per esempio:

<BOUCLE_art(ARTICLES){id_article=5}>

mostra l’articolo numero 5 (utile per mettere in risalto un articolo preciso sulla home page).

<BOUCLE_art(ARTICLES){id_secteur=2}>

mostra gli articoli della sezione 2.

-  A partire dalla versione [SPIP 1.8], un segnaposto disponibile nel contesto del ciclo. Per esempio:

<BOUCLE_art(ARTICLES){id_article=5}>
<BOUCLE_titolo(ARTICLES) {titre=#TITRE}>
...
</BOUCLE_titolo>
</BOUCLE_art>

serve a trovare gli articoli che hanno lo stesso titolo dell’articolo 5.

Attenzione: È possibile utilizzare solo segnaposti semplici. Non è permesso usare filtri o codice opzionale.

In particolar modo, se si desidera utilizzare il segnaposto #ENV — o qualsiasi altro segnaposto che accetta parametri —, si deve utilizzare la sintassi: {titre = #ENV{titre}} e non: {titre = [(#ENV{titre})]}.

Espressioni regolari:

Molto potente (ma molto più complesso da manipolare), il termine di comparazione "==" introduce un confronto con un’espressione regolare. Per esempio:

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

seleziona gli articoli il cui titolo inizia con "a" o con "A".

Negazione:

Dalla versione [SPIP 1.2] è possibile utilizzare la sintassi {xxx != yyy} e xxx !== yyy, dove ! corrisponde alla negazione (operatore logico NOT).

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

seleziona gli articoli che non appartengono alla sezione 2.

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

seleziona gli articoli il cui titolo non inizia con "a" o con "A".

Visualizzare in base alla data

Al fine di facilitare l’utilizzo dei confronti sulle date sono stati aggiunti alcuni criteri:
-  age e age_redac corrispondono rispettivamente all’anzianità della pubblicazione e della prima pubblicazione di un articolo, in giorni: {age<30} seleziona gli elementi pubblicati da un mese a questa parte;
-  i criteri mois, mois_redac, annee, annee_redac permettono di confrontare con valori fissi ({annee<=2000} per gli elementi pubblicati prima della fine dell’anno 2000).

È possibile combinare più criteri allo scopo di ottenere risultati estremamente precisi. Per esempio:

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

mostra gli articoli della sezione 2, ad eccezione di quelli della rubrica 3, che sono stati pubblicati da meno di 30 giorni.

Suggerimento. Il criterio age è molto pratico per visualizzare gli articoli o le brevi la cui data è "futura", con valori negativi (a condizione di aver selezionato, nel Pannello di controllo del sito, l’opzione "Pubblicazione di articoli postdatati"). Per esempio, questo criterio permette di dare un valore agli avvenimenti futuri. {age<0} seleziona gli articoli o le brevi la cui data è impostata nel futuro ("dopo" oggi)...

[SPIP 1.3] Età in rapporto a una data fissa. Il criterio age viene calcolato in rapporto alla data odierna (quindi {age<30} corrisponde agli articoli pubblicati da meno di un mese a partire da oggi). Il criterio age_relatif confronta la data di un articolo o di una breve con una data « corrente »; per esempio, all’interno di un ciclo ARTICLES, si conosce già una data per ogni risultato del ciclo, quindi si può selezionare in rapporto a questa data (e non più in rapporto alla data odierna).

Per esempio:

<BOUCLE_articolo_principale(ARTICLES){id_article}>

	<h1>#TITRE</h1>

	<BOUCLE_seguente(ARTICLES){id_rubrique}{age_relatif<=0}{exclus}{par date}{0,1}>
	Articolo seguente: #TITRE
	</BOUCLE_seguente>

</BOUCLE_articolo_principale>

il ciclo BOUCLE_seguente mostra un solo articolo della stessa rubrica, ordinato per data, la cui data di pubblicazione è inferiore o uguale alla data dell’"articolo_principale"; cioè l’articolo della stessa rubrica pubblicato dopo l’articolo principale.

Un approfondimento delle informazioni sull’uso delle date è reperibile nell’articolo "La gestione delle date".

Visualizzazione di una parte dei risultati

-  {branche} A partire da [SPIP 1.8.2], limita i risultati — per i cicli che hanno un #ID_RUBRIQUE — alla ramificazione attuale (la rubrica attuale e le sue sotto-rubriche). Per esempio:
<BOUCLE_articoli(ARTICLES) {branche}> restituisce tutti gli articoli contenuti nella rubrica attuale e nelle sue sotto-rubriche,
<BOUCLE_articoli(ARTICLES) {!branche}> restituisce tutti gli articoli che non sono contenuti nella rubrica attuale o nelle sue sotto-rubriche,

È possibile utilizzare il criterio {branche?} facoltativo affinché venga applicato solamente nel caso che una rubrica è selezionata dal contesto (un ciclo che lo racchiude o un URL fornito da un id_rubrique). Per esempio:
<BOUCLE_articoli(ARTICLES) {branche?}> restituisce tutti gli articoli della rubrica attuale e delle sue sotto rubriche se nel contesto esiste un id_rubrique, altrimenti visualizza tutti gli articoli del sito.


-  {doublons} o {unique} (questi due criteri sono assolutamente identici) permettono di impedire la visualizzazione dei risultati già mostrati in altri cicli che utilizzano questo criterio.

Un po’ di storia: A partire da [SPIP 1.2] e fino alla versione [SPIP 1.7.2], questo criterio era possibile solamente all’interno dei cicli ARTICLES, RUBRIQUES, DOCUMENTS e SITES.


-  {doublons xxxx} a partire da [SPIP 1.8], è possibile avere più insiemi di criteri {doublons} indipendenti. I cicli che hanno come criterio un {doublons rosso} non influenzeranno minimamente i cicli che hanno come criterio un {doublons blu}.


-  {exclus} permette di escludere dal risultato l’elemento (articolo, breve, rubrica, ecc.) nel quale ci si trova già. Utile, per esempio, quando si mostrano gli articoli contenuti nella stessa rubrica e non si vuole mostrare un link verso l’articolo che si sta leggendo.


-  {xxxx IN a,b,c,d} dalla versione [SPIP 1.8], limita la visualizzazione a quei risultati che hanno il criterio xxxx uguale a a, b, c oppure d. I risultati sono ordinati secondo l’ordine indicato (ad eccezione di una richiesta esplicita di un altro criterio di ordinamento). È altresì possibile selezionare stringhe di caratteri, per esempio con {titre IN 'Cina', 'Giappone'}.

Con SPIP 1.9, i segnaposti sono ammessi negli argomenti di IN, e in particolare il segnaposto ENV, al quale si applicano i filtri di analisi per assicurarsi che la query SQL sia scritta in maniera appropriata. In deroga a ciò, SPIP testerà se l’argomento di ENV indica una tabella (per esempio, proveniente dalla digitazione di un form il cui attributo name termina con []). In caso affermativo, e se i filtri di analisi sono stati disattivati aggiungendo a questo segnaposto due asterischi, ogni elemento della tabella verrà considerato come argomento di IN, e SPIP applica i filtri di sicurezza su ognuno di essi.

Il modello di layout standard formulaire_forum_previsu fornisce un esempio di utilizzo con un ciclo MOTS che ha il criterio {id_mot IN #ENV**{ajouter_mot}}: questo ciclo seleziona unicamente le parole chiave che appartengono a un insieme indicato in maniera dinamica. In questo caso, questo insieme sarà stato generato dal form del modello standard choix_mots, che utilizza gli attributi name=ajouter_mot[].

-  {a,b} dove a e b sono delle cifre. Questo criterio permette di limitare il numero dei risultati. a indica il risultato a partire dal quale inizia la visualizzazione (attenzione, il primo risultato ha il numero 0 - zero); b indica quanti risultati mostrare.

Per esempio {0,10} mostra i primi dieci risultati; {4,2} mostra i due risultati a partire dal quinto (compreso).

-  {debut_xxx,b} è una variante molto elaborata del criterio precedente. Permette di fare iniziare la limitazione dei risultati con una variabile passata nell’URL (questa variabile sostituisce quindi l’a che si indicava precedentemente). Ha un funzionamento un po’ complicato, che per fortuna non si ha bisogno di usare spesso.

La variabile passata nell’URL comincia obbligatoriamente per debut_xxx (dove xxx è una parola scelta dal webmaster). Pertanto, per una pagina il cui URL è:

spip.php?page=petition&id_article=13&debut_signatures=200

con un modello (petition.html) che contiene, per esempio:

<BOUCLE_firme(SIGNATURES){id_article}{debut_firme,100}>

si otterrà l’elenco delle 100 firme iniziando dalla 201esima [promemoria]. Con l’URL:

spip.php?page=petition&id_article=13&debut_signatures=300

si otterrà l’elenco delle 100 firme a partire dalla 301esima [promemoria].

-  {a,n-b} dalla versione [SPIP 1.8], è una variante di {a,b} che limita la visualizzazione in base al numero di risultati nel ciclo. a è il risultato a partire dal quale cominiciare a visualizzare i dati; b indica il numero di risultati da non visualizzare alla fine del ciclo.

{0,n-10} visualizzerà tutti i risultati del ciclo eccetto gli ultimi 10.

-  {n-a,b} dalla versione [SPIP 1.8], è la controparte di {a, n-b}. Esso limita a b risultati cominciando a visualizzarli dall’aesimo risultato prima della fine del ciclo.

Per esempio: {n-20,10} visualizzerà 10 risultati cominciando dal 20esimo risultato prima della fine del ciclo.

-  {a/b} dove a e b sono delle cifre. Questo criterio permette di visualizzare una parte a (proporzionale) dei risultati in base a un numero di "frazioni" b.

Per esempio: {1/3} mostra il primo terzo dei risultati. Questo criterio è utile soprattutto per presentare degli elenchi su più colonne. Per ottenere una disposizione su due colonne basta creare un primo ciclo, mostrato in una cella di tabella, con il criterio {1/2} (la prima metà dei risultati), poi un secondo ciclo in una seconda cella, con il criterio {2/2} (la seconda metà dei risultati).

Attenzione. L’uso del criterio {doublons} insieme a questo è pericoloso. Per esempio:

<BOUCLE_primo(ARTICLES){id_rubrique}{1/2}{doublons}>
	<li> #TITRE
</BOUCLE_primo>
<BOUCLE_secondo(ARTICLES){id_rubrique}{2/2}{doublons}>
	<li> #TITRE
</BOUCLE_secondo>

non mostrerà tutti gli articoli della rubrica! Immaginiamo per esempio che nella nostra rubrica ci siano 20 articoli in totale. Il ciclo BOUCLE_primo mostra la prima metà degli articoli, cioè i primi 10, e impedisce (a causa di {doublons}) che vengano riutilizzati. Il ciclo BOUCLE_secondo, invece, prende la seconda metà degli articoli della rubrica che il ciclo BOUCLE_primo non ha ancora visualizzato; quindi, la metà dei successivi 10 articoli, ovvero gli ultimi 5 della rubrica. Con questa operazione, quindi, abbiamo quindi "perso" 5 articoli...

Visualizzazione tra i risultati

{"inter"} permette di indicare un codice HTML (in questo caso inter) inserito tra i risultati del ciclo. Per esempio, per separare un elenco di autori con una virgola si scriverà:

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

Varie

{logo} permette di selezionare unicamente gli articoli (o le rubriche, ecc.) che hanno un logo. Funziona anche nel ciclo (HIERARCHIE). Il criterio inverso {!logo} elenca gli oggetti che non hanno un logo.

Note

[promemoriail primo risultato ha numero 0, quindi il 200o risultato rappresenta in realtà la 201a firma

Autore Fausto Barbarito Publié le : Mis à jour : 21/03/23

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