Вчера столкнулся с проблемой. Имею массив, типа:
1 => array(
'title' => 'название 1',
'sub' => array(
2 => array(
'title' => название 2',
'sub' => array(
3 => array(
'title' => 'название 3'
)
)
)
)
);
Обработка его средствами smarty получилась никакая — не поддерживает он бесконечных циклов внутри какой-либо функции. На уровне PHP это сделать не проблема — нужно просто прогнать весь массив через одну функцию вывода, в которой при нахождении подэлементов вновь делать вызов этой же функции, только уже с массивом подэлементов и дальше по аналогии.
Может кто реализовывал вывод таких древовидных массивов с помощью смарти? :)
Update: Смотрим вариант, найденный мной на каком-то форуме.
Делается через отдельный шаблон дерева.
{if $tree}
{foreach from=$tree item=«item»}
{$item}
{if $item.subtree}
{include file=«tree.tpl» tree=$item.subcategories}
{/if}
{/foreach}
{/if}
В основном шаблоне вызывается так:
{include file=«tree.tpl» tree=$tree}
$tree — Это массив, имеющий древовидную структуру.
взято отсюда
1 => array(
'title' => 'название 1',
'sub' => array(
2 => array(
'title' => название 2',
'sub' => array(
3 => array(
'title' => 'название 3'
)
)
)
)
);
Обработка его средствами smarty получилась никакая — не поддерживает он бесконечных циклов внутри какой-либо функции. На уровне PHP это сделать не проблема — нужно просто прогнать весь массив через одну функцию вывода, в которой при нахождении подэлементов вновь делать вызов этой же функции, только уже с массивом подэлементов и дальше по аналогии.
Может кто реализовывал вывод таких древовидных массивов с помощью смарти? :)
Update: Смотрим вариант, найденный мной на каком-то форуме.
Делается через отдельный шаблон дерева.
{if $tree}
{foreach from=$tree item=«item»}
{$item}
{if $item.subtree}
{include file=«tree.tpl» tree=$item.subcategories}
{/if}
{/foreach}
{/if}
В основном шаблоне вызывается так:
{include file=«tree.tpl» tree=$tree}
$tree — Это массив, имеющий древовидную структуру.
взято отсюда