Как создать полосатый 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>

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


person Martijn Pieters    schedule 19.12.2013    source источник


Ответы (1)


Реализация шаблонов страниц Zope для переменной repeat имеет недостаточно документированный параметр extra, 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}"

Это работает и в Chameleon.

person Martijn Pieters    schedule 19.12.2013
comment
Похоже, это новый дом документации по этому параметру. - person dreftymac; 14.11.2019