Warning: fopen(/var/www/admin/data/www/artsss-web.ru/engine/cache/system/category.php): failed to open stream: No such file or directory in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 316 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 317 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 318 Warning: fopen(/var/www/admin/data/www/artsss-web.ru/engine/cache/system/usergroup.php): failed to open stream: No such file or directory in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 316 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 317 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 318 Warning: fopen(/var/www/admin/data/www/artsss-web.ru/engine/cache/system/informers.php): failed to open stream: No such file or directory in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 316 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 317 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 318 Warning: fopen(/var/www/admin/data/www/artsss-web.ru/engine/cache/related_19f3cd308f1455b3fa09a282e0d496f4.tmp): failed to open stream: Permission denied in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 374 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 375 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 376 Warning: fopen(/var/www/admin/data/www/artsss-web.ru/engine/cache/system/banners.php): failed to open stream: No such file or directory in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 316 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 317 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/admin/data/www/artsss-web.ru/engine/modules/functions.php on line 318 DataLife Engine > Версия для печати > Количество новостей в меню навигации v.3.0
DataLife Engine > Хаки DLE > Количество новостей в меню навигации v.3.0

Количество новостей в меню навигации v.3.0


21-09-2010, 16:20. Разместил: Пряник
Вот на днях бороздя просторы нета нарыл такой вот интересный на мой взгляд хак для DLE. К сожалению автор мне не известен.

Позволяет проставить количество новостей за сегодня и общее количество по конкретной категории в меню навигации или любом другом месте сайта. Есть возможность ставить количество новостей в каком угодно виде. Кроме того можно проставлять количество новостей в подкаталогах любой вложености. Единственное, что нужно знать для этого - это id категории.

Примеры отображения в меню навигации (отображение зависит только от Вашей фантазии)
Количество новостей в меню навигации v.3.0

Что нового:
1) кэширование количества новостей;
2) возможность убирать «0», если новостей за сегодня по категории нет;
3) исправлен баг неточного подсчета количества новостей, если новость в нескольких категориях.

УСТАНОВКА для версий DLE8.2-8.5

1) Создаем новый 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]

Вернуться назад