Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
tricord 22.11.2006 12:58 / 22.11.2006 16:21
Как я понимаю надо построить раскрывающееся дерево. Можно решить следующими способами:@main[] ^pSQL.server{ # достаем не более 20 корневых сообщений (parent_id == 0) $rootMessages[^getMessagesByParent[0;20]] # достаем все сообщения в тредах, которые мы только что достали $messages[^getMessagesByThread[$rootMessages]] # создаем хеш, в котором ключи — id элемента, содержание — таблица со всеми их дочерними элементами $hashTree[^createHashTree[$messages]] # cоздаем хэш со всеми родителями текущего элемента(id) включая его самого. $ParentsForIdHash[^getParentsForIdHash[$form:id]] # выводим все его элементы в виде раскрывающегося дерева дерева ^printMessagesByParent1[0] } @printMessagesByParent1[parent_id][levelmessages] ################################################################################################### # ^if($hashTree.[$parent_id]){ $levelmessages[$hashTree.[$parent_id]] <ul> ^levelmessages.menu{ ^if(def $form:mid && $form:id == $levelmessages.forum_message_id){ <li><a href="?id=$levelmessages.forum_message_id"><b>$levelmessages.title</b></a></li> }{ ^if($form:id == $levelmessages.forum_message_id){ <li><b>$levelmessages.title</b></li> }{ <li ><a href="?id=$levelmessages.forum_message_id">$levelmessages.title</a></li> } } ^if($parentsMessage.[$levelmessages.forum_message_id]){ ^printMessagesByParent1[$levelmessages.forum_message_id] } } </ul> } #end @printMessagesByParent1[]