Новости | 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[]Все части урла, не относящиеся к нашей структуре считаем параметрами для метода, отображающего контент