Dleshka.org
Авторизация

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

+12
TipTop 3-09-2009 Хаки DLE 2 комментария


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


Итак, начнем:

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


Всем удачи!

Информация
Зарегистрируйтесь чтобы комментировать публикацию.
Grief
5 декабря 2009 17:02
+ 0 -
проделал все до 4 пункта, только вот возникли трудности, у меня вместо обычного меню модуль древовидный стоит и как туда интегрировать это все я без понятия, потому что разделы в маин не отображаются, там скрипт!
caSper
22 февраля 2011 10:52
+ 0 -
а на 9.0 можна такой мод?:)
Авторизация