Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Template Toolkit: вывести дерево 
:(
    Опции темы
Logo
Дата 15.5.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Как помощью Template Toolkit выводить древовидные структуры (дерево комментариев)?
PM MAIL   Вверх
Paul56
Дата 16.5.2010, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Попробую высказать своё мнение а Ваш вопрос.

Мне кажется, что TT это просто удобный шаблонизатор и выводить древовидные структуры наверное им будет не совсем корректно.
Какой уровень вложенности фиксированный или бесконечный...
Все манипуляции по организации структуры данных и как они будут переданы в ТТ вы должны определить сами внутри скрипта.
Разобрать родителей на детей это должен сделать Ваш скрипт и только потом передовать в ТТ.

Это сугубо моё личное мнение.
Учтите, что, если нагрузка на сервер приличная то ТТ относят к тяжеловесам.
PM ICQ   Вверх
Logo
Дата 16.5.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



В TT передается уже готовое дерево. Организовывается в виде дерева, т.к. надо сделать дерево комментариев, вроде youtube, livejournal, habrahabr, где пользователь может ответить на коментарий другого пользователя, и ветку комментариев можно скрыть/раскрыть. Уровень вложенности желательно любой.
PM MAIL   Вверх
Paul56
Дата 17.5.2010, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Покажите дамп структуры который вы передаёте в ТТ
желательно через           
[% USE Dumper %]
[% Dumper.dump(YouVars) %]

Это сообщение отредактировал(а) Paul56 - 17.5.2010, 07:52
PM ICQ   Вверх
Logo
Дата 17.5.2010, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Вот:
Код

$VAR1 = [
    {
        'name' => 'name1',
        'content' => '...',
        'children' => [
            {
                name => 'name1.1'
                content => '...',
            },
            {
                name => 'name1.2',
                content => '...',
            },
        ],    
    },
    {
        'name' => 'name2',
        'content' => '...',
    },
];

PM MAIL   Вверх
Paul56
Дата 17.5.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



а где id детей ;)  ?

Код

[% FOREACH item IN node %]
[% Nchildren = sub_children(item.id) %]
[% END %]


скрипт
Код

$vars = {
sub_children => {return функция_с_рекурсией($_[0])}
}





PM ICQ   Вверх
Logo
Дата 17.5.2010, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Да, у каждого комментария есть id и parent_id.
Можете пояснить код? Что должна возвращать функция с рекурсией, контент элемента? И где $vars используется?
PM MAIL   Вверх
Paul56
Дата 18.5.2010, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Цитата(Logo @ 17.5.2010,  17:22)
Да, у каждого комментария есть id и parent_id.
Можете пояснить код? Что должна возвращать функция с рекурсией, контент элемента? И где $vars используется?

$vars используется тут:

Код

$tt->process('путь к шаблону', $vars) || die $tt->error;


Функция с рекурсией должна определять есть ли потомок у ответа или темы, если есть уходим ещё глубже и т.д.
Погуглите на тему рекурсия думаю найдёте ответ.

PM ICQ   Вверх
Logo
Дата 18.5.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



По моему тут слишком мало кода. 
Код

[% FOREACH item IN node %]
[% Nchildren = sub_children(item.id) %]
[% END %]


должно как - то вызватся рекурсивно, но как? В этом то и основаная проблемма.

Это сообщение отредактировал(а) Logo - 18.5.2010, 21:43
PM MAIL   Вверх
gcc
Дата 19.5.2010, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



я это делал давненько только на HTML::Template

тут вот товарищ http://unixforum.org/index.php?showtopic=85944&hl= 
показал пример на HTML::Template

аналогично точно так же может и везде...


Это сообщение отредактировал(а) gcc - 19.5.2010, 01:33
PM WWW ICQ Skype GTalk Jabber   Вверх
Paul56
Дата 19.5.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Да согласен с gcc, тогда будет достаточно одного цикла в шаблоне.

PM ICQ   Вверх
Logo
Дата 19.5.2010, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Всем спасибо, решение нашлось http://www.perlmonks.org/?node_id=570059
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.