Вывод количества новостей в меню
Подсчет количества новостей в категории плюс добавленные за сегодня.
Что интересного в хаке:
1) кэширование количества новостей;
2) возможность убирать «0», если новостей за сегодня по категории нет;
3) исправлен баг неточного подсчета количества новостей, если новость в нескольких категориях.
Установка:
1. В файле index.php находим:
$tpl->set ( '{AJAX}', $ajax );
И выше вставляем такой код, если хотим чтоб количество выводилось так - [ +6 | 20]:
$sql_result = $db->query("select ct.id, (select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_, (select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_ from ". PREFIX ."_category ct" ); $count_news_of_category = ''; while($row = $db->get_row($sql_result)) { if( $row['new_'] == '0') {$news_now = '';} else {$news_now = '<font color="#CC0000">+'.$row['new_'].'</font> | ';}; $t = '[ '.$news_now.$row['allnews_'].' ]'; $tpl->set('{count_categ_'.$row['id'].'}', $t); $count_news_of_category .= $row['id'].'#'.$t.'|'; }
Или выше вставляем такой код, если хотим чтоб количество выводилось так - (255/+6):
$sql_result = $db->query("select ct.id, (select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_, (select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_ from ". PREFIX ."_category ct" ); $count_news_of_category = ''; while($row = $db->get_row($sql_result)) { if( $row['new_'] == '0') {$news_now = ')';} else {$news_now = '/+'.$row['new_'].')';}; $t = '('.$row['allnews_'].$news_now; $tpl->set('{count_categ_'.$row['id'].'}', $t); $count_news_of_category .= $row['id'].'#'.$t.'|'; }
2. В меню вставляем куда нужно:
{count_categ_1}
Где 1 - id номер соответсвующий в меню категории или подкатегории.
Проскакивает 1 запрос на БД при просмотре любой страницы! Очень удобно если хотите организовать файловый архив, где новости добавляются чаще чем на блогах.