Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
nkostya 21.03.2004 10:12 / 21.03.2004 10:13
Итак, требуется сделать "календарь" на года/месяца, за которые уже опубликованны новости, но если пользователь - администратор, то ему должен быть показан календарик даже с неопубликованными новостями, и месяца, за которые новости не опубликованны должны помечаться, допустим другим цветом...news_id > dt_published > is_published > и т.д.Я делаю так:
$calendar[^MAIN:pSQL.sql[table][ SELECT ^MAIN:pSQL.date_format[dt_published;%Y] as dt_year, ^MAIN:pSQL.date_format[dt_published;%m] as dt_month, is_published as all_is_published FROM news WHERE ^if(!^MAIN:check_right(1)(4|8)){is_published = '1' AND} ^rem{ *** просто в одной таблице хранятся новости для разных нужд *** } news_type_id = '^news_type_id.int(1)' GROUP BY dt_year DESC, dt_month DESC, is_published ASC ]] ^if(!^MAIN:check_right(1)(4|8)){ ^rem{ *** Если пользователь не имеет право на изменение/удаление новостей *** } $calendar_hash[^calendar.hash[dt_year][$.distinct[tables]]] }{ $calendar_hash[^hash::create[]] ^calendar.menu{ ^if(!$calendar_hash.[$calendar.dt_year]){ $calendar_hash.[$calendar.dt_year][^table::create[$calendar;$.limit(0)]] } ^if(!^calendar_hash.[$calendar.dt_year].locate[dt_month;$calendar.dt_month]){ ^calendar_hash.[$calendar.dt_year].append{$calendar.dt_year $calendar.dt_month $calendar.all_is_published} } } }Можно ли как-нибудь модифицировать запрос, чтобы обойтись без такого "страшного" перебора таблицы?