53 votes

Comment créer des CSS zébrés avec TAL ?

Comment puis-je utiliser Chameleon ou Zope Page Templates pour créer facilement des zébrures CSS ? Je veux ajouter odd et even à chaque ligne d'un tableau, mais l'utilisation d'une condition avec repeat/name/odd ou repeat/name/even semble plutôt verbeux, même avec une expression conditionnelle :

<table>
   <tr tal:repeat="row rows" 
       tal:attributes="class python:repeat['row'].odd and 'odd' or 'even'">
       <td tal:repeat="col row" tal:content="col">column text text</td>
   </tr>
</table>

Cela devient particulièrement fastidieux si vous avez plusieurs classes à calculer.

36voto

Martijn Pieters Points 271458

L'implémentation des modèles de page de Zope pour le repeat a une variable sous-documentée extra paramètre, parity puis vous obtenez la chaîne de caractères 'odd' ou 'even' en alternant les itérations :

<table>
   <tr tal:repeat="row rows" 
       tal:attributes="class repeat/row/parity">
       <td tal:repeat="col row" tal:content="col">column text text</td>
   </tr>
</table>

Il est également beaucoup plus facile d'interpoler dans une expression de chaîne de caractères :

tal:attributes="class string:striped ${row/class} ${repeat/row/parity}"

Cela fonctionne également dans Chameleon.

0 votes

Il semble que ce soit la nouvelle adresse de la documentation pour ce paramètre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X