| Новости | 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}
}
}
}Можно ли как-нибудь модифицировать запрос, чтобы обойтись без такого "страшного" перебора таблицы?