nw
Новичок
Неограниченная вложенность структур и Smarty
Что-то не могу собразить. Как в Smarty можно вывести иерархическую структуру с неограниченным количеством вложенных элементов? Простой пример:
Есть вполне стандартная таблица в БД, где хранятся группы товаров. Упрощенно, поля в таблице такие:
id, name, prev_id. Где соответственно prev_id это id родительской группы товаров.
Задача: вывести на экран дерево групп товаров (используя смарти).
У меня возникают трудности:
1) Если количество вложенных уровней известно заранее, то конечно проблем нет, просто нужное количество раз в шаблоне пропишем <{foreach}>, но тут уровней может быть n.
2) Если генерить html сразу (без смарти), то понятно дело, можно написать функцию (генерящую HTML) и использовать ее рекурсивно, но как это сделать в смарти?
3) Все осложняется тем, что необходимо для разных уровней вложенности использовать свои шаблоны, т.е. например, все группы товаров самого верхнего уровня должны выводиться в отдельных сторках таблицы (<tr><td>{$item.name}), второй уровень вложенности должен выводиться, например, как "{$item.name}<br>".
Резюме: как реализовать получение и отображение иерархической структуры с неограниченным количеством уровней вложенности с помощью Smarty?
Что-то не могу собразить. Как в Smarty можно вывести иерархическую структуру с неограниченным количеством вложенных элементов? Простой пример:
Есть вполне стандартная таблица в БД, где хранятся группы товаров. Упрощенно, поля в таблице такие:
id, name, prev_id. Где соответственно prev_id это id родительской группы товаров.
Задача: вывести на экран дерево групп товаров (используя смарти).
У меня возникают трудности:
1) Если количество вложенных уровней известно заранее, то конечно проблем нет, просто нужное количество раз в шаблоне пропишем <{foreach}>, но тут уровней может быть n.
2) Если генерить html сразу (без смарти), то понятно дело, можно написать функцию (генерящую HTML) и использовать ее рекурсивно, но как это сделать в смарти?
3) Все осложняется тем, что необходимо для разных уровней вложенности использовать свои шаблоны, т.е. например, все группы товаров самого верхнего уровня должны выводиться в отдельных сторках таблицы (<tr><td>{$item.name}), второй уровень вложенности должен выводиться, например, как "{$item.name}<br>".
Резюме: как реализовать получение и отображение иерархической структуры с неограниченным количеством уровней вложенности с помощью Smarty?