-----Message d'origine-----
De : Tropicaloo [mailto:tropicaloo@voila.fr]
Envoyé : mardi 10 mars 2009 22:24
À : spip@rezo.net
Objet : [Spip] url, {critère} et #ENV sont dans un bateau
Bonsoir,
Je rame dur à essayer de récupérer une variable dans un
critère conditionnel de boucle.
Dans une balise c'est ok avec :
[(#ENV{affichage}|=={rouge}|?{'rouge.css','standard.css'})]
Mais pour le critère de boucle cela ne marche pas.
J'ai passé dans l'url :
Je ne crois pas que tu puisse utiliser un critère comme ça, parce qu'il va
essayer de trouver un champ 'rouge' dans la table breves. Les boucles, ce
sont des requêtes sur les tables SQL...
Pourquoi est-ce que l'utilisation de
[(#ENV{affichage}|=={rouge}|?{'rouge.css','standard.css'})] ne te suffit pas
?
ca, tu peux oublier, ca voudrait dire que le nom du champ de la table affichage à comparer au texte "rouge" est dynamique (spip ne fait pas ca, le premier parametre d'un critère ne peut pas etre dynamique, il est interprété à la compilation et doit donc etre indépendant du contexte)
mais si j'ai bien compris, ce qu'il te faut, c'est :
[(#ENV{affichage}|=={rouge}|?{#INCLURE{untruc},#INCLURE{unautretruc}})]
si ca coince, la syntaxe à tenter :
[(#ENV{affichage}|=={rouge}|?{' ',''})#INCLURE{untruc}]
[(#ENV{affichage}|=={rouge}|?{'',' '})#INCLURE{unautretruc}]
pas de boucle directement dansune zoneconditionnelle, il faut mettre ca dans une inclusion
le même en langage moinsbiencomprenant (dont je):
[(#ENV{affichage}|=={rouge}|oui) #INCLURE{untruc} ]
[(#ENV{affichage}|=={rouge}|non) #INCLURE{unautretruc} ]
le même en langage moinsbiencomprenant (dont je):
[(#ENV{affichage}|=={rouge}|oui) #INCLURE{untruc} ]
[(#ENV{affichage}|=={rouge}|non) #INCLURE{unautretruc} ]
Merci Stéphane et Fremoin pour votre aide.
J'en demande trop à Spip. Je pouvais effectivement chercher longtemps !
Je vais donc passer par un inclure.
Tropicaloo a écrit :
et j'ai essayé :
<BOUCLE_A(BREVES) {0,1} {#ENV{affichage} == rouge}>
JLuc a écrit :
== ça invoque une regexp il me semble avec SPIP ?
= devrait être suffisant
Tropicaloo a écrit :
Merci pour ta proposition, Jean Luc.
Malheureusement c'est pareil avec =
JLuc a écrit :
> c'est dans un <INCLURE ?
essaie avec un #INCLURE,
parfois j'ai trouvé que les #ENV passent mieux...
Stéphane dans son post m'a confirmé que je ne pouvais pas utiliser une variable dynamique.
Je vais donc suivre vos conseils et passer par le inclure.
Merci pour ton aide Jean-Luc.
@+
le même en langage moinsbiencomprenant (dont je): [(#ENV{affichage}|=={rouge}|oui) #INCLURE{untruc} ] [(#ENV{affichage}|=={rouge}|non) #INCLURE{unautretruc} ]
Merci Stéphane et Fremoin pour votre aide. J'en demande trop à Spip. Je pouvais effectivement chercher longtemps ! Je vais donc passer par
un inclure.
de rien, je n'ai fait que traduire en malcomprenant (ma langue
maternelle, proche du moinsbiencomrenant, vernaculaire quant à elle) ;
franchement, une fois qu'on a pris le coup, on se demande comment on a pu s'en passer.
le même en langage moinsbiencomprenant (dont je):
[(#ENV{affichage}|=={rouge}|oui) #INCLURE{untruc} ]
[(#ENV{affichage}|=={rouge}|non) #INCLURE{unautretruc} ]
Merci Stéphane et Fremoin pour votre aide.
J'en demande trop à Spip.
m'est avis que tu demandais surtout pas du tout la bonne chose.
{#ENV{affichage} == rouge}, je vois pas ce que tu voulais que ca fasse, sauf si tu as un champ nommé rouge dans ta table spip_breves...
par contre, pas testé, mais tu peux peut etre faire :
<BOUCLE_A(BREVES) {0,(#ENV{affichage}|=={rouge}|?{1,0})}>
si le but c'est de faire une boucle qui remonte 1 element si affichage vaut rouge et rien sinon.
ou alors donner l'id_breve dans un cas et 0 dans l'autre : #SET{toto,#ENV{affichage}|=={rouge}|?{12,0}}
<BOUCLE_A(BREVES) {id_breve=#GET{toto}}>
pour afficher la breve numero 12 seulement si affichage vaut rouge
fremoin a écrit :
le même en langage moinsbiencomprenant (dont je):
[(#ENV{affichage}|=={rouge}|oui) #INCLURE{untruc} ]
[(#ENV{affichage}|=={rouge}|non) #INCLURE{unautretruc} ]
Stephane a écrit :
(...) par contre, pas testé, mais tu peux peut etre faire :
<BOUCLE_A(BREVES) {0,(#ENV{affichage}|=={rouge}|?{1,0})}>
si le but c'est de faire une boucle qui remonte 1 element si affichage vaut rouge et rien sinon.
ou alors donner l'id_breve dans un cas et 0 dans l'autre : #SET{toto,#ENV{affichage}|=={rouge}|?{12,0}}
<BOUCLE_A(BREVES) {id_breve=#GET{toto}}>
pour afficher la breve numero 12 seulement si affichage vaut rouge
En fait, je cherchais tout simplement à effectuer une boucle si la valeur de "affichage" est "rouge" et sa boucle alternative ( //B ) s'il n'y a pas de valeur affichage dans l'URL.
J'avais pris l'exemple d'une boucle de brèves, mais cela aurait pu être tout autre type de boucle.
Avec la balise [(#ENV ....] je ne peux pas utiliser de boucles à l'intérieur et cela m'oblige à utiliser un grand nombre de #ENV :