Как переопределить системный массив products для категории своим из хелпера(плагина)?

Сейчас это решено через хелпер:

public static function products2($cat) {
    $collection = new shopProductsCollection('category/'.$cat);
    $count = $collection->count();
    $products = $collection->getProducts('',0,$count);
    $sortedproducts = [];
    foreach ($products as $product) {
        $sortedproducts[$product['category_id']][] = $product;
    }
}

Но это дополнительный SQL запрос - так как системный массив $products также запрашивается и выводится.

Можно конечно сделать так:

public function frontendCategory($category)
        {
                $view = wa()->getView();

                $hash = 'category/'.$category['id'];

                $collection = new shopProductsCollection($hash);

                $products = $collection->getProducts('', 0, $collection->count());

                $view->assign('products', $products);
        }

Здесь также вызывается системный запрос и массив просто заменяется массивом из хелпера? 


Как можно переопределить системный массив своим из хелпера(плагина)?

1 ответ

  • 2
    Markus 6 октября 2019 10:40 #

    Не знаю, поможет вам это или нет. Мне например в некоторых категориях необходимо водить товары не обычным способом, а по подкатегориям.

    В моем случае подкатегории это серии товара. Стандартно, чтобы не делать лишних запросов к базе сделать не вышло.

    Пришлось использовать кастомный routing.php в в wa-config/apps/shop/routing.php и для категорий просписать свой плагин. Плагин проверяет какой массив товаров нужен для данной категории, если стандартный то просто вызывается родительский execute, если не стандартный я сам формирую массив товаров

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите