Константин
Guest
Рекурсия на уровне подгрузки шаблолнов в Smarty
Есть ппроблема, необходимо отобразить часть дерева (страница представлена в виде иерархии элементов, различающихся вариантами отображения) на одной странице при помощи Smarty. Листы дерева могут иметь картинки, описания, названия. При этом они могут различаться формой представления данных, у какого-то может имя быть слева от картинки у другого справа, например. Данные для отображения представляют собой ассоциативный массив, в котором храниться отображаемая часть дерева со всей необходимой информацией про каждый лист. Попытался реализовать это , написав для каждого варианта отображения листа свой шаблон, запускающий для отображения своего потомка специфичный для него шаблон и передающий ему оставшуюся часть дерева (т.е. фактически рекурсия), и наткнулся на то что возможна ситуация, когда шаблон будет несколько раз рекурсивно запускать себя. При этом данные дерева естественно терялись.
Для организации рекурсии в Smarty требуется использование специализированных компонентов. К примеру, compiler.defun.php. Нормального описания этого компонента я не нашел. Вопрос в том, можно ли организовать с его помощью вышеописанный алгоритм.
Есть ппроблема, необходимо отобразить часть дерева (страница представлена в виде иерархии элементов, различающихся вариантами отображения) на одной странице при помощи Smarty. Листы дерева могут иметь картинки, описания, названия. При этом они могут различаться формой представления данных, у какого-то может имя быть слева от картинки у другого справа, например. Данные для отображения представляют собой ассоциативный массив, в котором храниться отображаемая часть дерева со всей необходимой информацией про каждый лист. Попытался реализовать это , написав для каждого варианта отображения листа свой шаблон, запускающий для отображения своего потомка специфичный для него шаблон и передающий ему оставшуюся часть дерева (т.е. фактически рекурсия), и наткнулся на то что возможна ситуация, когда шаблон будет несколько раз рекурсивно запускать себя. При этом данные дерева естественно терялись.
Для организации рекурсии в Smarty требуется использование специализированных компонентов. К примеру, compiler.defun.php. Нормального описания этого компонента я не нашел. Вопрос в том, можно ли организовать с его помощью вышеописанный алгоритм.