J'ai essayé de prendre le problème dans l'autre sens à savoir :
si #ENV{idAge}=-1 alors BOUCLE1
sinon BOUCLE2
J'ai utilisé les filtres de test, mais je me rends compte qu' executer une boucle dans le filtre pose des problèmes :
Le code suivant fonctionne bien !
<BOUCLE_test(MOTS){id_groupe=3} {par num titre}>
[(#ENV{idAge}|!={'-1'}|?{'',' '})
<option>idAge = -1 -> #ENV{idAge}</option>
[(#ENV{idFamille}|!={'-1'}|?{'',' '})
<option>idAge = -1->idFamille = -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{'selected="selected"',''})]>1-[(#TITRE|supprimer_numero)]</option>
]
[(#ENV{idFamille}|=={'-1'}|?{'',' '})
<option>idAge = -1->idFamille ! -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>2-[(#TITRE|supprimer_numero)]</option>
]
]
[(#ENV{idAge}|=={'-1'}|?{'',' '})
<option>idAge ! -1 -> #ENV{idAge}</option>
[(#ENV{idFamille}|!={'-1'}|?{'',' '})
<option>idAge ! -1->idFamille = -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>3-[(#TITRE|supprimer_numero)]</option>
]
[(#ENV{idFamille}|=={'-1'}|?{'',' '})
<option>idAge ! -1->idFamille ! -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>4-[(#TITRE|supprimer_numero)]</option>
]
]
</BOUCLE_test>
Celui là non :
<BOUCLE_test(MOTS){id_groupe=3} {par num titre}>
[(#ENV{idAge}|!={'-1'}|?{'',' '})
<option>idAge = -1 -> #ENV{idAge}</option>
[(#ENV{idFamille}|!={'-1'}|?{'',' '})
<option>idAge = -1->idFamille = -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{'selected="selected"',''})]>1-[(#TITRE|supprimer_numero)]</option>
<BOUCLE_test1(RUBRIQUES) {id_secteur=1} {id_mot=#ID_MOT} {0,1} >
</BOUCLE_test1>
]
[(#ENV{idFamille}|=={'-1'}|?{'',' '})
<option>idAge = -1->idFamille ! -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>2-[(#TITRE|supprimer_numero)]</option>
]
]
[(#ENV{idAge}|=={'-1'}|?{'',' '})
<option>idAge ! -1 -> #ENV{idAge}</option>
[(#ENV{idFamille}|!={'-1'}|?{'',' '})
<option>idAge ! -1->idFamille = -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>3-[(#TITRE|supprimer_numero)]</option>
]
[(#ENV{idFamille}|=={'-1'}|?{'',' '})
<option>idAge ! -1->idFamille ! -1 -> #ENV{idFamille}</option>
<option value="#ID_MOT"[(#ENV{idDomaine}|=={#ID_MOT}|?{' selected="selected"',''})]>4-[(#TITRE|supprimer_numero)]</option>
]
]
</BOUCLE_test>
Les lignes <option>idAge = -1 -> #ENV{idAge}</option>, etc. servent juste pour vérifier dans quelle condition on se trouve.
Quand il y à la boucle, j'ai des choix avec idFamille = -1 et idFamille != -1 alors que idFamille est != -1 !!!
Si quelqu'un à 1 idée, ce serait vraiment sympa parceque là je galère vraiment, la seule solution que je vois actuellement est de passer ces conditions en PHP, mais bon c'est dommage, SPIP doit bien offrir cette possibilité que je n'ai pas du saisir...
Stéphane a écrit :
Bonjour,
Je cherche à faire une boucle avec des critères. Si un des critères est inexistant (ou =1, ça m'arrangerai), ce critère n'est plus pris en compte!
<BOUCLE_rubrique_domaine(RUBRIQUES) [(#ENV{idAge}) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}}>
</BOUCLE_rubrique_domaine>
L'erreur :
# Erreur(s) dans le squelette
* Erreur sur le site, ) {id_mot=#ENV{idAge}}] {id_mot=#ENV{idFamille}} >
J'ai essayé plusieurs autres solutions qui ne marchent pas non plus.
La variable est passée dans un POST grâce à AJAX (enfin javascript asychrone puisque je n'utilise pas de XML)
C'est la base de mon problème. J'utilise ça pour faire des listes liées.
Merci !
Stéphane
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ