Выводим количество новостей определенной категории DLE


Хак позволяет выводить количество публикаций из определенной категории.
Код довольно старый, но всё ещё рабочий и полезный, думаю вам пригодится.
Очень прост в установке, с кешированием, и правильным подсчетом и выводом самой цифры.

Установка

Открываем файл engine/modules/main.php и находим строку:

$tpl->set ( '{AJAX}', $ajax );
Ниже вставляем:
$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.'|';
}
Выглядеть это дело будет так "[ +5 | 35]"
+5 - это добавленные новости
35 - общее количество

или же вставляем:
$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.'|';
}
получиться следующий вид "(35 / +5)"

Теперь открываем любой tpl файл в котором нам нужно вывести непосредственно цифру и вставляем
{count_categ_X}
x - это id нужной категории

скачать dle 11.1смотреть фильмы бесплатно


dle news catt новости подсчет количество выводим
Комментариев 1
  1. Моя база чуть ли не охренел от этого кода.
    Все работает, но он на базу такую нагрузку дает это вообще не оптимизированный код.
Информация