Ответить Новая тема Новый опрос 
 Горизонтальное меню
oslayer
Новичок
Сообщений: 3
Регистрация: 08-10-2012


24-10-2012 15:35
Народ, помогите пожалуйста. Пытаюсь ограничить уровень вложенности для горизонтального меню категорий. Как сделать так и не могу понять.

Функция из blocktopmenu.php

Код:
private function getCategory($id_category, $id_lang = false, $id_shop = false)
    {
        $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id;
        $category = new Category((int)$id_category, (int)$id_lang);
        if ($category->level_depth > 1)
        $category_link = $category->getLink();
        else
            $category_link = $this->context->link->getPageLink('index');

        if (is_null($category->id))
            return;

        $children = Category::getChildren((int)$id_category, (int)$id_lang, true, (int)$id_shop);
        var_dump($children);
    
        $selected = ($this->page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : '';

        $is_intersected = array_intersect($category->getGroups(), $this->user_groups);
    
        // filter the categories that the user is allowed to see and browse
        if (!empty($is_intersected))
        {
            $this->_menu .= '<li class="alt1"'.$selected.'>';
            $this->_menu .= '<a href="'.$category_link.'">'.$category->name.'</a>';
/*        if (count($children))*/
/*var_dump($children);*/
if (count($children))
            /*    if(count($children) & ($ddd=3))*/
            {
                $this->_menu .='<div class="st"></div><ul class="level2">';

                foreach ($children as $child)
                    $this->getCategory((int)$child['id_category'], (int)$id_lang, (int)$child['id_shop']);

                $this->_menu .='</ul>';
            }
            $this->_menu .= '</li>';
        }
        
    }


Есть в этой функции вот такая строчка
Код:
if (count($children))

Если меняем ее на
Код:
if(count($children) & ($ddd=2))
отображается меню с подменю второго уровня вложенности. но не отображаются подменю первого уровня вложенности.

Если меняем строчку
Код:
if(count($children) & ($ddd=1))

отображается меню с подменю первого уровня вложенности. но не отображаются подменю второго уровня вложенности.

Каким образом задать ограничить меню вторым уровнем вложенности, но при этом сохранить в рабочем виде и первый уровень вложенности?

Логически понимаю что решение есть и достаточно простое.. но как сделать не знаю.

может каким то образом перебрать массив $children и повыкидывать из него третий уровень? Дамп массива $children можно посмотреть здесь - chemirus.tmweb.ru

Но в любом случае, опыта не хватет.. прошу помощи у более опытных коллег :mfs:


Сообщение отредактировано oslayer 24-10-2012 14:36 ...
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
oslayer
Новичок
Сообщений: 3
Регистрация: 08-10-2012


30-10-2012 21:16
Что, господа "программеры" только и хватает на то, что бы умное что то ляпнуть, переведенное с буржуйский форумов, на реальные задачи тямы не хватает... "ну ты и лошара"©
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос