Народ, помогите пожалуйста. Пытаюсь ограничить уровень вложенности для горизонтального меню категорий. Как сделать так и не могу понять.
Функция из 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
Но в любом случае, опыта не хватет.. прошу помощи у более опытных коллег
Сообщение отредактировано oslayer 24-10-2012 14:36 ...