получить категорию третьего уровня в opencart

Я хочу получить третий уровень в модуле категории OpenCart, вот код, который генерирует только 2 категории уровня, пожалуйста, помогите и измените так, чтобы он разыграл третий уровень:

 <ul id="menu"> <?php foreach ($categories as $category) { ?> <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> <?php if ($category['children']) { ?> <?php for ($i = 0; $i < count($category['children']);) { ?> <ul> <?php $j = $i + ceil(count($category['children']) / $category['column']); ?> <?php for (; $i < $j; $i++) { ?> <?php if (isset($category['children'][$i])) { ?> <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li> <?php } ?> <?php } ?> </ul> <?php } ?> <?php } ?> </li> <?php } ?> </ul> 

Вы можете попробовать это, это не изящно, но должно работать:

  <ul id="menu"> <?php foreach ($categories as $category) : echo '<li><a href="'.$category['href'].'">'.$category['name'].'</a>'; if (!empty($category['children'])) : echo '<ul>'; foreach ($category['children'] as $category_level2) : echo '<li><a href="'.$category_level2['href'].'">'.$category_level2['name'].'</a>'; if (!empty($category_level2['children'])) : echo '<ul>'; foreach ($category_level2['children'] as $category_level3) : echo '<li><a href="'.$category_level3['href'].'">'.$category_level3['name'].'</a></li>'; endforeach; echo '</ul>'; endif; echo '</li>'; endforeach; echo '</ul>'; endif; echo '</li>'; endforeach; echo '</ul>'; ?> 

Для этого сначала вам необходимо отредактировать контроллер заголовка:

Перейти к каталогу-> controller-> common-> header.php

Измените раздел, который создает переменную $ categories. обновление по следующему сценарию:

 $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { if ($category['top']) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); foreach ($children as $child) { $sec_children_data = array(); $sec_children = $this->model_catalog_category->getCategories($child['category_id']); foreach ($sec_children as $sec_child) { $sec_children_data[] = array( 'name' => $sec_child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $child['category_id'] . '_' . $sec_child['category_id']) ); } $data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $product_total = $this->model_catalog_product->getTotalProducts($data); $children_data[] = array( 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']), 'children' => $sec_children_data ); } // Level 1 $this->data['categories'][] = array( 'name' => $category['name'], 'children' => $children_data, 'column' => $category['column'] ? $category['column'] : 1, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } } 

Затем обновите файл вида для отображения категорий третьего уровня.

Предположим, что у вас уже есть сторона администрирования, тогда вы должны проверить, есть ли некоторые категории под 2-м уровнем. Если да, то сделайте for строительства (или foreach ) и покажите их как 3-й уровень.

Вы создадите трехстрочное построение <ul></ul> . Он должен быть стилизован под CSS.

Вы можете даже сделать бесконечные подкатегории, используя рекурсивную функцию.

Дайте мне знать, если вы не получите его.

Сначала загрузите vqmod, а затем извлеките его. Теперь папка vqmod хранится в корневом каталоге вашего сайта. Затем перейдите в браузер, напишите URL-адрес своего сайта, затем «/ vqmod / install» и нажмите «Ввод», затем получите сообщение, которое вы можете установить vqmod на своем сайте успешно. Теперь вы загружаете форму расширения и извлекаете ее. и сохраните файл экстракта на своем сайте, укажите файл foulder exm: menu3rdlevel-opencart-2_2 \ vqmod \ xml / Menu3rdLevel.xml на вашем сайте, например: vqmod \ xml / Menu3rdLevel.xml их другой файл с папкой «menu3rdlevel». Из папки расширения «javascript» в папку вашего сайта «javescript», папку расширения «изображение» в папку «образ» папки с расширением папки «stylsheet» на папку «stylsheet». а затем обновите свой сайт в браузере.

NB: Перенесите только файл с файлом xml и другим файлом с папкой.

Для редактирования меню третьего уровня выполните следующие изменения в файле контроллера header.php.

  foreach ($sec_children as $sec_child) { $sec_children_data[] = array( 'name' => $sec_child['name'] . ($this->config->get('config_product_count') ? '' : ''), 'href' => $this->url->link('product/category', 'path=' . $child['category_id'] . '_' . $sec_child['category_id']) ); } 

А также внесите следующие изменения в файл header.tpl.

 ?php if (isset($category['children'][$i]['level3'])) { $level3menus = $category['children'][$i]['level3']; ?> <ul class="level3"> <?php foreach( $level3menus as $level3menu) { ?> <li><a href="<?php echo $level3menu['href']; ?>" class=""><?php echo $level3menu['name'];?></a></li> <?php } ?> 

Пожалуйста, обратитесь к моему учебнику для пошагового объяснения и демонстрации.

http://www.pearlbells.co.uk/third-level-category-menu-opencart/