Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие движки / фрейморки > smarty и рекурсия. Помогите!!!


Автор: molecula 10.1.2006, 18:28
Ребята, помогите! столкнулась с проблемой - вывод осуществляется рекурсивной функцией, мне надо сделать шаблон, который тоже инклюдит сам себя..
Собственно вопрос: как сделать "рекурсивный" шаблон...

Автор: Mal Hack 10.1.2006, 18:39
Как сам шаблон вызывается?
Вот и вставь во внутрь. Должно сработать.

Автор: Cheba 10.1.2006, 19:37
Делается через отдельный шаблон дерева.
Код
{if $tree}
<ul>
{foreach from=$tree item="item"}
    <li>{$item}
        {if $item.subtree}
            {include file="tree.tpl" tree=$item.subcategories}
        {/if}
    </li>
{/foreach}
</ul>
{/if}


В основном шаблоне вызывается так:
Код
{include file="tree.tpl" tree=$tree}


$tree - Это массив, имеющий древовидную структуру.

Автор: molecula 11.1.2006, 09:55
спасибо огромное!!! сейчас буду пробовать, расскажу о результате =)

Автор: molecula 11.1.2006, 16:17
ура! все получилось! спасибо =)

Автор: Dim4n 17.8.2006, 14:57
Cheba
подскажи какой массив мне передать в переменную tree ?

Автор: Cheba 27.8.2006, 09:16
Это должно быть что-то в этом роде.
Код
$a = array(
    'item1' => array(
        'val1', 'val2', 
        'subtree' => array(1, 2, 3, 4)
    ),
    'item2' => array(
        'val1', 'val2', 
        'subtree' => array(1, 2, 3, 
            'subtree' => array(1, 2, 3, 4, 5),
        4)
    )
)

Можешь немного переделать чтобы строить поддерево по типу элемента, а не по наличию какого-то конкретного индекса.

Автор: _seroga 6.5.2007, 18:12
Вариант для обычного двумерного массива типа [id, id_parent, value], у корневых элементов id_parent пустой.

основной шаблон:
Код

{include file='tree.tpl' id_parent=''}


шаблон дерева:
Код

<ul>
{foreach from=$tree item=item}
    {if ($id_parent == $item.id_parent)}
      <li>{$item.value}</li>
      {include file='tree.tpl' id_parent=$item.id_section}
    {/if}
{/foreach}
</ul>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)