Решение именно для списка подкатегорий, а не модуль Категорий который слева и не меню которое сверху. Просьба не путать. \catalog\controller\product\category.php вместо этого Код: $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) ); } Вставить это PHP: $categories_1 = $this->model_catalog_category->getCategories($category_id); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'name' => $category_3['name'], 'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id']) ); } $level_2_data[] = array( 'name' => $category_2['name'], 'child' => $level_3_data, 'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id']) ); } $data['categories'][] = array( 'name' => $category_1['name'], 'child' => $level_2_data, 'href' => $this->url->link('product/category', 'path=' . $category_1['category_id']) ); } в шаблоне \catalog\view\theme\default\template\product\category.twig вместо этого Код: {% if categories %} <h3>{{ text_refine }}</h3> {% if categories|length <= 5 %} <div class="row"> <div class="col-sm-3"> <ul> {% for category in categories %} <li><a href="{{ category.href }}">{{ category.name }}</a></li> {% endfor %} </ul> </div> </div> {% else %} <div class="row">{% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %} <div class="col-sm-3"> <ul> {% for child in category %} <li><a href="{{ child.href }}">{{ child.name }}</a></li> {% endfor %} </ul> </div> {% endfor %}</div> <br /> {% endif %} {% endif %} вставить это PHP: {% if categories %} <h3>{{ text_refine }}</h3> {% if categories|length <= 5 %} <div class="row"> <div class="col-sm-3"> <ul> {% for category in categories %} <li><a href="{{ category.href }}">{{ category.name }}</a></li> <ul> {% for child1 in category.child %} <li><a href="{{ child1.href }}">{{ child1.name }}</a></li> <ul> {% for child2 in child1.child %} <li><a href="{{ child2.href }}">{{ child2.name }}</a></li> {% endfor %} </ul> {% endfor %} </ul> {% endfor %} </ul> </div> </div> {% else %} <div class="row">{% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %} <div class="col-sm-3"> <ul> {% for child in category %} <li><a href="{{ child.href }}">{{ child.name }}</a></li> <ul> {% for child1 in child.child %} <li><a href="{{ child1.href }}">{{ child1.name }}</a></li> <ul> {% for child2 in child1.child %} <li><a href="{{ child2.href }}">{{ child2.name }}</a></li> {% endfor %} </ul> {% endfor %} </ul> {% endfor %} </ul> </div> {% endfor %}</div> <br /> {% endif %} {% endif %} Решение конечно для OpenCart 3x. В решение не учитывается кол-во товара в подкатегориях. Для других версий и хотелки, сами