вопрос
Добрый вечер, друзья.
Необходим хак, указанный здесь как http://flesha.ru/dle/dlehak/2970-hak-vyvod-kolichestva-novostey-v-menyu.html, принцип прост - что бы в меню у названия категории выводилось кол-во новостей, только для версии DLE 10.1, не подскажете, как можно подобное организовать?
Необходим хак, указанный здесь как http://flesha.ru/dle/dlehak/2970-hak-vyvod-kolichestva-novostey-v-menyu.html, принцип прост - что бы в меню у названия категории выводилось кол-во новостей, только для версии DLE 10.1, не подскажете, как можно подобное организовать?
В index.php в корне сайта над строкой
Вставить
Здесь считаем количество новостей в категориях и кешируем , так как запрос очень тяжелый
Далее после строки
Вставить
Использование
Пример в шаблоне
$tpl->set ( '{AJAX}', $ajax );
Вставить
Здесь считаем количество новостей в категориях и кешируем , так как запрос очень тяжелый
$staticcountcnews = (file_exists(ENGINE_DIR . "/cache/staticcountcnews.tmp" )) ? @file_get_contents( ENGINE_DIR . "/cache/staticcountcnews.tmp" ) : '';
if( ! $staticcountcnews ) {
$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"
);
if(count($db->get_row($sql_result))>0){
$staticcountcnews = array();
while($row = $db->get_row($sql_result)){$staticcountcnews[$row['id']] = array('new'=>intval($row['new_']),'all'=>intval($row['allnews_']));}
file_put_contents (ENGINE_DIR . "/cache/staticcountcnews.tmp",serialize($staticcountcnews), LOCK_EX);
@chmod( ENGINE_DIR . "/cache/staticcountcnews.tmp", 0666 );}
$db->free();}
if ($staticcountcnews !== false ) {
$staticcountcnews = unserialize($staticcountcnews);
if ( is_array($staticcountcnews) OR is_int($staticcountcnews) ){
foreach($staticcountcnews as $key => $val){
$show = '';
$show .= intval($staticcountcnews[$key]['all']) ? $staticcountcnews[$key]['all'] : '';
$show .= intval($staticcountcnews[$key]['new']) ? ' /+'.$staticcountcnews[$key]['new'] : '';
$tpl->set('{count-categ-'.$key.'}',$show);
}}}
Далее после строки
$tpl->compile ( 'main' );
Вставить
// для того что бы удалить теги которые не несут информации
$tpl->result['main'] = preg_replace( "#\\{count-categ-(.+?)\\}#i", "",$tpl->result['main']);
Использование
{count-categ-3} //где 3 - ид категории
Пример в шаблоне
<li><a href="#">В мире</a> {count-categ-3}</li>