Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: разработка для Web > Template Toolkit: вывести дерево |
Автор: Logo 15.5.2010, 12:18 |
Как помощью Template Toolkit выводить древовидные структуры (дерево комментариев)? |
Автор: Paul56 16.5.2010, 10:52 |
Попробую высказать своё мнение а Ваш вопрос. Мне кажется, что TT это просто удобный шаблонизатор и выводить древовидные структуры наверное им будет не совсем корректно. Какой уровень вложенности фиксированный или бесконечный... Все манипуляции по организации структуры данных и как они будут переданы в ТТ вы должны определить сами внутри скрипта. Разобрать родителей на детей это должен сделать Ваш скрипт и только потом передовать в ТТ. Это сугубо моё личное мнение. Учтите, что, если нагрузка на сервер приличная то ТТ относят к тяжеловесам. |
Автор: Logo 16.5.2010, 11:40 |
В TT передается уже готовое дерево. Организовывается в виде дерева, т.к. надо сделать дерево комментариев, вроде youtube, livejournal, habrahabr, где пользователь может ответить на коментарий другого пользователя, и ветку комментариев можно скрыть/раскрыть. Уровень вложенности желательно любой. |
Автор: Paul56 17.5.2010, 07:51 |
Покажите дамп структуры который вы передаёте в ТТ желательно через [% USE Dumper %] [% Dumper.dump(YouVars) %] |
Автор: Logo 17.5.2010, 09:39 | ||
Вот:
|
Автор: Paul56 17.5.2010, 10:18 | ||||
а где id детей ;) ?
скрипт
|
Автор: Logo 17.5.2010, 17:22 |
Да, у каждого комментария есть id и parent_id. Можете пояснить код? Что должна возвращать функция с рекурсией, контент элемента? И где $vars используется? |
Автор: Paul56 18.5.2010, 09:21 | ||||
$vars используется тут:
Функция с рекурсией должна определять есть ли потомок у ответа или темы, если есть уходим ещё глубже и т.д. Погуглите на тему рекурсия думаю найдёте ответ. |
Автор: Logo 18.5.2010, 21:43 | ||
По моему тут слишком мало кода.
должно как - то вызватся рекурсивно, но как? В этом то и основаная проблемма. |
Автор: gcc 19.5.2010, 01:31 |
я это делал давненько только на HTML::Template тут вот товарищ http://unixforum.org/index.php?showtopic=85944&hl= показал пример на HTML::Template аналогично точно так же может и везде... |
Автор: Paul56 19.5.2010, 09:13 |
Да согласен с gcc, тогда будет достаточно одного цикла в шаблоне. |
Автор: Logo 19.5.2010, 17:49 |
Всем спасибо, решение нашлось http://www.perlmonks.org/?node_id=570059 |