Els criteris comuns a tots els bucles

Alguns criteris s’apliquen a (gairebé) tots els tipus de bucles. Són criteris destinats a restringir el número de resultats a visualitzar o a indicar l’ordre com es mostren. Es poden combinar, sense dificultat, diversos d’aquests criteris de selecció.

Classificar els resultats

{par critère_de_classement} iIndica l’ordre en què es presenten els resultats. Aquest criteri de classificació correspon a una de les etiquetes extretes de la base de dades per cada tipus de bucle. Per exemple, podrem classificar els articles per la data {per date}, per la data en què han estat redactats {par date_redac} o per títol {par titre}. (Fixeu-vos que, tot i que les etiquetes es presenten en majúscules, els criteris de classificació es presenten en minúscules.)

Cas particular: {par hasard} per atzar, permet mostrar una llista presentada en ordre aleatori.

Invertir la classificació. A més a més, {inverse} provoca la presentació d’una classificació en ordre invers. Per exemple {par date} comença pels articles més antics; amb {par date}{inverse} la llista es comença amb els articles més recents.

A partir d’SPIP 1.9, el criteri inverse pot agafar com a paràmetre qualsevol marcador per tal de variar dinàmicament el sentit de la tria. Per exemple, és possible escriure: <BOUCLE_exemple(ARTICLES){par #ENV{tri}}{inverse #ENV{senstri}}>, la qual cosa permet escollir la columna de selecció i el sentit del que s’escull per mitjà del url (&senstri=1 o &senstri=0)

Classificar per número. [SPIP 1.3] Quan el criteri de classificació es un element de text (per exemple el títol –titre-), la classificació es fa per ordre alfabètic. No obstant, per forçar un ordre de presentació, es pot posar un número al davant del títol. Per exemple: «1. El meu primer article», « 2. Segon article», « 3. Tercer... », etc. Amb una classificació alfabètica, la classificació d’aquests elements donaria la sèrie «1, 10, 11, 2, 3...». Per restablir la classificació numèrica, es pot fer servir el criteri:

{par num critère}

Per exemple:

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

mostra els articles d’una secció classificats segons un ordre cronològic invers (els més recents al començament, els més antics al final), i:

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

els mostra segons l’ordre alfabètic del seu títol; finalment:

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

els mostra segons l’ordre del número del seu títol. (ALERTA: la opció {par num titre} no funciona en les versions de MySQL anteriors a la versió 3.23).

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

En el marc d’un lloc multilingüe el criteri {par multi critère} permet ordenar per ordre alfabètic a dins de cada llengua. Sense l’afegit de "multi" el bucle reenvia la mateixa classificació per cadascuna de les llengües.

Classificar segons diversos criteris A partir de SPIP 1.8, es pot classificar segons diversos criteris: {par critère1, critère2}. S’indiquen d’aquesta manera ordres de classificació consecutives. Els resultats es s’ordenaran primerament segons el critère1, després el critère2 pels resultats que tinguin el mateix critère1. Es poden especificar tants criteris com sigui necessari.

Per exemple {par date, titre} ordena els resultats per date després, els resultats que tenen la mateixa date seran ordenats per titre.

Amb [SPIP 1.8.2] podem especificar diversos criteris {par ...} per un boucle per arribar al mateix resultat. Per exemple: {par date} {par titre} és equivalent a l’exemple anterior.

Comentari: Quan s’utilitzen diversos criteris de classificació, el criteri {inverse} només s’aplica al criteri de classificació situat just abans.

És per això que [SPIP 1.8.2] introdueix la notació {!par ...} que inversa un criteri de classificació en particular. Per exemple: {!par date} {par num titre} classifica per date decreixents, després per números creixents en el mateix titre pels resultats que tenen la mateixa date.

Comparacions, igualtats

{critère valeur} Comparació amb un valor fixat (es pot utilitzar «>», «<», «=», «>=», «<=». Tots els criteris de classificació (tal i com són extrets de la base de dades) poden ser utilitzats igualment per limitar el número de resultats.

El valor a la dreta de l’operador pot ser:

-  Un valor constant fixat a l’esquelet. Per exemple:

<BOUCLE_art(ARTICLES){id_article=5}>

mostra només l’article que té el número 5. És útil, per exemple, per ressaltar un article concret a la pàgina d’inici.

<BOUCLE_art(ARTICLES){id_secteur=2}>

mostra els articles del sector número 2.

-  A partir de [SPIP 1.8], una etiqueta es troba disponible en el context del bucle. Per exemple:

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

serveix per trobar els articles que tenen el mateix títol que l’article 5.

Atenció: Només podem fer servir una etiqueta simple. No està permès ni filtrar-la ni posar-hi codi opcional.

En especial, si volem utilitzar l’etiqueta #ENV — o una altra etiqueta que admeti paràmetres —, hem d’emprar la notació: {titre = #ENV{titre}} et no: {titre = [(#ENV{titre})]}.

Expressions regulars:

Molt potent (però força més complexe de manipular), el terme de comparació «==» introdueix una comparació segons una expressió regular. Per exemple:

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

selecciona els articles el títol dels quals comença per «a» o «A».

Negació:

A partir de [SPIP 1.2] Es pot fer servir la notació {xxx != yyy} i {xxx !== yyy}, el ! corresponent a la negació (operador lògic NOT).

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

selecciona els articles que no pertanyen al sector número 2.

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

selecciona els articles el títol dels quals no comença per «a» o «A».

Publicació en funció de la data

Per facilitar l’ús de les comparacions a les dates, s’han afegit els criteris següents:
-  age i age_redac corresponen respectivament a l’antiguitat de la publicació i de la primera publicació d’un article, en dies: {age<30} selecciona els elements publicats des de fa menys d’un mes;
-  els critères mois, mois_redac, annee, annee_redac permeten comparar amb valors fixes (per exemple, {annee<=2000} pels elements publicats fins l’any 2000).

Es poden combinar diversos criteris per efectuar seleccions més precises. Per exemple:

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

mostra els articles del sector 2, excepte els de la secció 3, i publicats des de fa menys de 30 dies.

Una astúcia. El criteri edat és molt pràctic per mostrar els articles o les breus la data dels quals es troba situada «en un futur», amb valors negatius (a condició d’haver seleccionat, a la Configuració precisa del lloc, la opció « Publicar els articles amb data posterior »). Per exemple, aquest criteri permet de donar èmfasi a futurs esdeveniments. {age<0} selecciona els articles o les breus la data dels quals es troba situada en el futur («desprès» d’avui)...

(SPIP 1.3) Edat respecte a una data donada. El criteri edat (age) es calcula en relació a la data d’avui (d’aquesta manera, {age<30} correspon als articles publicats des de fa menys d’un mes respecte a la data d’avui). El criteri age_relatif (edat relativa) compara la data d’un article o d’una breu amb una data «actual»; per exemple, a l’interior d’un bucle ARTICLES, coneixem ja una data per a cada resultat del bucle, per tant, podem seleccionar en relació a aquesta data (i no només en relació amb la data d’avui).

Per exemple:

<BOUCLE_article_principal(ARTICLES){id_article}>

	<h1>#TITRE</h1>

<BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif<=0}{exclus}{par date}{0,1}>
	Article següent: #TITRE
	</BOUCLE_suivant>

</BOUCLE_article_principal>

el BOUCLE_suivant mostra un únic article de la mateixa secció, classificat per data, la data de publicació del qual és inferior o igual a la data de l’« article_principal »; és a dir, l’article de la mateixa secció publicat després de l’article principal.

Trobareu informació més àmplia sobre la utilització de les dates a l’article que parla sobre «La gestió de les dates».

Presentació d’una part dels resultats


-  {branche} A partir de [SPIP 1.8.2], limita els resultats — pels bucles que tenen un #ID_RUBRIQUE — a la branca actual (la secció actual i les subseccions). Per exemple:
<BOUCLE_articles(ARTICLES) {branche}> ens tornarà tots els articles de la secció actual i de les seves subseccions,
<BOUCLE_articles(ARTICLES) {!branche}> ens tornarà tots els articles que no es troben dins de la secció actual o les seves subseccions,

Es pot utilitzar el criteri {branche?} optionnel per aplicar-lo només si una secció es selecciona dins del context (un bucle englobant o l’url proporcionada per un id_rubrique). Per exemple:
<BOUCLE_articles(ARTICLES) {branche?}> ens retornarà tots els articles de la secció actual i de les seves subseccions si hi ha un id_rubrique en el context, sinó, ens torna tots els articles del lloc Web.


-  {doublons} o {unique} (aquests dos criteris són absolutament idèntics) permeten prohibit que es mostrin resultats que ja s’han mostrar dins d’altres bucles utilitzant aquest criteri.

històric: A partir de [SPIP 1.2] i fins a [SPIP 1.7.2], només els bucles ARTICLES, RUBRIQUES, DOCUMENTS i SITES acceptaven aquest criteri.


-  {doublons xxxx} a partir de [SPIP 1.8], es poden tenir diversos criteris {doublons} independents. Els bucles que tinguin {doublons rouge} no tindran cap incidència sobre els bucles que tinguin {doublons bleu} com a criteri.


-  {exclus} permet excloure del resultat l’element (article, breu, secció, etc.) en el qual ja ens trobem. Per exemple, quan publiquem els articles continguts en una mateixa secció, no volem publicar un enllaç cap a l’article en el que ja ens trobem.


-  {xxxx IN a,b,c,d} a partir de [SPIP 1.8], limita la presentació als resultats que tinguin el criteri xxxx igual a a, b, c o d. Els resultats són ordenats segons l’ordre indicat (excepte per demanda explícita d’un altre criteri d’ordre). També és possible seleccionar cadenes de caràcters, per exemple amb {titre IN 'Chine', 'Japon'}.

Amb SPIP 1.9, les etiquetes són reconegudes en els arguments d’IN, i sobretot l’etiqueta ENV, a la que se li apliquen els filtres d’anàlisi per assegurar que l’ordre SQL s’escriurà bé. De forma derogatòria, Spip verificarà si l’argument d’ ENV apunta cap a una taula (venint per exemple d’entrades de formulari l’atribut de les quals name s’acaba per []). Si aquest és el cas, i si els filtres d’anàlisi han estat desactivats sufixant aquesta etiqueta per una doble estrella, llavors cada element de la taula serà considerat com argument d’IN, aplicant Spip els filtres de seguretat damunt de cadascun d’ells.

L’esquelet estàndard formulaire_forum_previsu subministra un exemple d’ús amb un bucle MOTS que té el criteri {id_mot IN #ENV**{ajouter_mot}}: aquest bucle selecciona només les paraules clau que pertanyen a un conjunt indicat dinàmicament. Aquí, aquest conjunt haurà estat construit pel formulari de l’esquelet estàndard choix_mots, el qual utilitza atributs name=ajouter_mot[].

-  {a, b} o a i b són números. Aquest criteri permet limitar el número de resultats. a indica el resultat a partir del qual es comença la visualització (atenció, el primer resultat és el número 0 - zero); b indica el número de resultats mostrats.

Per exemple {0, 10} visualitza els deu primers resultats; {4, 2} mostra els dos resultats a partir del cinquè (inclòs).

-  {debut_xxx,b} és una variant molt elaborada del criteri anterior. Permet fer començar la limitació dels resultats per una variable passada per l’URL (aquesta variable reemplaça així la a que se li indicava anteriorment). És un funcionament una mica complex, però afortunadament no es necessari fer-la servir gaire sovint.

La variable passada per l’URL comença forçosament per debut_xxx (on xxx és una paraula escollida pel webmestre). D’aquesta manera, per una pàgina que té com URL:

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

amb un esquelet (petition.html) que conté, per exemple:

<BOUCLE_signatures(SIGNATURES){id_article}{debut_signatures,100}>

obtindrem la llista de 100 signatures a partir de la 201 [recorda]. Amb l’URL:

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

obtindríem la llista de 100 signatures a partir de la 301 [recorda].

-  {a, n-b} a partir d’SPIP 1.8, és una variant de {a, b} el qual limita la visualització en funció del número de resultats en el bucle. a és el resultat a partir del qual es comença la visualització; b indica el número de resultats que no es mostraran al final del bucle.

{0, n-10} mostrarà tots els resultats del bucle excepte els 10 últims.

{5, n} visualitzarà els resultats des del 6è. fins el darrer.

Atenció:
si «a» i «b» s’han de substituir per números, és la lletra «n» la que s’ha d’utilitzar quan sigui necessari.

-  {n-a, b} a partir d’SPIP 1.8, és la contrapartida de {a, n-b}. Es limita a b els resultats començant la visualització al ae resultat abans del final del bucle.

Per exemple: {n-20,10} mostrarà 10 resultats partint del 20è resultat abans del final del bucle.

-  {a/b} on a i b són xifres. Aquest criteri permet mostrar una part a (proporcionalment) dels resultats en relació al nombre total «porcions» b.

Per exemple: {1/3} mostra el primer terç dels resultats. Aquest criteri és útil, sobretot, per presentar llistes en diverses columnes. Per obtenir una visualització en dues columnes, hem de crear un primer bucle, dins d’una cel·la d’una taula, amb el criteri {1/2} (la primera meitat dels resultats); després mostrarem un segon bucle dins una nova cel·la, amb el criteri {2/2} (la segona meitat dels resultats).

Atenció. La utilització del criteri {doublons} amb aquest criteri és perillós. Per exemple:

<BOUCLE_prem(ARTICLES){id_rubrique}{1/2}{doublons}>
	<li> #TITRE
</BOUCLE_prem>
<BOUCLE_deux(ARTICLES){id_rubrique}{2/2}{doublons}>

	<li> #TITRE
</BOUCLE_deux>

no mostrarà tots els articles de la secció! Imaginem, per exemple, que hi ha un total de 20 articles a la nostra secció. El BOUCLE_prem mostrarà la primera meitat dels articles, és a dir els 10 primers, i impedirà (com a conseqüència de {doublons}) de tornar-los a utilitzar. El BOUCLE_deux, per la seva part, recuperarà la segona meitat dels articles d’aquesta secció que encara no s’han mostrat pel BOUCLE_prem; o sigui, la meitat dels 10 articles següents, és a dir els 5 últims articles de la secció. Haurem « perdut », per tant, 5 articles en aquesta operació...

Visualització entre els resultats

{"inter"} permet indicar un codi HTML (aquí, inter) inserit entre els resultats del bucle. Per exemple, per separar una llista d’autors per una coma, ho farem de la manera següent:

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

Divers

{logo} permet seleccionar només els articles (o seccions, etc) que disposin d’un logo. Funciona també en el bucle (HIERARCHIE). El criteri invers {!logo} llista els objectes que no tenen logo.

Notes

[recordael primer resultat té el número 0, per tant el resultat 200 representa realment la signatura número 201

Autor merce Publié le : Mis à jour : 21/03/23

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