Эта тема на forum.dklab.ru


y0prst: Построчный вывод данных в несколько столбцов в smarty
Понадобилось вот сделать такую вещь. Сделал первым придуманным методом :)
Но результат уж больно громоздкий:
{assign var="nColumns" value="2"}
{math equation="100/x" x=$nColumns assign="percent"}
<table summary="Таблица" cellpadding="0" cellspacing="0" width="100%">
{assign var="nColumn" value=0}
{foreach name=foreach from=$list item="item"}
{math equation="(x-1)%y+1" x=$smarty.foreach.foreach.iteration y=$nColumns assign="nColumn"}
{if $nColumn eq 1}
<tr>
{/if}
<td width="{$percent}%">{$item}</td>
{if $nColumn eq $nColumns}
</tr>
{/if}
{foreachelse}
<tr><td></td></tr>
{/foreach}
{if ($nColumn gt 0 ) and ($nColumn lt $nColumns)}
</tr>
{/if}
</table>

Может, это можно попроще организовать?
Алексей С.:
в два столбца надо? вот как то так

<table>
{foreach name=cat from=$data item=value}
{if $smarty.foreach.cat.iteration mod 2}
<tr>
<td>1</td>
{else}
<td>2</td>
</tr>
{/foreach}
</table>

Антон Макаренко:
y0prst
Опишите постановку задачи словами, а то что-то не могу въехать %)
y0prst:
Антон Макаренко
Я просто в топике это написал, а в теле сообщения - поленился.
Ну на всякий случай разъясню :)
Имеем $data - произвольный массив, допустим там отсортированные целые числа, начиная с нуля.
нужно вывести это дело в таком виде:
0 1 2
3 4 5
6 7 8
9 10 11

Алексей С.
Спасибо за mod :)
Антон Макаренко:
Надеюсь, что въехал-таки, ибо:

// ...
$smarty->assign('data',array(0,1,2,3,4,5,6,7,8,9,10,11));
// ...


{html_table loop=$data cols=3 table_attr='summary="Таблица" cellpadding="0" cellspacing="0" width="100%"'}


p.s.
v.2.6.7
y0prst: Ассоциативные массивы в Smarty.
Антон Макаренко
+1. Век живи, век учись :)
Одно но. Сейчас пишу проект с использованием Templier. Вместо чисел 0, 1, 2, ... 11 должны выводиться информационные блоки, дизайн которых хранится в шаблоне.
Пока не могу придумать, как использовать html_table в моём случае. Ведь нужен массив уже сформированных блоков. А сделать массив в шаблоне smarty, насколько я понимаю, невозможно. Вот такая конструкция -- {assign var="data[1]" value=$smarty.capture.item} -- создаёт скалярную переменную $data[1], которая с массивом $data не имеет ничего общего.
y0prst:
Оказывается, на smarty.php.net уже лежит готовый пример :)
y0prst:
Остановился на table_foreach. Никаких арифметических операций, всё просто и прозрачно.
A2L:
Кого интересует еще данноя тема загляните на сайтик: http://smarty.incutio.com/?page=SmartyPlugins, в частности: http://smarty.incutio.com/?page=HtmlTableAdvPlugin

Эта тема на forum.dklab.ru