Как создать CSS с полосками зебры с помощью TAL?

Как я могу использовать шаблоны страниц Chameleon или Zope, чтобы легко создавать чередующиеся CSS-зебры? я хочу добавить odd а также even классы для каждой строки в таблице, но с использованием условия с repeat/name/odd или же repeat/name/even выглядит довольно многословно даже с условным выражением:

<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>

Это становится особенно утомительным, если у вас есть несколько классов для расчета.

1 ответ

Решение

Реализация шаблонов страниц Zope для repeat переменная имеет недокументированный дополнительный параметр, parity, чем дает вам строку 'odd' или же 'even', чередуя итерации:

<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>

Это также намного проще интерполировать в строковое выражение:

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

Это работает и в хамелеоне.

Другие вопросы по тегам