| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
balin 02.02.2004 11:28 / 02.02.2004 12:11
Добавляем в sections.cfg (из Урока 1) еще одну колонку parent (это позволит использовать вложенную структуру сайта, например /about/company/)@main[]
#загружаем структуру
$pages[^table::load[sections.cfg]]
#создаем hash параметров
$url_params[^hash::create[]]
#разбиваем строку урл
$str[$request:uri]
$dirs[^str.split[/;v]]
#сначала верхняя отстутсвует
$parent[0]
#перебор частей урла
^dirs.menu{
$dir[$dirs.piece]
^if( $dir ne '' ){
#есть ли в нашей структуре странца
^if( ^pages.locate[uri;$dir] && $pages.parent eq $parent ){
#если есть
$cur_page[$pages.uri]
$parent[$pages.section_id]
}{
#иначе определяем как параметры
$cn(^url_params._count[] + 1)
$url_params.$cn[$dir]
}
}
}
#теперь готовим контент
^switch[$cur_page]{
^case[news]{^news[$url_params]}
....
^case[DEFAULT]{^error404[]}
}
#end @main[]
#метод для отображения новостей
@news[params]
#метод знает что параметры должны быть датой,
#поэтому создаем дату из парметров к sql виду
#за год (получается 2004-)
^if( def $params.1 ){$date[${params.1}-]}
#за месяц (получается 2004-02-)
^if( def $params.2 ){$date[${date}${params.2}-]}
#за день (получается 2004-02-02)
^if( def $params.3 ){$date[${date}-$params.3]}
#а дальше запрос
^connect[$connect_string]{
$news[^table::sql{select * from news ^if(def $date){ where date like '$date%'} order by date desc}]
}
^if( $news is table && ^news.count[] > 0 ){
^news.menu{
#выод новостей ....
$news.date | <b>$news.title</b><br>
}
}{
#новость не найдена
^error404[]
}
#end news[]
@error404[]
ошибка 404
#end error404[]Все части урла, не относящиеся к нашей структуре считаем параметрами для метода, отображающего контент