Горбушка
Ищу её...
- Регистрация
- 2 Май 2008
- Сообщения
- 3.444
- Реакции
- 2.527
- Автор темы
- #1
Не так давно ко мне обратился челвоек и заказал модуль. Т.к. я просрочил срок выполнения, денег не взял, но и код выкладываю в публичный доступ. Хотя за такое и денег брать стыдно.
Суть:
Человеку потребовалось выводить архив (блок на сайте в формате Месяц-Год) только из 1 категории. Соответсвенно при клике на месяц выдавать список новостей тоже из 1 категории.
Реализуем для ДЛЕ 9.7:
Файл \engine\modules\calendar.php ищем (213 строка) :
Заменяем на:
Файл \engine\engine.php ищем (514 строка) :
Заменяем на:
Т.е. в запросы добавляем AND `category` = 2, де 2 - нужная нам категория.
Обновляем кэш, готово.
Решение сделано за 10 минут, буду доделовать. Выложил по 2 причинам:
1) Не удобно задерживать заказ и дальше
2) Интересны Ваши идеи по доработке
Известные ошибки и недоработки:
1) Категория задаётся жёстко, а не в конфиге
2) Работает только если выключены мультикатегории
3) Не выводит статьи из подкатегорий
Дорабатывать буду как появится больше свободного времени. Ориентир - следующая неделя. Хотя слово "дорабатывать" тут не подходит, скорее делать по человечески, а не экстренный вариант.
Суть:
Человеку потребовалось выводить архив (блок на сайте в формате Месяц-Год) только из 1 категории. Соответсвенно при клике на месяц выдавать список новостей тоже из 1 категории.
Реализуем для ДЛЕ 9.7:
Файл \engine\modules\calendar.php ищем (213 строка) :
Код:
$db->query( "SELECT DATE_FORMAT(date,'%b %Y') AS m_date, COUNT(id) AS cnt FROM " . PREFIX . "_post WHERE approve=1" . $where_date . " ЦРУGROUP BY m_date ORDER BY date desc" );
Код:
$db->query( "SELECT DATE_FORMAT(date,'%b %Y') AS m_date, COUNT(id) AS cnt FROM " . PREFIX . "_post WHERE approve=1" . $where_date . " AND `category` = 2 GROUP BY m_date ORDER BY date desc" );
Код:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date;
Код:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-01' AND `category` = 2 AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-{$month}-01' AND `category` = 2 AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date;
Обновляем кэш, готово.
Решение сделано за 10 минут, буду доделовать. Выложил по 2 причинам:
1) Не удобно задерживать заказ и дальше
2) Интересны Ваши идеи по доработке
Известные ошибки и недоработки:
1) Категория задаётся жёстко, а не в конфиге
2) Работает только если выключены мультикатегории
3) Не выводит статьи из подкатегорий
Дорабатывать буду как появится больше свободного времени. Ориентир - следующая неделя. Хотя слово "дорабатывать" тут не подходит, скорее делать по человечески, а не экстренный вариант.