Счетчик добавленных новостей

Счетчик добавленных новостей

Хак для DLE, позволяющий выводить счетчик добавленных новостей для определенной их категории. Может отображать количество всех новостей в категории или только добавленных за сегодня.


Установка:
1. Открыть engine/modules/main.php и найти:
$tpl->compile ( 'main' );

Добавить выше:
$tpl->copy_template = preg_replace_callback( "#{cat_all\:(.+?)}#is", function($data) use ($db, $config) {
    return catCountFunction($data, $config, $db); }, $tpl->copy_template );
$tpl->copy_template = preg_replace_callback( "#{cat_today\:(.+?)}#is", function($data) use ($db, $config) {
    return catCountFunction($data, $config, $db, true); }, $tpl->copy_template );

2. Открыть engine/modules/functions.php и найти:
function get_url($id) {

Добавить выше:
function catCountFunction($cat_id, $config, $db, $curdate = false) {     $cat_ids = array();     if(substr_count($cat_id[1], ","))         $cat_ids = explode(",", $db->safesql(trim(strip_tags(stripslashes($cat_id[1])))));     else         $cat_ids[] = is_numeric($cat_id[1]) ? intval($cat_id[1]) : false;     if(!count($cat_ids)) return;     $cache_cat_news = false;     $cache_cat_news = dle_cache("news_acn" . intval($curdate), $config['skin'] . implode($cat_ids), false);         if ($config['allow_multi_category'])         $cat_query = "category regexp '[[:<:]](" . implode ( '|', $cat_ids ) . ")[[:>:]]'";     else         $cat_query = "category IN ('" . implode ( "','", $cat_ids ) . "')";     if (!$cache_cat_news)     {         if($curdate == false)             $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$cat_query}");         else             $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$cat_query} AND date LIKE '".date("Y-m-d")."%'");         $newscount = ($row['count'] > 0) ? intval($row['count']) : false;         if($newscount)             $cache_cat_news = $newscount;         create_cache("news_acn" . intval($curdate), $cache_cat_news, $config['skin'] . implode($cat_ids), false);     }     return ($cache_cat_news > 0 ? (($curdate == true) ? "+" : "") . $cache_cat_news : ""); }

3. В нужное место шаблона добавить:
{cat_all:1} или {cat_all:1,2,3,4} - выведет количество новостей за все время с этих категорий.
{cat_today:1} или {cat_today:1,2,3,4} - выведет количество новостей за сегодня с этих категорий.

Готово!
 
Версия DLE: 13.х
Автор: LazyDev
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.

Комментариев 4

deafmovie 26 июля 2020 20:56
Подскажите, пожалуйста, как реализовать подобное на DLE 10.х
Многие будут благодарны. (обновление движка пока не в планах. многое завязано под самопис). Благодарю. Подписан и буду ждать.
LazyDev 20 марта 2020 14:33
Oxigen, не лучший способ реализации подобного для большой базы новостей и частого использования тега подсчета.
Oxigen 20 марта 2020 11:33
LazyDev, можно узнать почему?
--------------------
Всё, что вы напишите, будет использовано против вас при показе контекстной рекламы :)
LazyDev 20 марта 2020 02:03
Я не рекомендую это использовать.