Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Pages: 1
[fr-fr] output_form et yield… dommage
Hello à tou(te)s,
J’aime bien tenter. Mais ça marche rarement.
Ma dernière idée que je voudrais partager avec vous.
J’avais envie de rajouter une nouvelle fonction à mon install par défaut de Txp : un module qui permet de faire du “odd” “even” pour n’importe quelle boucle (enfin, les articles, les cat_listes et les sections_listes).
Le code est assez répandu : par exemple pour une liste de catégories.
<txp:if_first_category>
<txp:variable name="style" value="even" />
</txp:if_first_category>
<txp:if_variable name="style" value="even">
<txp:variable name="style" value="odd" />
<txp:else />
<txp:variable name="style" value="even" />
</txp:if_variable>
Le problème de ce code, c’est qu’il ne fonctionne que dans une liste de catégories. À cause de la première condition <txp:if_first_category>
.
Qui ne tente rien n’a rien.
Pourquoi ne pas utiliser <txp:yield />
comme argument d’un output_form
pour faire basculer category en article ou section
Module “odd_even” de type misc :
<txp:if_first_<txp:yield />>
<txp:variable name="style" value="even" />
</txp:if_first_<txp:yield />>
<txp:if_variable name="style" value="even">
<txp:variable name="style" value="odd" />
<txp:else />
<txp:variable name="style" value="even" />
</txp:if_variable>
Et on appel le module dans n’importe quelle boucle
Par exemple pour une boucle article.
<txp:output_form form="odd_even">article<txp:output_form />
Bon, je me doutais que ça n’allait pas marcher.
Mais si vous avez une petite idée pour que cela marche…
bien sur, je pourrais mettre les 3 premières ligne dans le yield
mais j’aimerais bien faire mieux :)
Offline
Re: [fr-fr] output_form et yield… dommage
Bonjour, my french is obsolete, so you will have to excuse me using English.
<txp:if_first_<txp:yield />>
<txp:variable name="style" value="even" />
</txp:if_first_<txp:yield />>
That, definitely, won’t work. It was a somewhat clever idea, but then… it will just break the parser.
As I understand you are trying to avoid repeating code, by creating an “agnostic” zebra-thing generator.
You don’t have to initialize the variable (as you do in the <txp:if_first_xxxx>
). It should work without that.
Take a look at:
http://awasteofwords.com/article/fun-with-zebras-and-textpattern-407 (written by Wet).
Hope it helps!
Offline
Re: [fr-fr] output_form et yield… dommage
Maniqui ? tu t’es perdu ? :p
Merci pour ta réponse (moi je continue en Français).
You don’t have to initialize the variable (as you do in the <txp:if_first_xxxx>). It should work without that.
Yes AND No
YES :
avec le code de Wet, si la variable n’existe pas, elle aura la valeur odd
, perfect
NO :
Mais si la variable existe déjà et a la valeur “odd”, la boucle va commencer avec la valeur even
et c’est parfois problématique.
exemple sans <if_first_xxx />
Header class=*even* |
---|
Article 1 class=*odd* |
Article 2 class=*even* |
Article 3 class=*odd* |
Header class=*even* |
---|
Article 1 class=*even* |
Article 2 class=*odd* |
Article 3 class=*even* |
Dans la cas d’une première boucle avec un nombre de réponses impaires, si on ne réinitialise pas la variable au départ de la 2e boucle, on commence avec la valeur “even”.
Et c’est encore plus problématique avec 3 valeurs.
I want a bulletproof zebra module :)
Offline
Re: [fr-fr] output_form et yield… dommage
Peut-être que ceci devrait marcher, pas testé tel quel mais je viens de faire quelque chose de similaire :
<txp:php>
$sFlipflop = "
<txp:if_first_".yield().">
<txp:variable name=\"style\" value=\"even\" />
</txp:if_first_".yield().">
<txp:if_variable name=\"style\" value=\"even\">
<txp:variable name=\"style\" value=\"odd\" />
<txp:else />
<txp:variable name=\"style\" value=\"even\" />
</txp:if_variable>" ;
echo( parse( $sFlipflop ) ) ;
</txp:php>
En plugins possibles il y a zem_nth et chh_flipflop.
Offline
Pages: 1