| Новости | 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[]
#====================================================================================================================================Критика всячески приветствуется.