Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
dima 30.08.2004 13:50
Прошу прощения за новый подобный тред, но тот, что я создавал ушел далеко вниз...id pid name 1 0 name_1 2 0 name_2 3 0 name_3 4 0 name_4 5 1 name_1_1 6 1 name_1_2 7 1 name_1_3 8 1 name_1_4 9 2 name_2_1 10 2 name_2_2 11 2 name_2_3 12 2 name_2_4 13 3 name_3_1 14 3 name_3_2 15 3 name_3_3 16 3 name_3_4 17 15 name_15_1 18 15 name_15_2 19 15 name_15_3из нее нужно сделать дерево:
@main[] $tree[^table::load[tree.cfg]] ############### @tree[parent_id][level] $level[^tree.select($parent_id == $tree.pid)] <ul> ^level.menu{ $id($form:id) $parents[^hash::create[]] $str_hash[^tree.hash[id]] $pid($id) ^while($pid){ ^parents.add[ $.[$pid][$pid] ] $pid($str_hash.[$pid].pid) } ^if($form:id == $level.id){ <li>$level.name</li> }{ <li><a href="?id=$level.id">$level.name</a></li> } ^if($parents.[$level.id]){ ^tree[$level.id] } } </ul> ################все работает как часы
# это не тестовый код, вместо него, но по такому же алгоритму я # использую класс с такими параметрами: # 1. беру из базы таблицу # 2. делаю из нее хеш # 3. формирую все полные uri (в базе храняться без слешей и родительских путей) # 4. кладу это все в хеш и рекурсивно вызываюа проблема вот в чем, id родителей ищется по $form:id, это я делал для того, чтобы не создавть кучу папок.