Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 14.07.2004 19:06 / 14.07.2004 19:12
Ну наконец-то сообразил.id parental_id uri title 1 0 products Продукты 2 1 monitors Мониторы 3 1 printers Принтеры 4 1 hdd Винчестеры 5 1 mice Мыши 6 1 else Прочее 7 0 support Поддержка 8 0 cooperation Сотрудничество 9 0 about О сайте 10 0 news Новости 11 10 archive Архив 12 11 new Новое в архивеВызов метода:
^tree[]Собственно код:
#==================================================================================================================================== @tree[] $sections[^table::load[/_root.cfg]] ## Выдираем из файла разделов id тех разделов, которые имеют детей $roots_hash[ ^sections.menu{ $.[$sections.parental_id][1] } ] ## Хэш по таблице $sections_hash[^sections.hash[id]] ## Хэш разделов, которые уже проверялись $show_childs_hash[^hash::create[]] ^sections.menu{ ^child_out[$sections.id] } #==================================================================================================================================== #==================================================================================================================================== @child_out[parental_id][parental_id;show_childs_temp_hash;subsections] ^if(!$show_childs_hash.$parental_id){ ## Если не проверяли этот раздел $show_childs_temp_hash[ $.$parental_id[1] ] ^show_childs_hash.add[$show_childs_temp_hash] ^if($roots_hash.$parental_id){ ## Если раздел - родитель $subsections[^sections.select($sections.parental_id == $parental_id)] <section id="$sections_hash.$parental_id.id" parental_id="$sections_hash.$parental_id.parental_id" name="$sections_hash.$parental_id.title" url="^create_link[$sections_hash.$parental_id.id]"> ^subsections.menu{ ^child_out[$subsections.id] } </section> }{ ## Если раздел - конечное дитё <section id="$sections_hash.$parental_id.id" parental_id="$sections_hash.$parental_id.parental_id" name="$sections_hash.$parental_id.title" url="^create_link[$sections_hash.$parental_id.id]"/> } } #==================================================================================================================================== #==================================================================================================================================== @create_link[id][id] $sect_table[^table::create{counter path}] $counter(0) ^while(^sections.locate[id;$id]){ ^sect_table.append{$counter $id} $id($sections.parental_id) ^counter.inc[] } ^sect_table.sort($sect_table.counter)[desc] $result[/^sect_table.menu{$sections_hash.[$sect_table.path].uri}[/]/] $sect_table[] ^memory:compact[] #====================================================================================================================================Критика всячески приветствуется.