| Новости | 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[]