Commit c7d997a91f5dae14617545be1a9cdf91e4f9e2be
1 parent
4ace1a69
add variantSku
Showing
2 changed files
with
49 additions
and
41 deletions
Show diff stats
helpers/FilterHelper.php
| ... | ... | @@ -119,32 +119,41 @@ |
| 119 | 119 | * @return mixed |
| 120 | 120 | */ |
| 121 | 121 | public static function getProductVariantOptions($categoryId,$langId){ |
| 122 | - $result = \Yii::$app->db->cache(function () use($categoryId,$langId) { | |
| 123 | - return ( new Query() )->distinct()->select('tax_group_lang.alias') | |
| 124 | - ->from('product_variant_option') | |
| 125 | - ->innerJoin( | |
| 126 | - 'tax_option', | |
| 127 | - 'product_variant_option.option_id = tax_option.id' | |
| 128 | - ) | |
| 129 | - ->innerJoin( | |
| 130 | - 'tax_group', | |
| 131 | - 'tax_group.id = tax_option.tax_group_id' | |
| 132 | - ) | |
| 133 | - ->innerJoin( | |
| 134 | - 'tax_group_lang', | |
| 135 | - 'tax_group_lang.tax_group_id = tax_group.id' | |
| 136 | - ) | |
| 137 | - ->innerJoin( | |
| 138 | - 'tax_group_to_category', | |
| 139 | - 'tax_group_to_category.tax_group_id = tax_group.id' | |
| 140 | - ) | |
| 141 | - ->where([ | |
| 142 | - 'tax_group_lang.language_id' => $langId, | |
| 143 | - 'tax_group_to_category.category_id' => $categoryId, | |
| 144 | - 'tax_group.is_filter' => true | |
| 145 | - ])->all(); | |
| 146 | - },60*60*24); | |
| 147 | - return ArrayHelper::getColumn($result,'alias'); | |
| 122 | + | |
| 123 | + $cacheKey = [ | |
| 124 | + 'OptionsForFilter', | |
| 125 | + 'categoryId' => $categoryId, | |
| 126 | + 'langId' =>$langId | |
| 127 | + ]; | |
| 128 | + if (!$OptionsForFilter = \Yii::$app->cache->get($cacheKey)) { | |
| 129 | + $OptionsForFilter = ( new Query() )->distinct()->select('tax_group_lang.alias') | |
| 130 | + ->from('product_variant_option') | |
| 131 | + ->innerJoin( | |
| 132 | + 'tax_option', | |
| 133 | + 'product_variant_option.option_id = tax_option.id' | |
| 134 | + ) | |
| 135 | + ->innerJoin( | |
| 136 | + 'tax_group', | |
| 137 | + 'tax_group.id = tax_option.tax_group_id' | |
| 138 | + ) | |
| 139 | + ->innerJoin( | |
| 140 | + 'tax_group_lang', | |
| 141 | + 'tax_group_lang.tax_group_id = tax_group.id' | |
| 142 | + ) | |
| 143 | + ->innerJoin( | |
| 144 | + 'tax_group_to_category', | |
| 145 | + 'tax_group_to_category.tax_group_id = tax_group.id' | |
| 146 | + ) | |
| 147 | + ->where([ | |
| 148 | + 'tax_group_lang.language_id' => $langId, | |
| 149 | + 'tax_group_to_category.category_id' => $categoryId, | |
| 150 | + 'tax_group.is_filter' => true | |
| 151 | + ])->all(); | |
| 152 | + $OptionsForFilter = ArrayHelper::getColumn($OptionsForFilter,'alias'); | |
| 153 | + \Yii::$app->cache->set($cacheKey, $OptionsForFilter, 3600 * 24); | |
| 154 | + } | |
| 155 | + | |
| 156 | + return $OptionsForFilter; | |
| 148 | 157 | } |
| 149 | 158 | |
| 150 | 159 | ... | ... |
models/ProductFrontendSearch.php
| ... | ... | @@ -4,6 +4,7 @@ |
| 4 | 4 | |
| 5 | 5 | use artweb\artbox\ecommerce\helpers\FilterHelper; |
| 6 | 6 | use artweb\artbox\ecommerce\models\Category; |
| 7 | + use artweb\artbox\language\models\Language; | |
| 7 | 8 | use yii\base\Model; |
| 8 | 9 | use yii\data\ActiveDataProvider; |
| 9 | 10 | use yii\data\ArrayDataProvider; |
| ... | ... | @@ -117,22 +118,18 @@ |
| 117 | 118 | return $dataProvider; |
| 118 | 119 | } |
| 119 | 120 | |
| 120 | - public function getSearchQuery($category = null, $params = [], $in_stock = true) | |
| 121 | + | |
| 122 | + /** | |
| 123 | + * @param Category $category | |
| 124 | + * @param array $params | |
| 125 | + * @param bool $in_stock | |
| 126 | + * @return mixed | |
| 127 | + */ | |
| 128 | + public function getSearchQuery($category, $params = [], $in_stock = true) | |
| 121 | 129 | { |
| 122 | 130 | |
| 123 | - if (!empty( $category )) { | |
| 124 | - /** @var ActiveQuery $query */ | |
| 125 | - /**@var Category $category * */ | |
| 126 | - $query = $category->getProducts(); | |
| 131 | + $query = $category->getProducts(); | |
| 127 | 132 | |
| 128 | - } else { | |
| 129 | - $query = Product::find() | |
| 130 | - ->joinWith( | |
| 131 | - [ | |
| 132 | - 'category.lang', | |
| 133 | - ] | |
| 134 | - ); | |
| 135 | - } | |
| 136 | 133 | |
| 137 | 134 | $query->select([ 'product.*' ]); |
| 138 | 135 | $query->joinWith( |
| ... | ... | @@ -176,7 +173,8 @@ |
| 176 | 173 | ] |
| 177 | 174 | ); |
| 178 | 175 | |
| 179 | - FilterHelper::setQueryParams($query, $params); | |
| 176 | + $lang = Language::getCurrent(); | |
| 177 | + FilterHelper::setQueryParams($query, $params, $category->id, $lang->id); | |
| 180 | 178 | return $query; |
| 181 | 179 | } |
| 182 | 180 | |
| ... | ... | @@ -202,7 +200,8 @@ |
| 202 | 200 | // Price filter fix |
| 203 | 201 | unset( $params[ 'prices' ] ); |
| 204 | 202 | |
| 205 | - FilterHelper::setQueryParams($query, $params); | |
| 203 | + $lang = Language::getCurrent(); | |
| 204 | + FilterHelper::setQueryParams($query, $params, $category->id, $lang->id); | |
| 206 | 205 | $query->andWhere( |
| 207 | 206 | [ |
| 208 | 207 | '>=', | ... | ... |