Se non ho capito male, ti basta seguire la logica di questo esempio (tratto da http://smarty.php.net/ ):
codice:* Monte Ohrt March 4, 2002 *} {* $cols is the number of columns you want *} <TABLE border=1> <TR> {section name=numloop loop=$data} <TD>{$data[numloop]}</TD> {* see if we should go to the next row *} {if not ($smarty.section.numloop.rownum mod $cols)} {if not $smarty.section.numloop.last} </TR><TR> {/if} {/if} {if $smarty.section.numloop.last} {* pad the cells not yet created *} {math equation = "n - a % n" n=$cols a=$data|@count assign="cells"} {if $cells ne $cols} {section name=pad loop=$cells} <TD></TD> {/section} {/if} </TR> {/if} {/section} </TABLE>