From 2848e106eab16a873bf93200bc370ea911055937 Mon Sep 17 00:00:00 2001 From: Karnovsky A Date: Mon, 30 May 2016 15:11:59 +0300 Subject: [PATCH] Fix last-products widget --- common/modules/product/helpers/ProductHelper.php | 19 +++++++++++++++---- common/modules/product/widgets/views/product_smart.php | 33 ++++++++++++++------------------- common/modules/product/widgets/views/products_block.php | 2 +- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/common/modules/product/helpers/ProductHelper.php b/common/modules/product/helpers/ProductHelper.php index 2fc32e5..ee2858a 100755 --- a/common/modules/product/helpers/ProductHelper.php +++ b/common/modules/product/helpers/ProductHelper.php @@ -62,7 +62,10 @@ class ProductHelper extends Object { public static function addLastProsucts($product_id) { $last_products = self::getLastProducts(); if (!in_array($product_id, $last_products)) { - $last_products[] = $product_id; + $last_products[] = intval($product_id); + if (count($last_products) > 16) { + array_shift($last_products); + } Yii::$app->session->set('last_products', $last_products); } } @@ -70,10 +73,18 @@ class ProductHelper extends Object { public static function getLastProducts($as_object = false) { $last_products = Yii::$app->session->get('last_products', []); if ($as_object) { - $last_products = array_reverse(Product::find()->where([Product::tableName() .'.product_id' => $last_products])->all()); -// $last_products = array_reverse(Product::find()->joinWith('variants')->where([Product::tableName() .'.product_id' => $last_products])->andWhere(['!=', ProductVariant::tableName() .'.stock', 0])->all()); + $_products = []; + foreach(Product::find()->joinWith(['variant'])->where([Product::tableName() .'.product_id' => $last_products])->andWhere(['!=', ProductVariant::tableName() .'.stock', 0])->all() as $product) { + $_products[$product->product_id] = $product; + } + foreach($last_products as &$last_product) { + if (empty($_products[$last_product])) { + unset($last_product); + } + $last_product = $_products[$last_product]; + } } - return $last_products; + return array_reverse($last_products); } public static function getSpecialProducts($type, $count, $sort = null) { diff --git a/common/modules/product/widgets/views/product_smart.php b/common/modules/product/widgets/views/product_smart.php index 7cdff6e..1577322 100755 --- a/common/modules/product/widgets/views/product_smart.php +++ b/common/modules/product/widgets/views/product_smart.php @@ -8,10 +8,12 @@ use yii\helpers\Url; - imageUrl, 'list')?> + enabledVariant->imageUrl, 'list')?> + + is_top) || !empty($product->is_new) || !empty($product->akciya)) :?>