Commit 01905ec61675d700172288819755ea2317551d85

Authored by Yarik
1 parent aa5c63f4

Filter fixing

common/modules/product/helpers/ProductHelper.php
... ... @@ -292,4 +292,12 @@
292 292  
293 293 return $query;
294 294 }
  295 +
  296 + public static function addLastCategory($category_id) {
  297 + \Yii::$app->session->set('last_category_id', $category_id);
  298 + }
  299 +
  300 + public static function getLastCategory() {
  301 + return \Yii::$app->session->get('last_category_id');
  302 + }
295 303 }
296 304 \ No newline at end of file
... ...
common/modules/product/models/Product.php
... ... @@ -11,6 +11,7 @@ use common\modules\rubrication\models\TaxGroup;
11 11 use common\modules\rubrication\models\TaxOption;
12 12 use Yii;
13 13 use common\modules\relation\relationBehavior;
  14 +use yii\db\ActiveQuery;
14 15 use yii\db\ActiveRecord;
15 16 use yii\helpers\ArrayHelper;
16 17  
... ... @@ -240,7 +241,10 @@ class Product extends \yii\db\ActiveRecord
240 241 public function getVariantsWithFilters(){
241 242 return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->with('filters');
242 243 }
243   -
  244 +
  245 + /**
  246 + * @return ActiveQuery
  247 + */
244 248 public function getCategory() {
245 249 return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']);
246 250 }
... ... @@ -263,12 +267,12 @@ class Product extends \yii\db\ActiveRecord
263 267 return $groups;
264 268 }
265 269  
266   - public function getActiveProperties() {
  270 + public function getActiveProperties($category_id) {
267 271 $groups = $options = [];
268 272 foreach ($this->options as $option) {
269 273 $options[$option->tax_group_id][] = $option;
270 274 }
271   - foreach (TaxGroup::find()->where(['tax_group_id' => array_keys($options), 'display' => TRUE])->all() as $group) {
  275 + foreach (TaxGroup::find()->joinWith('categories')->where(['tax_group.tax_group_id' => array_keys($options), 'tax_group.display' => TRUE, 'category.category_id' => $category_id])->all() as $group) {
272 276 if (!empty($options[$group->tax_group_id])) {
273 277 $group->_options = $options[$group->tax_group_id];
274 278 $groups[] = $group;
... ... @@ -432,6 +436,6 @@ class Product extends \yii\db\ActiveRecord
432 436 public function getTaxGroupsByLevel($level)
433 437 {
434 438 $categories = ArrayHelper::getColumn($this->categories, 'category_id');
435   - return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->where(['relation.entity2_id' => $categories])->where(['level' => $level]);
  439 + return TaxGroup::find()->distinct()->innerJoin('relation', 'entity1_id = tax_group_id')->andWhere(['relation.entity2_id' => $categories])->andWhere(['level' => $level]);
436 440 }
437 441 }
... ...
common/modules/rubrication/models/TaxGroup.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 namespace common\modules\rubrication\models;
4 4  
  5 +use common\modules\product\models\Category;
5 6 use common\modules\relation\relationBehavior;
6 7 use Yii;
7 8  
... ... @@ -99,6 +100,12 @@ class TaxGroup extends \yii\db\ActiveRecord
99 100 return $this->hasMany(TaxGroupToGroup::className(), ['tax_group1_id' => 'tax_group_id'])->inverseOf('taxGroup1');
100 101 }
101 102  
  103 + public function getCategories()
  104 + {
  105 + return $this->hasMany(Category::className(), ['category_id' => 'entity2_id'])
  106 + ->viaTable('relation', ['entity1_id' => 'tax_group_id']);
  107 + }
  108 +
102 109 /**
103 110 * @return \yii\db\ActiveQuery
104 111 */
... ...
frontend/controllers/CatalogController.php
... ... @@ -45,6 +45,8 @@
45 45 return $this->render('catalog');
46 46 }
47 47  
  48 + ProductHelper::addLastCategory($category->category_id);
  49 +
48 50 $params = [ ];
49 51  
50 52 $optionsList = ArrayHelper::getColumn(TaxGroup::find()
... ... @@ -172,9 +174,18 @@
172 174  
173 175 ProductHelper::addLastProsucts($product->product_id);
174 176  
  177 + $category = null;
  178 + $last_category_id = ProductHelper::getLastCategory();
  179 + if(!empty($last_category_id)) {
  180 + $category = $product->getCategory()->andWhere(['category_id' => $last_category_id])->one();
  181 + }
  182 + if(empty($category)) {
  183 + $category = $product->category;
  184 + }
  185 +
175 186 return $this->render('product', [
176 187 'product' => $product,
177   - 'category' => $product->category,
  188 + 'category' => $category,
178 189 ]);
179 190 }
180 191  
... ...
frontend/views/catalog/product.php
1 1 <?php
  2 + /**
  3 + * @var Category $category
  4 + */
2 5 // use common\modules\comment\models\Comment;
3 6 // use common\modules\comment\models\Rating;
4 7 // use common\modules\comment\widgets\CommentWidget;
5 8 use common\modules\comment\widgets\CommentWidget;
6   - use kartik\rating\StarRating;
7   - use yii\helpers\Html;
8   - use yii\widgets\ActiveForm;
9   - use yii\widgets\Breadcrumbs;
  9 + use common\modules\product\models\Category;
10 10 use yii\web\View;
11 11 use yii\helpers\Url;
12 12 use frontend\widgets\Seo;
13 13  
14   - $this->params[ 'seo' ][ 'key' ] = $product->category->categoryName->value;
  14 + $this->params[ 'seo' ][ 'key' ] = $category->categoryName->value;
15 15 $this->params[ 'seo' ][ 'fields' ][ 'name' ] = $product->fullname;
16 16 $this->params[ 'seo' ][ 'h1' ] = !empty( Seo::widget([ 'row' => 'h1' ]) ) ? Seo::widget([ 'row' => 'h1' ]) : $product->fullname;
17 17  
... ... @@ -30,10 +30,10 @@
30 30 'url' => [ 'catalog/category' ],
31 31 ];
32 32 $this->params[ 'breadcrumbs' ][] = [
33   - 'label' => $product->category->categoryName->value,
  33 + 'label' => $category->categoryName->value,
34 34 'url' => [
35 35 'catalog/category',
36   - 'category' => $product->category,
  36 + 'category' => $category,
37 37 ],
38 38 ];
39 39 $this->params[ 'breadcrumbs' ][] = $product->fullname . ' #' . $product->enabledVariants[ 0 ]->sku;
... ... @@ -126,8 +126,8 @@
126 126 data-imageoriginal="<?= $variant->imageUrl ?>"
127 127 title="<?= $product->fullname ?>">
128 128 <?= \common\components\artboximage\ArtboxImageHelper::getImage($variant->imageUrl, 'product_variant', [
129   - 'alt' => $product->category->categoryName->value . ' ' . $product->fullname,
130   - 'title' => $product->category->categoryName->value . ' ' . $product->fullname,
  129 + 'alt' => $category->categoryName->value . ' ' . $product->fullname,
  130 + 'title' => $category->categoryName->value . ' ' . $product->fullname,
131 131 ]) ?>
132 132 </a>
133 133 </li>
... ... @@ -228,7 +228,7 @@
228 228 <li><a href="#">Характеристики</a>
229 229 <div class="info">
230 230 <p>Бренд: <?= $product->brand->name ?></p>
231   - <?php foreach($product->activeProperties as $group): ?>
  231 + <?php foreach($product->getActiveProperties($category->category_id) as $group): ?>
232 232 <p><?= $group->name ?> <?php foreach($group->_options as $option) : ?>&nbsp;<?= $option->ValueRenderHTML ?><?php endforeach ?></p>
233 233 <?php endforeach; ?>
234 234 </div>
... ... @@ -262,8 +262,8 @@
262 262 <center>
263 263 <a href="#" rel="shadowbox[gal]" id="picoriginal"><?= \common\components\artboximage\ArtboxImageHelper::getImage($product->enabledVariants[ 0 ]->imageUrl, 'product_view', [
264 264 'id' => 'pic',
265   - 'alt' => $product->category->categoryName->value . ' ' . $product->fullname,
266   - 'title' => $product->category->categoryName->value . ' ' . $product->fullname,
  265 + 'alt' => $category->categoryName->value . ' ' . $product->fullname,
  266 + 'title' => $category->categoryName->value . ' ' . $product->fullname,
267 267 ]) ?></a>
268 268 </center>
269 269 </div>
... ... @@ -271,8 +271,8 @@
271 271 <?php foreach($product->images as $image): ?>
272 272 <li><a href="<?= $image->imageUrl ?>" rel="shadowbox[gal]">
273 273 <?= \common\components\artboximage\ArtboxImageHelper::getImage($image->imageUrl, 'product_trumb2', [
274   - 'alt' => $product->category->categoryName->value . ' ' . $product->fullname,
275   - 'title' => $product->category->categoryName->value . ' ' . $product->fullname,
  274 + 'alt' => $category->categoryName->value . ' ' . $product->fullname,
  275 + 'title' => $category->categoryName->value . ' ' . $product->fullname,
276 276 ]) ?>
277 277 </a></li>
278 278 <?php endforeach; ?>
... ...
frontend/views/search/index.php
... ... @@ -21,17 +21,6 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = [&#39;label&#39; =&gt; &#39;Поиск&#39;, &#39;url&#39; =&gt; [&#39;catalog/ca
21 21 $this->params['seo']['meta']= 'noindex,follow';
22 22 ?>
23 23  
24   -
25   -<nav class="bread-crumbs">
26   - <?= \yii\widgets\Breadcrumbs::widget ([
27   - 'links' => $this->params['breadcrumbs'],
28   - ])
29   - ?>
30   -
31   -
32   - <div class="both"></div>
33   -</nav>
34   -
35 24 <div class="loyout">
36 25 <?php if(!empty($categories)) :?>
37 26 <div class="leftbar">
... ...