Количество новостей в категории для DLE

Количество новостей в категории для DLE

Благодаря хаку Количество новостей в категории для DLE вы сможете слегка расширить возможности скрипта и внести новые функции в ваш сайт. Главная особенность хака заключается в кеширование и благодаря чему хак не создает нагрузку. Сам процесс установки очень прост и у вас не должно возникнуть проблем. Все кто собирается устанавливать хак Количество новостей в категории для DLE просьба отписаться на каких версиях устанавливали. Хак должен работать на DLE 9.7 - 10.х и могу с большой уверенностью сказать, что на dle 10.3 работает, было лично проверено.

Установка:

1) В файле index.php, находим строку:
$tpl->set ( '{AJAX}', $ajax );

Перед этой строки добавляем:
/*********Главное меню**********/
$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 = ct.id AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
                                 (select count(*) from ". PREFIX ."_post ps where 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]);
  }
}
/************************************/

2) Открываем файл ./engine/modules/addnews.php. Находим строку:
if( $config['allow_alt_url'] == "yes" )

Данная строчка может слегка отличатся в более новых версиях, если не смогли найти, то попробуйте поискать по куску верней строки, например if( $config['allow_alt_url']

Перед этой строки добавляем:
/*********hak poschet novostey**********/
clear_cache('count_news_of_category');
/****************hak poschet novostey***end*****************/

3) Открываем файл /engine/ajax/editnews.php. Ищем строку:
clear_cache( array( 'news_', 'rss', $cprefix ) );

После этой строки добавляем:
/*********hak poschet novostey**********/
clear_cache('count_news_of_category');
/****************hak poschet novostey***end*****************/

Установка завершена!

4) Теперь в шаблон в меню вставляем

{count_categ_2}
где 2 – это id категории.

После добавления, в браузере мы увидим "{Название категории} 5/258".

5) Для того что изменить внешний вид количества новостей достаточно немного подправить код тега
Итак данный код тега:
$t = $row['new_'].'/'.$row['allnews_'];

Как уже известно отобразится так: “8/2358” (без кавычек)

Рассмотрим примеры другого отображения:
Пример 1:

Если надо скобки – все просто – указанную строку меняем на:
$t = ' ('.$row['new_'].'/'.$row['allnews_']. ' )';

Отобразиться: (8/2358)

Пример 2:
$t = ' ('.$row['allnews_'].'/'.$row['new_']. '+)';

Отобразиться: (2358/8+)

Пример 3:
$t = ' (всего:'.$row['allnews_'].', сегодня:'.$row['new_']. ')';

Отобразиться: (всего: 2358 сегодня: 8)

Так же есть возможность убрать 0 (ноль), при отсутствии новостей на сегодня .
Для этого, в коде из п.1, ВМЕСТО строчки
$t = $row['new_'].'/'.$row['allnews_'];

ставим 2 строки
if( $row['new_'] == '0') {$news_now = '(';} else {$news_now = '('.$row['new_'].'/';};
$t = $news_now.$row['allnews_'].')';

Тогда количество новых новостей, отобразится: “(8/2358)” (без кавычек).
Если новостей нет на сегодня, отобразится: “(2358)” (без кавычек).

UPD: Начиная с DataLife Engine 11.2 и выше данная функция доступна из коробки, мы рекомендуем вам обновить свой сайт до актуальной версии и вам не придется вносить изменения в файлах скрипта.
Также рекомендуем

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.