J'ai une boucle RUBRIQUES qui génère un index alphabétique avec un critère {titre == ^#ENV{lettre,.},
Mon problème est que j'utilise parfois la balise <multi> dans mes titres de rubrique et il semble que la balise <multi> ne soit pas traitée mais conservée sous forme brute lors de la comparaison en critère de boucle.
Ma boucle fonctionne bien sinon pour toutes les rubriques sans balise <multi>.
Ai-je bon ? Y a-t-il moyen de contourner le problème (de forcer l'interprétation de "titre" avant comparaison) ?
J'ai une boucle RUBRIQUES qui génère un index alphabétique avec un critère {titre == ^#ENV{lettre,.},
Mon problème est que j'utilise parfois la balise <multi> dans mes titres de rubrique et il semble que la balise <multi> ne soit pas traitée mais conservée sous forme brute lors de la comparaison en critère de boucle.
Ma boucle fonctionne bien sinon pour toutes les rubriques sans balise <multi>.
Ai-je bon ? Y a-t-il moyen de contourner le problème (de forcer l'interprétation de "titre" avant comparaison) ?
Question intéressante. Je ne vois pas comment le faire proprement.
Peut-être dois-tu utiliser la balise #TITRE et la comparer à ton #ENV{lettre,.} et en fonction de cela faire (ou non) une <INCLURE>
La rubrique <multi>[fr]Pommes[en]Apples</multi> devrait donc paraître dans la liste pour
...?lang=fr&lettre=P
et aussi pour
...?lang=en&lettre=A
or donc : #SET{regexp, "(\["} #SET{regexp, #GET{regexp}|concat{#LANG}} #SET{regexp, #GET{regexp}|concat{"\]"}} #SET{regexp, #GET{regexp}|concat{#ENV{lettre,.}}} #SET{regexp, #GET{regexp}|concat{")"}}
<BOUCLE_truc(ARTICLES){titre == #GET{regexp}}>
devrait permettre de touver **en fonction de la langue** le titre dont la première lettre (celle juste après [xx]) est passée dans l'environnement (en url)
Le problème (je pense) consiste en ceci : selon la langue en cours la partie du titre qui doit être comparée va être différente.
La rubrique <multi>[fr]Pommes[en]Apples</multi> devrait donc paraître dans la liste pour
...?lang=fr&lettre=P
et aussi pour
...?lang=en&lettre=A
Paolo
Tout à fait Paolo.
J'ai essayé {titre == ^(<multi>)?#ENV{lettre,.}} et ça ne m'affiche rien de plus que ce que j'avais déjà (c'est à dire les rubriques sans balise multi dans le titre et commençant par la lettre voulue). Ce qui est logique en fait je pense puisqu'il y a un [fr] par exemple après <multi> normalement.
Celà dit, quand je fais {titre == ^(<multi>[fr])?#ENV{lettre,.}}, ce qui est le cas dans l'exemple sur lequel je me concentre pour résoudre mon problème, la rubrique ne s'affiche pas non plus, ce qui me semble étrange...
Je précise que dans l'exemple que j'ai choisi, les traductions du titre commencent par la même lettre (Château et Castle). Mon titre de rubrique est donc : <multi>[fr]Château [en]Castle</multi>
Je m'en vais méditer plus avant sur la première proposition de Paolo :
Peut-être dois-tu utiliser la balise #TITRE et la comparer à ton #ENV{lettre,.} et en fonction de cela faire (ou non) une <INCLURE>
Le problème (je pense) consiste en ceci : selon la langue en cours la partie du titre qui doit être comparée va être différente.
La rubrique <multi>[fr]Pommes[en]Apples</multi> devrait donc paraître dans la liste pour
...?lang=fr&lettre=P
et aussi pour
...?lang=en&lettre=A
Paolo
Paolo a écrit :
or donc : #SET{regexp, "(\["} #SET{regexp, #GET{regexp}|concat{#LANG}} #SET{regexp, #GET{regexp}|concat{"\]"}} #SET{regexp, #GET{regexp}|concat{#ENV{lettre,.}}} #SET{regexp, #GET{regexp}|concat{")"}}
<BOUCLE_truc(ARTICLES){titre == #GET{regexp}}>
devrait permettre de touver **en fonction de la langue** le titre dont la première lettre (celle juste après [xx]) est passée dans l'environnement (en url)
J'avais raté la dernière réponse ! Joli !
Et ça marche !
Le problème c'est que seulement quelques titres contiennent la balise <multi> sur mon site et il n'y a maintenant que ceux là qui sont pris dans la boucle.
Une solution simple serait de faire un {titre ==^ #GET{regexp} OU #ENV{lettre,.}} mais il me semble qu'il n'y a pas vraiment de syntaxe pour faire ça... pas comme avec IN ouù on peut séparer les possibilités par une virgule...
J'ai essayé {titre ==^ (#GET{regexp})?#ENV{lettre,.}} aussi (en modifiant un peu les #SET) mais ça ne marche pas et je ne suis de toute façon pas bien sûr de comprendre cette notation {A==^(X)?Y}
Je pensais que l'expression X devenait optionnelle du coup mais ça n'a pas l'air d'être ça...