Отображение количества новостей каждой категории в основном меню

Новости
1) В файле index.php, находим код

$tpl->set ( '{AJAX}', $ajax );


выше его ставим код


/*********Навигация******************************************/
$sql_result = $db->query("select ct.name,
                                 ct.alt_name,
                                 ct.posi,
                                 (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
                          order by ct.posi"
                          );

$main_menu='';
while($row = $db->get_row($sql_result))
{
    $main_menu.='<div><a href="'.$config['http_home_url'].$row['alt_name'].'" >'.$row['name']."&nbsp;&nbsp;&nbsp;".$row['new_']."/".$row['allnews_']."</a></div>";
}
$tpl->set('{main_menu}', $main_menu);
/******************************************************************/


2) Пункт меню формируется в коде


$main_menu.='<div><a href="'.$config['http_home_url'].$row['alt_name'].'" >'.$row['name']."&nbsp;&nbsp;&nbsp;".$row['new_']."/".$row['allnews_']."</a></div>";


где
- $config['http_home_url'] возвращает значение "http://ваш_домен/" (без кавычек)
- $row['alt_name'] - заглавие категории латиницей (к примеру: soft)
- переменная $row['name'] - заглавие категории кирилицей (к примеру: Софт)
- $row['new_'] - количество новостей данной категории за сейчас
- $row['allnews_'] - полное количество новостей по данной категории

В код можно вставить класс, согласно которому, будет отображаться менюшка. К примеру


$main_menu.='<div><a href="'.$config['http_home_url'].$row['alt_name'].'" class="navigation">'.$row['name']."&nbsp;&nbsp;&nbsp;".$row['new_']."/".$row['allnews_']."</a></div>";


В приведенном примере ссылка будет вида

_http://ваш_домен/soft

3) О сортировке пт меню.
В админке в разделе "Категории", можно узреть напротив, как всем известно, каждой категории значение Position. Вот в котором порядке проставите эти значения, в таком и, вообщем то, покажет в менюшке.

4) Открываем шаблон /templates/ваш_шаблон/main.tpl

В подходящем месте ставим {main_menu}

5) работающее меню можно поглядеть на _http://1024kbytes.com

6) тестировалось на DLE7.5

Напечатать Комментарии (2)

Другие новости по теме:
  • Крайнее посещение
  • Отображение новостей в несколько колонок
  • SAPE контекст в Dle
  • Меняем ссылку скачки на картину
  • Хак выводит подсказки в формах при регистрации (Ajax)

  • Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
    #1 написал: kand2004 (4 августа 2009 01:15)
    Есть продолжение хака, где возникла возможность добавлять количество новостей в меню с хоть каким количеством подкатегорий, хоть какой вложености

    Смотрите на
    _http://1024kbytes.com/articles/2322-kolichestvo-novostej-v-menyu-navigacii-dlya

    -dle.html
    ICQ: --
    #2 написал: Neo-dimon (18 апреля 2010 22:36)
    У меня dle 8.2 и этот хак неправильно работает, при загрузке главной страничке опосля выполнения всех вышеуказанных действий выдает ошибку ображения к базе данных и ссылается на строчку:

    $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"
    );
    Вообще кто может подскажите что сделать чтоб все работало
    ICQ: --