| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 03.02.2006 20:55
т.к. вывести всё дерево требуется один раз, а вот получать uri объекта по id - тучу раз (ну... по крайней мере у меня). может быть именно поэтому у egr-а данные помещаются в хеш.@get_uri[id]
^if($id && $items_hash.$id){
^rem{ *** если id != 0 и о таком id есть запись в хеше *** }
^if(def $items_hash.[$id].uri){
^rem{ *** если uri уже вычислен - возвращаем его *** }
$result[$items_hash.[$id].uri]
}{
^rem{ *** не вычислен - вычисляем *** }
$result[^if($items_hash.[$id].parent_id){^get_uri[$items_hash.[$id].parent_id]}/$items_hash.[$id].path]
^rem{ *** записываем вычисленное чтобы больше не заниматься этими глупостями *** }
$items_hash.[$id].uri[$result]
}
}{
^throw[uri.missing;$id;Id '$id' not found]
}
#end @get_uri[]P.S. код не проверял