» » Количество новостей в меню навигации(NEW)

Количество новостей в меню навигации(NEW)

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

Количество новостей в меню навигации(NEW)


Итак, начнем:
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" )



ВЫШЕ ставим:

clear_cache('count_news_of_category');




3) Открываем файл /engine/ajax/editnews.php
Ищем строку

clear_cache( 'news_' );



НИЖЕ ставим:

clear_cache('count_news_of_category');



4) В шаблоне (каком хотите и где хотите) ставите теги на количество новостей.
Тег выглядит так: “{count_categ _2}” (без кавычек), где 2 – это id категории.

Например у меня в шаблоне main.tpl, где я отображаю менюшку, будет выглядит так:

Софт {count_categ _2}


Отобразиться как "Софт 5/258" (без кавычек).
(о формировании внешнего вида содержимого тега см. ниже)

Кстати, между Софт и 5/258 всегда будет только один пробел, как бы далеко не отодвигать в шаблоне тег. Я решил эту проблему просто – поставил
&_nbsp;

Тогда в шаблоне будет так:


]Софт&nbsp;&nbsp;&nbsp;{count_categ _2}


(между Софт и 5/258 будет 3 пробела)


Формировании внешнего вида
Внешний вид количества новостей (то, что заменит тег в шаблоне) формируется в строке

$t = $row['new_'].'/'.$row['allnews_'];

вышеуказанного кода (в п.1)
Для данной строки содержимое отобразится так: “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)” (без кавычек).

Хак тестился на 7.5 версии DataLife Engine.

Вот, в принципе и все.
Возможно, кому-то покажется код неудобочитаемым или еще что-то не так - пишите, комментируйте - буду исправлять.
И последнее - Хак совершенно бесплатный :-)

Автор и демо:_http://1024kbytes.com

Всем удачи!

Комментарии

проделал все до 4 пункта, только вот возникли трудности, у меня вместо обычного меню модуль древовидный стоит и как туда интегрировать это все я без понятия, потому что разделы в маин не отображаются, там скрипт!
а на 9.0 можна такой мод?:)

Информация

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


Личные сообщения

Ваши переписки