| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Артём 02.02.2003 16:55 / 02.02.2003 16:58
для себя щас пытаюсь опнять как это работает. Почти все понял, кроме# работа с URI - формирование списка всех URI сайта
@CLASS
uri
#######
# конструктор
@init[]
$items[^table::create{id parent_id dir title
1 0 hardware Железо
11 1 computers Компьютеры
12 1 printers Принтеры
121 12 laser Лазерные
122 12 ink Струйные
2 0 software Программное обеспечение
21 2 os Операционные системы
22 2 editors Текстовые редакторы
3 0 news Новости}]
# входная таблица разделов
$self.items[$items]
# создание хэша из таблицы для ускорения поиска
$items_hash[^items.hash[id]]
#######
# форм. таблицы соответствий uri для всех разделов сайта
@get_all_site_uri[][uri]
$result[^table::create{uri id title}]
$uri{^if(def $items_hash.[$items.id].url){$items_hash.[$items.id].url}{^get_uri[$items.id]}}
^items.menu{
^result.append{$uri $items.id $items.title}
}
#######
# получение uri раздела по заданному id
@get_uri[id][parent_id;uri]
$parent_id($id)
^while($parent_id){
^if($items_hash.[$parent_id]){
$uri[$items_hash.[$parent_id].dir/$uri]
$items_hash.[$id].url[$uri]
$parent_id($items_hash.[$parent_id].parent_id)
}{
$parent_id(0)
}
}
$result[/$uri]
@show_uri[]
$site[^get_all_site_uri[]]
<table border=1 cellspacing=0>
^site.menu{
<tr>
<td class=defont>$site.uri</td>
<td class=defont>$site.id</td>
<td class=defont>$site.title</td>
</tr>
}
</table>не могу понять, почему в функции @get_all_site_uri[][uri] $uri{^if(def $items_hash.[$items.id].url){$items_hash.[$items.id].url}{^get_uri[$items.id]}}
^items.menu{
^result.append{$uri $items.id $items.title}
}переменная $uriопределяется не в ^items.menu
@get_all_site_uri[][uri]
$result[^table::create{uri id title}]
^items.menu{
$uri{^if(def $items_hash.[$items.id].url){$items_hash.[$items.id].url}{^get_uri[$items.id]}}
^result.append{$uri $items.id $items.title}
}самое странное, что так пробую - результат тот же. Кто нибудь объясните почему так???