Есть задача создания древовидных комментов. Точнее задача решена, но использованный мной способ чтото не кажется мне надежным (есть ограничения по вложенности и кол-ву комментов в каждой ветке).
Сейчас увидел интересный класс TreeView, правда из документации так и не понял как его использовать. Если несложно, опишите в кратце, как им пользоваться, или дайте где почитать?
Этот класс - который является воплощением jquery-плагина - просто отображает списки в виде дерева папок (Вот демка: http://jquery.bassis…treeview/demo/)
Вероятно тебе придется использовать подход Nested Sets.
Ну тут у меня больше на дб канешно завязаны ограничения. А способ в как в этой статье: http://dpp.su/blog/d…-tree-comments/ (т.е. использование столбцов path и sortorder, ограничения связаны с максимальным размером их поля - 255 знаков)
Кстати на основе этого класса сделал себе красивенькие Личные сообщения на сайте. Первый уровень - это обычные входящие/исходящие сообщения, другие уровни - это ответ на сообщение (не ограниченная вложенность). Вроде нормально получилось.
в параметр data передается многомерный массив дерева следующего вида:
$date = array(
array(
'id' => 'номер_узла',
'text' => 'узел 1',
'expanded' => true, // будет развернута ветка или нет (по умолчанию)
'children' => array(
array(
'id' => 'номер_узла',
'text' => 'узел 1.1',
'expanded' => false, // будет развернута ветка или нет (по умолчанию)
),
array(
'id' => 'номер_узла',
'text' => 'узел 1.2',
'expanded' => true,
),
)
),
array(
'id' => 'номер_узла',
'text' => 'узел 2',
),
array(
'id' => 'номер_узла',
'text' => 'узел 3',
),
);
в children задаются дети как понимаешь. если параметра children нету - значит детей у узла тоже нету. есть еще дополнительные опции в виде выбора скина (немного влияет на отображение дерева), анимации разварачивания узлов и тп. но об этом сможешь в апи почитать.
Note as of April 2010: While the plugin still works as it is, it has some shortcomings, and not maintained anymore.
что он больше не будет развиваться, и автор рекомендует юзать другой - jsTree, который, возможно станет частью jui.
Собственно, быть может разработчики Yii сочтут за нужное изменение сабжевого класса (CTreeView) с целью поддержки именно jsTree или добавят новый враппер для этого нового плагина… кто в курсе и общается с ними и может предложить подобное изменение ?
Ну и так же есть такой экстеншин однако, имхо более правильнее, если новые версии фреймвёрка будут "поддерживать" живые и актуальные сторонние плагины вместо старых и неподдерживаемых