Вот на днях бороздя просторы нета нарыл такой вот интересный на мой взгляд хак для
DLE. К сожалению автор мне не известен.
Позволяет проставить количество новостей за сегодня и общее количество по конкретной категории в меню навигации или любом другом месте сайта. Есть возможность ставить количество новостей в каком угодно виде. Кроме того можно проставлять количество новостей в подкаталогах любой вложености. Единственное, что нужно знать для этого - это id категории.
Примеры отображения в меню навигации (отображение зависит только от Вашей фантазии)
Что нового:1) кэширование количества новостей;
2) возможность убирать «0», если новостей за сегодня по категории нет;
3) исправлен баг неточного подсчета количества новостей, если новость в нескольких категориях.
УСТАНОВКА для версий DLE8.2-8.51) Создаем новый php файл, и вставить в него следущий код:
<?php
/********* Количество новостей в главном меню **********/
$count_news = dle_cache( "count_news_of_category", $config[’skin’] );
if( !$count_news )
{
//кэш с количеством новостей пуст
$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))
{
$t = $row['new_'].'|'.$row['allnews_'];
$tpl->set('{count_categ_'.$row['id'].'}', $t);
$count_news_of_category .= $row['id'].'#'.$t.'¦';
}
/**В кэш **/
create_cache( 'count_news_of_category', $count_news_of_category);
$db->free();
}
else
{
//достанем количество новостей из кэша
$arr_newscount = explode('¦', $count_news);
for ($i = 0; $i <= count($arr_newscount) - 2; $i++)
{
$arr_onenews = explode('#', $arr_newscount[$i]);
$tpl->set('{count_categ_'.$arr_onenews[0].'}', $arr_onenews[1]);
}
}
/************************************/
?>
Сохроняем его под именем news_count.php в engine/modules/
2) Открываем index.php
находим
require_once ROOT_DIR . '/engine/init.php';
ниже вставляем
require_once ROOT_DIR . '/engine/modules/news_count.php';
3) Открываем файл ./engine/modules/addnews.php
находим
$thistime = date( "Y-m-d H:i:s", $added_time );
ниже вставляем
clear_cache('count_news_of_category');
4) Открываем /engine/ajax/editnews.php
находим
clear_cache( 'news_' );
ниже вставляем
clear_cache('count_news_of_category');
5) В шаблоне main.tpl ставите теги на количество новостей.
Тег выглядит так: {count_categ_2}, где 2 – это id категории.
Например у меня в шаблоне main.tpl, где я отображаю менюшку, будет выглядит так:
[url=http://dvigov.com/nashe]Наше {count_categ_2}[/url]