Как переопределить системный массив 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 ответ
Не знаю, поможет вам это или нет. Мне например в некоторых категориях необходимо водить товары не обычным способом, а по подкатегориям.
В моем случае подкатегории это серии товара. Стандартно, чтобы не делать лишних запросов к базе сделать не вышло.
Пришлось использовать кастомный routing.php в в wa-config/apps/shop/routing.php и для категорий просписать свой плагин. Плагин проверяет какой массив товаров нужен для данной категории, если стандартный то просто вызывается родительский execute, если не стандартный я сам формирую массив товаров