Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Главное меню 4-го и 5-го уровней вложенности


wowez

Recommended Posts

Здравствуйте! В общем сделал меню 3-й уровень вложенности, ну как сделал нашёл метод и сделал.)

 

controller/common/menu.php

 

 

foreach ($categories_avto as $category) {
			//if ($category['top']) {
				// Level 2
			
				$children_data = array();
				$children = $this->model_catalog_category->getCategories($category['category_id']);
				foreach ($children as $child) {
// Level 3
	$grandchildren_data = array();
$grandchildren = $this->model_catalog_category->getCategories($child['category_id']);
foreach ($grandchildren as $grandchild) {
// Level 4
	$grandchildrenf_data = array();
$grandchildrenf = $this->model_catalog_category->getCategories($grandchild['category_id']);
foreach ($grandchildrenf as $grandchildf) {
$grandchildf_filter_data = array(
'filter_category_id'  => $grandchildf['category_id'],
'filter_sub_category' => true
);
if ($this->model_catalog_product->getTotalProducts($grandchildrenf_data) > 0)
$grandchildrenf_data[] = array(
'name'  => $grandchildf['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($grandchildf_filter_data) . ')' : ''),
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $grandchildf['category_id'])
);
}
$grandchild_filter_data = array(
'filter_category_id'  => $grandchild['category_id'],
'filter_sub_category' => true
);
if ($this->model_catalog_product->getTotalProducts($grandchildren_data) > 0)
$grandchildren_data[] = array(
'name'  => $grandchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($grandchild_filter_data) . ')' : ''),
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $grandchild['category_id'])
);
}
$filter_data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
if ($this->model_catalog_product->getTotalProducts($filter_data) > 0)
$children_data[] = array(
'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
'children' => $grandchildren_data,
);
}
				// Level 1
				if ($this->model_catalog_product->getTotalProducts($filter_data) > 0)
				$data['categories_avto'][] = array(
					'name'     => $category['name'],
					'children' => $children_data,
					'column'   => $category['column'] ? $category['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=3118_' . $category['category_id'])
				);
			//}
		}

 

 

и 

 

theme/common/menu.twig

 

<div class="catalog-drop-menu__new" style="display: none;">
{% for category in categories_avto %}
<ul class="new_menu">
{% if category.children %}
<li class="mi-menu-one">
	<a href="{{ category.href }}" class="js-drop-item-toggle-a" data-toggle="dropdown">{{ category.name }}<span class="close-a"><i class="fa-solid fa-xmark"></i></span></a>
<div class="js-drop-item-a">
<div class="dropdown-inner">
{% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
<!-- --level 3-- -->
{% for child in children %}
<div class="uroven-2">
<a class="js-drop-item-toggle-one home_title" href="{{ child.href }}">{{ child.name }}</a>
{% if child.children %}
<div class="menu-1 home catalog-drop-menu__right submenu" style="display: none;">
<div class="submenu__inner">
<div class="submenu__top">
<a class="submenu__catalog" href="{{ category.href }}"><p class="submenu__title">{{ child.name }}</p></a>
</div>	
<ul class="submenu__list">
{% for children in child.children %}
<li class="submenu__item uroven-3"><a class="submenu__link" href="{{ children.href }}">{{ children.name }}</a>
<!-- level 4  -->
{% for grandchild in children %}
<div class="uroven-4">
<a class="uroven-4" href="{{ child.href }}">{{ child.children.name }}</a>
{% if child.grandchildren %}
<div class="wazzdaclass">
<div class="submenu__inner">
<div class="submenu__top">
<a class="submenu__catalog" href="{{ category.href }}"><p class="submenu__title">{{ grandchild.name }}</p></a>
</div>	
  <ul class="submenu__list">
{% for children in grandchild.children %}
<li class="submenu__item uroven-3"><a class="submenu__link" href="{{ children.href }}">{{ grandchildren.name }}</a></li>
{% endfor %}
</ul></div></div><div class="clearfix"></div>
{% endif %}
</div>
{% endfor %}
<!-- level 4  -->
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="clearfix"></div>
{% endif %}
</div>
{% endfor %}
<!-- -- level 3 ---  -->
{% endfor %}</div>
</div>
</li>
{% else %}
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
{% endif %}
</ul>
									{% endfor %}
									<div class="clearfix"></div>
								</div>

 

 

В общем сейчас 3-й уровень работает, всё хорошо, но как я понимаю 4-й уровень в контроллере я вроде правильно сделал. Правильно ведь?

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

 

Ну подскажите пожалуйста кто может.

 

И я надеюсь если я пойму как с 4-ым уровнем справиться, то пятый по аналогии с 4-ым, а сейчас 4-ый как то не могу понять по аналогии с третьим...

 

 

Надіслати
Поділитися на інших сайтах


В общем тема закрыта, я всё решил... 

 

	$categories = $this->model_catalog_category->getCategories(0);
		foreach ($categories as $category) {
			//if ($category['top']) {
				// Level 2
							$children_data = array();
				$children = $this->model_catalog_category->getCategories($category['category_id']);
				foreach ($children as $child) {
// Level 3
	  					$gchildren_data = array();
				    $gchildren = $this->model_catalog_category->getCategories($child['category_id']);
				    foreach ($gchildren as $gchild) {
// Level 4
	  					$fgchildren_data = array();
				    $fgchildren = $this->model_catalog_category->getCategories($gchild['category_id']);
				    foreach ($fgchildren as $fgchild) {
// Level 5

  				$ofgchildren_data = array();
			    $ofgchildren = $this->model_catalog_category->getCategories($fgchild['category_id']);
				    foreach ($ofgchildren as $ofgchild) {
				        $ofgchildren_filter_data = array(
				            'filter_category_id'  => $ofgchild['category_id'],
				            'filter_sub_category' => true
				        );
				        
				        $ofgchildren_data[] = array(
				            'name'  => $ofgchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($ofgchildren_filter_data) . ')' : ''),
				            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $fgchild['category_id'] . '_' . $ofgchild['category_id'])
				        );
				        
				    }
				        $fgchildren_filter_data = array(
				            'filter_category_id'  => $fgchild['category_id'],
				            'filter_sub_category' => true
				        );
				        
				        $fgchildren_data[] = array(
				        	'ofgchildren' => $ofgchildren_data,
							'column'   => $fgchild['column'] ? $fgchild['column'] : 1,
				            'name'  => $fgchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($fgchildren_filter_data) . ')' : ''),
				            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $gchild['category_id'] . '_' . $fgchild['category_id'])
				        );
				        
				    }
				        $gchildren_filter_data = array(
				            'filter_category_id'  => $gchild['category_id'],
				            'filter_sub_category' => true
				        );
				        
				        $gchildren_data[] = array(
				        	'fgchildren' => $fgchildren_data,
							'column'   => $gchild['column'] ? $gchild['column'] : 1,
				            'name'  => $gchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($gchildren_filter_data) . ')' : ''),
				            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $gchild['category_id'])
				            
				        );
				        
				    }

$filter_data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
if ($this->model_catalog_product->getTotalProducts($filter_data) > 0)
$children_data[] = array(
'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),

'gchildren' => $gchildren_data,
'column'   => $child['column'] ? $child['column'] : 1,

'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
'children' => $grandchildren_data,
);
}
				// Level 1
				if ($this->model_catalog_product->getTotalProducts($filter_data) > 0)
				$data['categories_avto'][] = array(
					'name'     => $category['name'],
					'children' => $children_data,
					'column'   => $category['column'] ? $category['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=3118_' . $category['category_id'])
				);
			//}
		}
		
				

 

 

 

 

<li class="catalog-drop-menu__item  active">
					<span class="catalog-drop-menu__title _title js-drop-item-toggle"></span>
					<div class=" catalog-drop-menu__new" style="display: none;">
						{% for category in categories_avto %}
<ul class="new_menu">
{% if category.children %}
<li class="mi-menu-one">
	<a href="{{ category.href }}" class="js-drop-item-toggle-a" data-toggle="dropdown">{{ category.name }}<span class="close-a"><i class="fa-solid fa-xmark"></i></span></a>
<div class="js-drop-item-a">
<div class="dropdown-inner">
{% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}

<!-- --level 3-- -->
{% for child in children %}
<div class="uroven-2">
<a class="js-drop-item-toggle-one -home_title" href="{{ child.href }}">{{ child.name }}</a>


<!-- level 3 -->
{% if child.gchildren %}
<div class="uroven-3 -menu-1 -home catalog-drop-menu__right submenu" style="display: none;">
<div class="submenu__inner">
<div class="submenu__top">
{#<a class="submenu__catalog" href="{{ child.href }}"><p class="submenu__title">{{ child.name }}</p></a>#}
</div>	
<ul class="submenu__list">
{% for gchild in child.gchildren %}
<li class="submenu__item uroven-3"><a class="submenu__link" href="{{ gchild.href }}">{{ gchild.name }}</a>

<!-- level 4 -->

{% if gchild.fgchildren %}
<div class="uroven-4">
<div class="submenu__inner">
<div class="submenu__top">
</div>	
<ul class="submenu__list">
{% for fgchild in gchild.fgchildren %}
<li class="submenu__item uroven-3"><a class="submenu__link" href="{{  fgchild.href }}">{{ fgchild.name }}</a>
<!-- level 5 -->
{% if fgchild.ofgchildren %}
<div class="uroven-4">
<div class="submenu__inner">
<div class="submenu__top">
</div>	
<ul class="submenu__list">
{% for ofgchild in fgchild.ofgchildren %}
<li class="submenu__item uroven-3"><a class="submenu__link" href="{{  ofgchild.href }}">{{ ofgchild.name }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="clearfix"></div>
{% endif %}
<!-- level 5 -->
</li>
{% endfor %}
</ul>
</div>
</div>
<div class="clearfix"></div>
{% endif %}
<!-- level 4 -->
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<!-- end level 3 -->
</div>
{% endfor %}
{% endfor %}</div>
</div>
</li>
{% else %}
<li><a href="{{ category.href }}">{{ category.name }}</a></li>
{% endif %}
</ul>
{% endfor %}
<div class="clearfix"></div>
</div>
</li>

 

 

 

Вот так всё работает, и 4-й уровень и 5-й... 

 

Мало ли, может кому пригодится.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.