Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


wowez
 Погделиться

Рекомендованные сообещёния

Здравствуйте! В обещём сгделал меню 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-й... 

 

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

Ссылка на комменирий
Погделиться на других сайих


Стили и разметка тут несиндартная, но это уж, я думаю если кому надо бугдет разберётся...

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.