Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать вывод подкатегорий?

Как сделать вывод подкатегорий?


     Все вопросы » Общие вопросы по PHP    1755

вопрос
Добрый день друзья, нашел модуль старый для вывода категорий, все работает нормально, но как всегда есть одно но.

Модуль выводит максимум под категорию второго уровня а третьего или четвертого не хочет.

Может быть есть знатоки что поможет в этом деле


<?php
/*
=====================================================
Модуль: Category Menu
Версия: v1.0
=====================================================
Автор: MSW
Сайт поддержки: http://0-web.ru/
=====================================================
Данный код защищен авторскими правами
-----------------------------------------------------
Файл: category_menu.php
-----------------------------------------------------
Назначение: формирование меню категорий
=====================================================
*/

if(!defined('DATALIFEENGINE')) die("Hacking attempt!");

$catmenu = dle_cache("catmenu", 1, true);
if(!$catmenu) {
    $cat_allows = false;
    if($user_group[$member_id['user_group']]['allow_cats']=="all") $cat_allows = true;
    else $cat_allow = explode(",", $user_group[$member_id['user_group']]['allow_cats']);

    #****** формирование нужных массивов ******#
    foreach($cat_info as $k => $v) {
        if($cat_allows || in_array($v['id'], $cat_allow)) {
            $cat_all[$k]['id'] = $v['id'];
            $cat_all[$k]['name'] = $v['name'];
            $cat_all[$k]['alt_name'] = $v['alt_name'];
            ($v['parentid']==0) ? $cat_g[] = $v['id'] : $cat_p[$v['parentid']][] = $v['id'];
        }
    }
    #****** формирование количества новостей ******#
    $sql = $db->query("SELECT id, date, category FROM ".PREFIX."_post WHERE approve='1'");
    while($row = $db->get_row($sql)) {
        $cat_news_arr = explode(",", $row['category']);
        foreach($cat_news_arr as $x) {
            $cat_all[$x]['news_num']++;
            if(strtotime($row['date'])-time()+86400 > 0) $cat_all[$x]['news_new']++;
        }
    }

    #****** формирование меню ******#
    foreach($cat_g as $v) {
        #****** Формирование склонений ******#
        $cat_name_end = substr($cat_all[$v]['name'], -1);
        if($cat_name_end == "е") $cat_end = "Всё";
        elseif($cat_name_end == "а" || $cat_name_end == "ь") $cat_end = "Вся";
        else $cat_end = "Все";

        #****** Формирование подкатегорий ******#
        $category = array();
        $news_new = $news_all = 0;
        foreach($cat_p[$v] as $z) {
            #****** Новые новости за сутки ******#
            $news_new += $cat_all[$z]['news_new'];
            #****** Все новости категории ******#
            $news_all += $cat_all[$z]['news_num'];

            if(!$cat_all[$z]['news_num']) $cat_all[$z]['news_num']=0;
            if($cat_all[$z]['news_new']) $cat_all[$z]['news_new']=" / <b style=\"color:red;\">+".$cat_all[$z]['news_new']."</b>";

            $category[] = "<li><a href=\"/{$cat_all[$v]['alt_name']}/{$cat_all[$z]['alt_name']}/\">{$cat_all[$z]['name']}  </a> </li>";
        }

        $news_new = ($news_new > 0) ? " <font color=\"#ddd\">(+".$news_new.")</font>" : "";

        #****** Формирование заголовка ******#
        $catmenu .= "<p class=\"category\"><a href=\"/{$cat_all[$v]['alt_name']}/\">{$cat_all[$v]['name']}</a></p><ul>";
        #****** Ссылка на главную категорию и подкатегории ******#
        $catmenu .= "<li>".implode("",$category)."</ul>";
    }


    create_cache("catmenu", $catmenu, 1, true);
    unset($cat_all);
    unset($cat_news_arr);
    unset($cat_g);
    unset($cat_p);
    unset($category);
}

echo $catmenu;
?>

Ответа пока нет


Похожие вопросы

наверх