Introduire une condition dans un critère de boucle

Bonjour,
Question simple que j’essaie de résoudre depuis des heures : j’aimerais que la boucle
<BOUCLE(ARTICLES){id_rubrique}{!par date}>
devienne exceptionnellement
<BOUCLE(ARTICLES){id_rubrique}{par num titre}>
si id_rubrique=123

J’essaie des trucs du genre
<BOUCLE(ARTICLES){id_rubrique}{[(#ID_RUBRIQUE|==123|?{'par num titre','!par date'})]}>
mais ça marche pas… sniff !
Quelqu’un aurait-il une idée ? :slightly_smiling_face:

Bonjour
En 2 boucle ?

<BOUCLE_a(ARTICLES){si id_rubrique=123}{id_rubrique}{par num titre}> </BOUCLE_a> <BOUCLE(ARTICLES){id_rubrique}{!par date}> </BOUCLE> <//B_a>

1 « J'aime »

Sinon, le plugin " Tri des articles par rubrique" est fait pour ça.

1 « J'aime »

Un grand merci à tous les deux, @pierretux et @J-C ! Les deux solutions marchent. J’ai finalement opté pour le plugin. Ça fonctionne super. :two_hearts:

Tu peux utiliser des variables :

[(#ID_RUBRIQUE|=={123}|?{
   #SET{tri,num titre}
   #SET{sens_tri,0}
 ,
   #SET{tri,date}
   #SET{sens_tri,-1}
})]

puis dans ta boucle

<BOUCLE(ARTICLES) {id_rubrique} {tri #GET{tri}} {inverse #GET{sens_tri}} >

A tester en vrai mais ça devrait marcher (c’est ce que je fais dans mes squelettes)

1 « J'aime »

Ça maaaaaarche ! M’a fallu le temps pour comprendre que les déclarations devaient se trouver plus haut que

<B_a>
<BOUCLE_a(ARTICLES)>

et non entre
<B_a>
et
<BOUCLE_a(ARTICLES)>
… mais ça marche ! Un tout grand merci @jeanmarie
Tu m’as fait connaître le critère tri. :blush:

Sans doute que les parties optionnelles <B_a> sont interprétées en même temps que la boucle, donc tu ne peux pas y mettre des variables qui servent dans la boucle, je crois qu’il y a un truc du genre…

Super si ça te sert en tout cas :slight_smile:

1 « J'aime »

Devant un tel débordement de solutions, j’ai ajouté les 3 astuces avec leurs copines :
https://contrib.spip.net/Astuces-courtes-pour-SPIP#CRITERES

2 « J'aime »

Mais quelle bonne idée !
Avant de vous rejoindre, j’avais fouiné par là mais je n’avais pas trouvé. Et pour cause…
Merci @JLuc pour ce geste fraternel ! :slightly_smiling_face: