По умолчанию вы получите массив подкатегорий только в переменной $subcategories
; поэтому получение продуктов этой подкатегории никогда не будет работать $subcategory_object->getProducts('1','1','100','price','asc')
до тех пор, пока у вас не появится объект подкатегории.
Сначала вам нужно получить объект подкатегории и для этого вам нужно переопределить функцию по умолчанию getSubCategories
из файла classes/Category.php
, сделав переопределить класса Category.
Выполните указанные ниже шаги (1-2), чтобы создать переопределенный класс и изменить код в шаблоне, упомянутом в шаге (3)
1) Создайте файл Category.php
по пути override\classes
и добавьте в него код ниже.
это переопределит функцию по умолчанию для получения категории.
<?php
/**
* @override classes/Category.php
*
*/
class Category extends CategoryCore
{
/**
* @override
* Return current category childs
*
* @param int $id_lang Language ID
* @param bool $active return only active categories
* @return array Categories
*/
public function getSubCategories($id_lang, $active = true)
{
$result = parent::getSubCategories($id_lang, $active);
foreach ($result as &$row) {
// Preapre object of sub category here
$row['object'] = new Category($row['id_category'], $id_lang);
}
return $result;
}
}
2) Удалить файл class_index.php
из папки cache
.
Ваша функция отмены теперь готова.
3) Добавьте приведенный ниже код в шаблон, чтобы показать товары
{foreach from=$subcategories item=subcategory}
{if $subcategory.id_category == 64659}
{include file="./product-list.tpl" products=$subcategory.object->getProducts('1','1','100','price','asc')}
{/if}
{/foreach}
Надеюсь, это сработает для вас.