топ новостей, отдельно для каждой категории
Хак выводит в всякой категории топ новинок всего той категории в коей вы находитесь сейчас. Учитываются также подкатегории, если таковы жрать.
Для работы хака правим файл /engine/modules/topnews.php
if ($category_id) {
if ($config['show_sub_cats']) $get_cats = get_sub_cats($category_id);
else $get_cats = $category_id;
if ($config['allow_multi_category']) $where_category = "category regexp '[[:<:]](" . $get_cats . ")[[:>:]]'";
else {
if ($config['show_sub_cats']) {
$get_cats = str_replace ( "|", "','", $get_cats );
$where_category = "category IN ('" . $get_cats . "')";
} else $where_category = "category = '{$get_cats}'";
}
}
if ($config['show_sub_cats']) $get_cats = get_sub_cats($category_id);
else $get_cats = $category_id;
if ($config['allow_multi_category']) $where_category = "category regexp '[[:<:]](" . $get_cats . ")[[:>:]]'";
else {
if ($config['show_sub_cats']) {
$get_cats = str_replace ( "|", "','", $get_cats );
$where_category = "category IN ('" . $get_cats . "')";
} else $where_category = "category = '{$get_cats}'";
}
}
Дальше в запрос
$db->query( "SELECT id, title, date, alt_name,short_story, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 12 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,9" );
Меняем на
if ($where_category !='') $where_category ='AND '.$where_category;
$db->query( "SELECT id, title, date, alt_name,short_story, category, flag FROM " . PREFIX . "_post WHERE approve='1' {$where_category} AND date >= '$this_month' - INTERVAL 12 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,9" );
$db->query( "SELECT id, title, date, alt_name,short_story, category, flag FROM " . PREFIX . "_post WHERE approve='1' {$where_category} AND date >= '$this_month' - INTERVAL 12 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,9" );
И в финале осталось подправить запись и чтение с кеша. Итак меняем строчку
$topnews = dle_cache( "topnews", $config['skin'] );
На
$topnews = dle_cache( "topnews-".$category_id, $config['skin'] );
И также меняем запись в кеш. Вот эту строчку
create_cache( "topnews", $topnews, $config['skin'] );
Меняем на
create_cache( "topnews-".$category_id, $topnews, $config['skin'] );
Пользуемся.