Я хочу получить третий уровень в модуле категории 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/