[Zope] tal loop to render table

Tino Wildenhain tino at wildenhain.de
Wed Nov 29 16:07:10 EST 2006


Tino Wildenhain schrieb:
> Dennis Schulz schrieb:
>> I would like to build a tal loop that renders a list of elements 
>> (widgets in my case) in a table.
>> (for example I have a list of 9 items, then it renders a table: five 
>> rows with 2,2,2,2,1 items)
>> the table has 2 columns, so i would need to open and close the table 
>> row every second item.
>> I tried to check with a condition if the row is odd or even, but 
>> unopened and unclosed tags are not valid.
>>
>> Is there any possibiliy to do this with tal?
> 
> Well, you just dont want to do this in TAL, really ;)
> You have to choices: either not using a table but
"two"

> a couple of carefully CSS-crafted <div> tags
> (See alistapart.com or so for hints on tableless floating
> designs)
> 
> Or you go the easy path and have a data preparing script
> (Script (Python) - Object) which does something along the lines
> of:
> 
> data=your_nine_items
> 
> rowlength=2
> 
> return [data[i:i+rowlength] for i in range(0,len(data),rowlength)]
> 
> 
> I think you get the idea :-)

ah yes, and I forgot the TAL:

<table ..>
  <thead ...  />
  <tbody>
    <tr tal:repeat="row here/thescript or options/prepareddata">
      <td tal:repeat="col row" tal:content="col">123</td>
    </tr>
  </tbody>
</table>


I guess you know what values you really want to put in :-)

Regards
Tino


More information about the Zope mailing list