Nicolas Georgakopoulos wrote:
Dragos Chirila wrote:


I suggest to use the following function that

def get_grouped_list(self, seq=[], size=3):
    #get the list with all items grouped
    return [seq[i:i+size] for i in range(0, len(seq), size)]

that takes as parameter a list and goups items in slices with length = size.

>>> def get_grouped_list(seq=[], size=3):
...     return [seq[i:i+size] for i in range(0, len(seq), size)]
>>> l = [1,2,3,4,5,6,7,8]
>>> get_grouped_list(l)
[[1, 2, 3], [4, 5, 6], [7, 8]]
>>> get_grouped_list(l, 4)
[[1, 2, 3, 4], [5, 6, 7, 8]]

Then iterating this is something like:

<tr tal:repeat="slice python:<someobject>.get_grouped_list(yourlist)">
    <td tal:repeat="item slice">
        <span tal:replace="item" />

Nicolas Georgakopoulos wrote:

Hello all , I'm trying to display on the same page a table with (3 columns) with content from a list . I'm trying to batch the results so that every 3 elements anothe row is created.
Can anyone give me a clue how to do that ?

this is my code:

<table tal:define="Rnumber python:context.cm1.content.specialfile.getList('link_list') ; batch python:modules['ZTUtils'].Batch(Rnumber,size=3,start=0)">
       <th colspan="3">Main Title</th>
               <tr><th>Title 1</th><th>Title 2</th><th>Title 3</th></tr>
                               <td tal:repeat="num batch">
<span tal:condition="python:num < 3" tal:replace="structure num"> content goes here.. </span>
               </tr>                                     <!--  <tr>
                                   <td tal:repeat="num batch">
<span tal:replace="structure num"> Material goes here </span>
</tr> --> </table>
Thanks for your suggestion Dragos , I want to do it the zope batch way (I suppose it is simpler) if I can...
I will keep in mind your function if nothing else can be done.

The ZTUtils batching is mostly for batching between pages. It's probably easier to do it in a Python script.

"Building Websites with Plone"

Enfold Systems, LLC
Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to