Похоже допилил. Может кому пригодится.
В контроллер по адресу \catalog\controller\product\category.php в первый foreach ($results as $result) после кода
if($product_total)
{
$filter_data = array(
'filter_category_id' => $result['category_id'],
'filter_filter' => $filter,
'sort' => $sort,
'order' => $order
);
вставляем уже наш код
$product_results = $this->model_catalog_product->getProducts($filter_data); //добавлен код для дочерних катеорий
foreach ($product_results as $product) {
$products[] = array(
'product_id' => $product['product_id'],
'name' => $product['name'],
'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $product['product_id'] . $url)
);
}
}
$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),
'children' => $products
);
ну и в category.tpl пишем нужный код (html код условный)
<?php if (count($categories) !== 0) { ?>
<ul class="catalog-collection__list">
<?php foreach ($categories as $category) { ?>
<li class="catalog-collection__item">
<h2 class="catalog-collection__title"><?php echo $category['name']; ?></h2>
</li>
<ul class="collection__list--preview">
<!--А вот тут выводим уже товары для своей категории-->
<?php foreach ($category['children'] as $child) { ?>
<li class="collection__item--preview">
<a class="collection__link--preview" href="<?php echo $child['href']; ?>">
<h3 class="collection__title--preview"><?php echo $child['name']; ?></h3>
</a>
</li>
<?php } ?>
</ul>
<?php } ?>
</ul>
<?php } else { ?>
<!-- Тут выводится последняя категория-->
<ul class="collection__list">
<?php foreach ($products as $product) { ?>
<li class="collection__item">
<a class="collection__link" href="<?php echo $product['href']; ?>">
<h2 class="collection__title">
<?php echo $product['name']; ?></h2>
</li>
<?php } ?>
</ul>
<?php } ?>
За качество кода не обессудьте. Но у меня работает.