"Архив новостей" на DLE

P5
На сайте с 03.10.2011
Offline
12
2863

Подскажите, пожалуйста, возможное решение.Стандартный «Архив новостей» выдает новости со ВСЕХ категорий общей лентой. Как получить архив новостей только из одной категории? Снимание в админке галки «не публиковать на главной» на вывод архива новостей не влияет, выводит ВСЕ новости со ВСЕХ категорий по датам.

Apelsex
На сайте с 04.09.2010
Offline
14
#1

Там ещё есть "Расширенный поиск новостей" и есть возможность фильтровать по категориям.....

hYPER-ok
На сайте с 09.10.2010
Offline
71
#2

В файле engine/modules/calendar.php найдите строку примерно 216 (9.3)

$db->query( "SELECT DATE_FORMAT(date,'%b %Y') AS m_date, COUNT(id) AS cnt FROM " . PREFIX . "_post WHERE approve" . $where_date . " GROUP BY m_date ORDER BY date desc" );

и сравнив с вашей версией файла/движка получите примерно такую


$allow = array(17);
$db->query( "SELECT DATE_FORMAT(date,'%b %Y') AS m_date, category, COUNT(id) AS cnt FROM " . PREFIX . "_post WHERE approve" . $where_date . " AND category IN(" . implode(',',$allow ) . ") GROUP BY m_date ORDER BY date desc" );

Надеюсь, работать будет.

hYPER-ok добавил 03.10.2011 в 20:14

Apelsex:
Там ещё есть "Расширенный поиск новостей" и есть возможность фильтровать по категориям.....

И как это Вы додумались до расширенного поиска?

N9
На сайте с 04.07.2011
Offline
11
#3

Судя по тому, что никто в теме не отписался, заработало у всех, кроме меня :)

После вышеуказанных исправлений в engine/modules/calendar.php в блоке с архивом действительно показывается правильное количество новостей только из нужного раздела за месяц. Однако выводятся новости по прежнему из всех разделов.

В старых версиях движка надо было править еще файл: /engine/ajax/calendar.php

А именно вот в этих двух строках добавлять необходимую категорию:

209 строка

$sql = "SELECT DISTINCT DAYOFMONTH(date) as day FROM " . PREFIX . "_post WHERE date >= '{$year}-{$month}-01' AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH" . $approve . $where_date;

218 строка

$sql = "SELECT DISTINCT DAYOFMONTH(date) as day FROM " . PREFIX . "_post WHERE date >= '{$this_year}-{$this_month}-01' AND date < '{$this_year}-{$this_month}-01' + INTERVAL 1 MONTH AND approve" . $where_date;

Пробовал на DLE 9.3/9.4 - пока безрезультатно. Может кто сталкивался с подобным?

N9
На сайте с 04.07.2011
Offline
11
#4

Нашел некое решение своей проблемы на форуме за 2008 год, но мне оно не совсем подходит.

Смысл заключается в том, что ненужные категории не показываются не только при просмотре архива, но так же не выводятся и на главной странице, при этом отображаясь в популярных и похожих новостях.

Для этого в файле engine/engine.php надо после строки:

if ($user_group[$member_id['user_group']]['allow_short']) $stop_list = "";

вставить:

$stop_list .= "`category` IN (3,4,5) AND ";

где вместо 3,4,5 указать категории, которые должны показываться в архиве.

Проблема заключается в том, что не перечисленные в этой строке категории отсутствуют не только в архиве и на главной, но так же не выводятся в /tags/xxx/ и /catalog/xxx/ при наличии символьного кода, что мне абсолютно не подходит.

Для чего это все нужно: на сайте, предположим, имеется две категории - статьи и каталог. Первая категория постоянно добавляется и вот для нее и нужен архив по месяцам, каталог же неизменен, но материал из него должен обязательно показываться в /tags/xxx/ или /catalog/xxx/.

Да, и просьба - отпишитесь, если у кого-то заработал способ, указанный hYPER-ok. Возможно все дело в моих кривых руках...

hYPER-ok
На сайте с 09.10.2010
Offline
71
#5

Уж легче модуль какой-нибудь накалякать, а не юзать этот "Архивы".

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий