В главном горизонтальном меню OpenCart выведено два уровня категорий но этого не всегда бывает достаточно. Чтобы вывести третий уровень категорий нам необходимо отредактировать 2 файла:
/catalog/controller/common/header.php /catalog/view/theme/default/template/common/header.tpl
Разумеется предварительно делаем backup
И так начнем находим в:
/catalog/controller/common/header.php
Это:
1 2 3 4 5 |
$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']) ); } |
Меняем на это:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
///////////////// Level 3 $this->load->model('tool/image'); $subchildren_data = array(); $subchildren = $this->model_catalog_category->getCategories($child['category_id']); foreach ($subchildren as $subchild) { $filter_data = array( 'filter_category_id' => $subchild['category_id'], 'filter_sub_category' => true ); $subchildren_data[] = array( 'name' => $subchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $child['category_id'] . '_' . $subchild['category_id']), 'image' => $this->model_tool_image->resize($subchild['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')) ); } ////////////////// Level 3 $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']), 'image' => $this->model_tool_image->resize($child['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')), 'subchildren' => $subchildren_data, ); } |
Далее находим в:
/catalog/view/theme/default/template/common/header.tpl
Это:
1 |
<li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></li> |
Меняем на это:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!--///////// Lecel 3--> <li><a href="<?php echo $child['href']; ?>"><img src="<?php echo $child['image']; ?>"><?php echo $child['name']; ?></a></li> <?php if ($child['subchildren']) { ?> <?php foreach ($child['subchildren'] as $subchild) { ?> <li style="padding-left: 45px;"><a href="<?php echo $subchild['href']; ?>"><img src="<?php echo $subchild['image']; ?>"><?php echo $subchild['name']; ?></a></li> <?php } ?> <?php } ?> <!--/////////--> |
А это проверка для картинок:
1 2 3 4 5 |
if($child['image']) { $image = $this->model_tool_image->resize($child['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); } |
Вот и все не забываем ставим лайки, всем СПАСИБО!
Да пребудет с Вами хорошее настроение.
А скажите если у меня вертикальное меню, подойдет ?
Да, только надо будет поправить верстку
Спасибо Вам за данную статью!!!
Подскажите, у меня как и у Владимира, реализовано вертикальное меню. Какие нужны дополнительные изменения?
Это смотря что вы хотите в меню увидеть? А вообще по факту это одинаковые меню только разная верстка.