Wow...merci mille fois; je testerai ca demain!
-----Original Message-----
From: denisb [mailto:denisb@laposte.net]
Sent: jeudi 20 mai 2010 18:53
To: spip@rezo.net
Subject: Re: [Spip] critere like et blocs multi
Le 20/05/10 17:25, Gomes, Alex a écrit :
Quelqu'un aurait-il une solution qui va bien a ce petit problème, svp ? 
hum...
hypothèse :
une boucle doit rechercher sur MOTS en fonction d'une valeur
passée dans le contexte et ce, uniquement dans la langue du contexte.
donc :
#SET{regmult, #VAL{\[#LANG\][^\*}|concat{#ENV{rec}}}
<BOUCLE_m(MOTS) {titre == #GET{regmult}} {"<br />"}>
#TITRE
</BOUCLE_m>
explications :
#SET
on définit préalablement la regexp qui sera utilisée dans
le critère. ce faisant, on se permet d'utiliser les [
qui exploseraient le critère sinon ;
#VAL
obligatoire pour pouvoir utiliser le |concat qui suit ;
\[#LANG\]
permet de récupérer la langue du contexte : deviendra donc
littéralement [fr] ou [en] ;
[^\*
suite du motif de la regexp : n'importe quel caractère autre que [
zéro ou plusieurs fois. permet ainsi de se limiter à un seul
élément du bloc <multi> compris entre ] et [ ;
|concat
obligatoire pour que #ENV ne soit pas pris comme motif
de la regexp mais bien interprété par le compilateur de spip.
dans notre exemple deviendra donc littéralement equa .
à partir de l'exemple donné :
recherche de 'equa' dans '<multi>[en]Ecuador[fr]Equateur</multi>'
le sql résultant dans un contexte anglais :
mots.titre REGEXP '\\[en\\][^\\*equa'
donc rien (aucun retour)
le sql résultant dans un contexte français :
mots.titre REGEXP '\\[fr\\][^\\*equa'
donc 'Equateur' (bon retour)
note 1 : je n'ai pas trouvé comment faire plus simple, désolé.
note 2 : testé *rapidement*, il y a sans doute des améliorations
possibles.
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc