Commit 466144f8e553921568d6c907b14f6ec4b6e49f80

Authored by Administrator
1 parent 2211268d

20.07.16

backend/views/seo-dynamic/_form.php
... ... @@ -22,19 +22,6 @@ use yii\widgets\ActiveForm;
22 22  
23 23 <?= $form->field($model, 'param')->textInput(['maxlength' => true]) ?>
24 24  
25   - <!-- --><?//= $form->field($model, 'param')->dropDownList([
26   -// 'filter' => 'filter'
27   -// ],[ 'prompt' => 'Выберите параметр...']); ?>
28   -<!-- <div>-->
29   -<!-- --><?//=
30   -// $form->field($model, 'filter_mod')
31   -// ->radioList(
32   -// ['onefilter' => 'One filter', 'twofilters' => 'Two filters', 'brand_assigment' => 'Brand and assignment ']
33   -// )
34   -// ->label(false);
35   -// ?>
36   -<!-- </div>-->
37   -
38 25 <?= $form->field($model, 'key')->textInput(['maxlength' => true]) ?>
39 26  
40 27 <?= $form->field($model, 'fields')->textInput(['maxlength' => true]) ?>
... ...
frontend/controllers/CatalogController.php
... ... @@ -37,6 +37,7 @@ class CatalogController extends \yii\web\Controller
37 37 /** @var Category $category */
38 38 $category = Yii::$app->request->get('category');
39 39 $filter = Yii::$app->request->get('filters', []);
  40 + $filter_check = $filter;
40 41  
41 42 if (empty($category->category_id) && empty($word)) {
42 43 return $this->render(
... ... @@ -50,6 +51,7 @@ class CatalogController extends \yii\web\Controller
50 51 $optionsList = ArrayHelper::getColumn(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(),'alias');
51 52  
52 53 if ( !empty($filter['brands']) ) {
  54 + unset($filter_check['brands']);
53 55 $brands = Brand::find()->select('brand_id')->where(['in', 'alias', $filter['brands']])->all();
54 56 $params['brands'] = [];
55 57 foreach ($brands as $brand) {
... ... @@ -58,6 +60,7 @@ class CatalogController extends \yii\web\Controller
58 60 }
59 61  
60 62 if ( !empty($filter['special']) ) {
  63 + unset($filter_check['special']);
61 64 if (!is_array($filter['special'])) {
62 65 $filter['special'] = [$filter['special']];
63 66 }
... ... @@ -73,12 +76,8 @@ class CatalogController extends \yii\web\Controller
73 76 }
74 77  
75 78  
76   -// if ( !empty($filter['options']) ) {
77   -// $params['options'] = $filter['options'];
78   -// }
79   -
80   -
81 79 if ( !empty($filter['prices']) ) {
  80 + unset($filter_check['prices']);
82 81 $params['prices'] = $filter['prices'];
83 82 }
84 83  
... ... @@ -87,11 +86,16 @@ class CatalogController extends \yii\web\Controller
87 86 foreach($optionsList as $optionList){
88 87  
89 88 if(isset($filter[$optionList])){
  89 + unset($filter_check[$optionList]);
90 90 $params[$optionList] = $filter[$optionList];
91 91 }
92 92  
93 93 }
94 94  
  95 + if(!empty($filter_check)){
  96 + $filter = array_diff_key($filter,$filter_check);
  97 + Yii::$app->response->redirect(['catalog/category', 'category' => $category, 'filters' =>$filter],301);
  98 + }
95 99  
96 100 $productModel = new ProductFrontendSearch();
97 101 //$productQuery = $productModel->getSearchQuery($category, $params);
... ...
frontend/widgets/Seo.php
... ... @@ -4,8 +4,10 @@ namespace frontend\widgets;
4 4 use common\models\SeoDynamic;
5 5  
6 6 use common\modules\product\models\Brand;
  7 +use common\modules\rubrication\models\TaxGroup;
7 8 use common\modules\rubrication\models\TaxOption;
8 9 use yii\base\Widget;
  10 +use yii\helpers\ArrayHelper;
9 11 use yii\helpers\Html;
10 12  
11 13 class Seo extends Widget
... ... @@ -148,31 +150,34 @@ class Seo extends Widget
148 150 $array['brand'] = $model->name;
149 151 }
150 152  
151   - if (isset($filter["pol"]) && count($filter["pol"]) == 1) {
152 153  
153   - $model = TaxOption::find()->where(['alias' => $filter["pol"]])->one();
154   - $array['sex'] = $model->value->value;
  154 + $optionsList = ArrayHelper::getColumn(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(),'alias');
155 155  
156 156  
157   - }
  157 + foreach($optionsList as $optionList){
158 158  
159   - if (isset($filter["naznacenie"]) && count($filter["naznacenie"]) == 1) {
160 159  
161   - $model = TaxOption::find()->where(['alias' => $filter["naznacenie"]])->one();
162   - $array['naz'] = $model->value->value;
  160 + if (isset($filter[$optionList]) && count($filter[$optionList]) == 1) {
163 161  
164   - }
  162 + $model = TaxOption::find()->where(['alias' =>$filter[$optionList]])->one();
  163 + $array[$optionList] = $model->value->value;
  164 +
  165 +
  166 + }
165 167  
166   - if (isset($filter["god"]) && count($filter["god"]) == 1) {
167 168  
168   - $model = TaxOption::find()->where(['alias' => $filter["god"]])->one();
169   - $array['year'] = $model->value->value;
170 169  
171 170 }
172 171  
173   - return $this->getTitleString($array);
  172 + $title_string = $this->getTitleString($array);
  173 +
  174 + if($title_string){
  175 + return $title_string;
  176 + }
174 177  
175   - } else if (!empty($title)) {
  178 + }
  179 +
  180 + if (!empty($title)) {
176 181 return $title;
177 182 } else {
178 183 return $this->project_name;
... ... @@ -291,6 +296,11 @@ class Seo extends Widget
291 296 }
292 297  
293 298  
  299 + protected function findSeoByDynamicForFilters(){
  300 + return SeoDynamic::find()->joinWith('seoCategory')->where(['param' =>'filters'])->one();
  301 + }
  302 +
  303 +
294 304 protected function getViewData()
295 305 {
296 306 $params = $this->getView()->params;
... ... @@ -331,12 +341,17 @@ class Seo extends Widget
331 341 }
332 342  
333 343 public function getTitleString($array){
334   - $template = "{category} {naz} {brand} {sex} {year} купить в Украине, Киев, Харькове - цены, фото, отзывы | Rukzachok.com.ua";
335   - foreach ($array as $field_name => $field_value) {
336   - $template = str_replace('{' . $field_name . '}', mb_strtolower($field_value), $template);
  344 +
  345 + $template = SeoDynamic::find()->select('title')->where(['param' =>'filters'])->one();
  346 + if($template instanceof SeoDynamic){
  347 + foreach ($array as $field_name => $field_value) {
  348 + $template->title = str_replace('{' . $field_name . '}', mb_strtolower($field_value), $template->title);
  349 + }
  350 + $template = preg_replace('/\{.[^\}]*\}\s/','',$template->title);
  351 + return $template;
337 352 }
338   - $template = preg_replace('/\{.[^\}]*\}\s/','',$template);
339   - return $template;
  353 +
  354 + return false;
340 355  
341 356 }
342 357  
... ...