Commit 9fa9adf7948489cc2e4d6736ee22715ef9296710
1 parent
132aac99
14.09.16
Showing
1 changed file
with
118 additions
and
28 deletions
Show diff stats
frontend/widgets/Seo.php
@@ -56,7 +56,7 @@ class Seo extends Widget | @@ -56,7 +56,7 @@ class Seo extends Widget | ||
56 | foreach ($seoData as $key => $value) { | 56 | foreach ($seoData as $key => $value) { |
57 | $this->$key = $value; | 57 | $this->$key = $value; |
58 | } | 58 | } |
59 | - | 59 | + |
60 | 60 | ||
61 | switch ($this->row) { | 61 | switch ($this->row) { |
62 | case self::SEO_TEXT: | 62 | case self::SEO_TEXT: |
@@ -124,7 +124,7 @@ class Seo extends Widget | @@ -124,7 +124,7 @@ class Seo extends Widget | ||
124 | 124 | ||
125 | } else if (isset($filter["naznacenie"]) && count($filter["naznacenie"]) == 1) { | 125 | } else if (isset($filter["naznacenie"]) && count($filter["naznacenie"]) == 1) { |
126 | 126 | ||
127 | - $model = TaxOption::find()->where(['alias' => $filter["naznacenie"]])->one(); | 127 | + $model = TaxOption::find()->where(['alias' => $filter["naznacenie"]])->one(); |
128 | if(!$model instanceof TaxOption){ | 128 | if(!$model instanceof TaxOption){ |
129 | 129 | ||
130 | \Yii::$app->response->redirect(['/site/error'],404); | 130 | \Yii::$app->response->redirect(['/site/error'],404); |
@@ -145,7 +145,7 @@ class Seo extends Widget | @@ -145,7 +145,7 @@ class Seo extends Widget | ||
145 | } else { | 145 | } else { |
146 | return $this->selectSeoData(self::H1); | 146 | return $this->selectSeoData(self::H1); |
147 | } | 147 | } |
148 | - break; | 148 | + break; |
149 | case self::TITLE: | 149 | case self::TITLE: |
150 | 150 | ||
151 | $filter = \Yii::$app->request->get('filters', []); | 151 | $filter = \Yii::$app->request->get('filters', []); |
@@ -220,6 +220,18 @@ class Seo extends Widget | @@ -220,6 +220,18 @@ class Seo extends Widget | ||
220 | 'content' => $description | 220 | 'content' => $description |
221 | ]); | 221 | ]); |
222 | 222 | ||
223 | + } else { | ||
224 | + | ||
225 | + $filter = \Yii::$app->request->get('filters', []); | ||
226 | + | ||
227 | + if(!empty($filter)){ | ||
228 | + $array = $this->arrayBuilder($filter); | ||
229 | + $this->getView()->registerMetaTag([ | ||
230 | + 'name' => 'description', | ||
231 | + 'content' => $this->getDescriptionString($array) | ||
232 | + ]); | ||
233 | + } | ||
234 | + | ||
223 | } | 235 | } |
224 | 236 | ||
225 | break; | 237 | break; |
@@ -227,31 +239,20 @@ class Seo extends Widget | @@ -227,31 +239,20 @@ class Seo extends Widget | ||
227 | 239 | ||
228 | $meta = $this->selectSeoData(self::META); | 240 | $meta = $this->selectSeoData(self::META); |
229 | 241 | ||
230 | - $widgetData = static::findSeoByUrl($this->url); | ||
231 | - | ||
232 | $filter = \Yii::$app->request->get('filters', []); | 242 | $filter = \Yii::$app->request->get('filters', []); |
233 | $sort = \Yii::$app->request->get('sort', []); | 243 | $sort = \Yii::$app->request->get('sort', []); |
234 | $paginate = \Yii::$app->request->get('page', []); | 244 | $paginate = \Yii::$app->request->get('page', []); |
235 | 245 | ||
236 | 246 | ||
237 | - if (!empty($meta)) { | ||
238 | 247 | ||
239 | - $this->getView()->registerMetaTag([ | ||
240 | - 'name' => 'robots', | ||
241 | - 'content' => $meta | ||
242 | - ]); | ||
243 | - | ||
244 | - } | ||
245 | - else if ($widgetData instanceof \common\models\Seo) { | 248 | + if (!empty($meta) && empty($sort) && empty($paginate) && !isset($filter['prices']) ) { |
246 | 249 | ||
247 | $this->getView()->registerMetaTag([ | 250 | $this->getView()->registerMetaTag([ |
248 | 'name' => 'robots', | 251 | 'name' => 'robots', |
249 | - 'content' =>'index,follow' | 252 | + 'content' => $meta |
250 | ]); | 253 | ]); |
251 | 254 | ||
252 | - } | ||
253 | - | ||
254 | - else if(!empty($filter['special'])){ | 255 | + } else if(!empty($filter['special'])){ |
255 | 256 | ||
256 | $this->getView()->registerMetaTag([ | 257 | $this->getView()->registerMetaTag([ |
257 | 'name' => 'robots', | 258 | 'name' => 'robots', |
@@ -259,24 +260,24 @@ class Seo extends Widget | @@ -259,24 +260,24 @@ class Seo extends Widget | ||
259 | ]); | 260 | ]); |
260 | 261 | ||
261 | } else if ( | 262 | } else if ( |
262 | - isset($filter['brands']) && count($filter['brands']) > 1 || isset($filter) && $this->checkFilter($filter) | 263 | + isset($filter['brands']) && count($filter['brands']) > 1 |
264 | + || isset($filter) && $this->checkFilter($filter)|| !empty($sort) || !empty($paginate) || isset($filter['prices']) | ||
263 | 265 | ||
264 | ) { | 266 | ) { |
267 | + | ||
268 | + | ||
265 | $this->getView()->registerMetaTag([ | 269 | $this->getView()->registerMetaTag([ |
266 | 'name' => 'robots', | 270 | 'name' => 'robots', |
267 | 'content' => 'noindex,nofollow' | 271 | 'content' => 'noindex,nofollow' |
268 | ]); | 272 | ]); |
269 | 273 | ||
270 | - } else if ( | ||
271 | - isset($filter['brands']) && count($filter['brands']) <= 1 && isset($filter) && count($filter, COUNT_RECURSIVE) >= 2 | ||
272 | - || isset($filter) && count($filter, COUNT_RECURSIVE) >= 2 | ||
273 | - || !empty($sort) || !empty($paginate) || isset($filter['prices']) | ||
274 | - ) { | 274 | + } else if ( isset($filter) && count($filter, COUNT_RECURSIVE) > 4) { |
275 | $this->getView()->registerMetaTag([ | 275 | $this->getView()->registerMetaTag([ |
276 | 'name' => 'robots', | 276 | 'name' => 'robots', |
277 | 'content' => 'noindex,follow' | 277 | 'content' => 'noindex,follow' |
278 | ]); | 278 | ]); |
279 | - } else { | 279 | + } |
280 | + else { | ||
280 | 281 | ||
281 | $this->getView()->registerMetaTag([ | 282 | $this->getView()->registerMetaTag([ |
282 | 'name' => 'robots', | 283 | 'name' => 'robots', |
@@ -363,18 +364,18 @@ class Seo extends Widget | @@ -363,18 +364,18 @@ class Seo extends Widget | ||
363 | $result = ''; | 364 | $result = ''; |
364 | 365 | ||
365 | $widgetData = static::findSeoByUrl($this->url); | 366 | $widgetData = static::findSeoByUrl($this->url); |
366 | - | 367 | + |
367 | if ($widgetData instanceof \common\models\Seo) { | 368 | if ($widgetData instanceof \common\models\Seo) { |
368 | 369 | ||
369 | $result = $widgetData->$param; | 370 | $result = $widgetData->$param; |
370 | 371 | ||
371 | } else if (!empty($this->$param)) { | 372 | } else if (!empty($this->$param)) { |
372 | $result = $this->$param; | 373 | $result = $this->$param; |
373 | - | 374 | + |
374 | } else { | 375 | } else { |
375 | 376 | ||
376 | $widgetData = $this->findSeoByDynamic(); | 377 | $widgetData = $this->findSeoByDynamic(); |
377 | - | 378 | + |
378 | if ($widgetData instanceof SeoDynamic) { | 379 | if ($widgetData instanceof SeoDynamic) { |
379 | 380 | ||
380 | $result = $widgetData->$param; | 381 | $result = $widgetData->$param; |
@@ -401,11 +402,100 @@ class Seo extends Widget | @@ -401,11 +402,100 @@ class Seo extends Widget | ||
401 | return false; | 402 | return false; |
402 | 403 | ||
403 | } | 404 | } |
404 | - | 405 | + |
405 | public function my_mb_ucfirst($str) { | 406 | public function my_mb_ucfirst($str) { |
406 | $str = strtolower($str); | 407 | $str = strtolower($str); |
407 | $fc = mb_strtoupper(mb_substr($str, 0, 1)); | 408 | $fc = mb_strtoupper(mb_substr($str, 0, 1)); |
408 | return $fc.mb_substr($str, 1); | 409 | return $fc.mb_substr($str, 1); |
409 | } | 410 | } |
410 | 411 | ||
412 | + public function getDescriptionString($array){ | ||
413 | + // "{Название раздела | Название блока фильтра: Фильтр 1 | Название блока фильтра: Фильтр 2 | Название блока фильтра: Фильтр 3}. по самой лучшей цене с гарантией от производителя - Ruzkachok.com.ua"; | ||
414 | + $row = ''; | ||
415 | + foreach($array as $name => $field){ | ||
416 | + | ||
417 | + if($name == 'category' ){ | ||
418 | + $row = $field.' '.$row; | ||
419 | + } else { | ||
420 | + $row .= $field['name'] .' '.$field['value'].' ' ; | ||
421 | + } | ||
422 | + | ||
423 | + | ||
424 | + | ||
425 | + } | ||
426 | + $row = substr($row, 0,-2 ); | ||
427 | + $row .= " по самой лучшей цене с гарантией от производителя - Ruzkachok.com.ua"; | ||
428 | + return $row; | ||
429 | + | ||
430 | + } | ||
431 | + | ||
432 | + | ||
433 | + public function getNameString($array){ | ||
434 | + $row = ''; | ||
435 | + foreach($array as $name => $field){ | ||
436 | + | ||
437 | + if($name == 'category' ){ | ||
438 | + $row = $field.' '.$row; | ||
439 | + } else { | ||
440 | + $row .= $field['name'] .' '.$field['value'].' ' ; | ||
441 | + } | ||
442 | + | ||
443 | + | ||
444 | + | ||
445 | + } | ||
446 | + $row = substr($row, 0,-2 ); | ||
447 | + return $row; | ||
448 | + | ||
449 | + } | ||
450 | + | ||
451 | + public function arrayBuilder($filter) | ||
452 | + { | ||
453 | + | ||
454 | + $array = [ | ||
455 | + 'category' => $this->category_name | ||
456 | + ]; | ||
457 | + | ||
458 | + | ||
459 | + if (isset($filter['brands']) && count($filter['brands']) == 1) { | ||
460 | + $model = Brand::find()->where(['alias' => $filter['brands'][0]])->one(); | ||
461 | + if (!$model instanceof Brand) { | ||
462 | + | ||
463 | + \Yii::$app->response->redirect(['/site/error'], 404); | ||
464 | + } else { | ||
465 | + $array['brand']['name'] = 'Бренд'; | ||
466 | + $array['brand']['value'] = $model->name; | ||
467 | + } | ||
468 | + | ||
469 | + } | ||
470 | + | ||
471 | + | ||
472 | + $optionsList = ArrayHelper::map(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(), 'alias', 'name'); | ||
473 | + | ||
474 | + | ||
475 | + foreach ($optionsList as $optionList => $name) { | ||
476 | + | ||
477 | + | ||
478 | + if (isset($filter[$optionList]) && count($filter[$optionList]) == 1) { | ||
479 | + | ||
480 | + $model = TaxOption::find()->where(['alias' => $filter[$optionList]])->one(); | ||
481 | + if (!$model instanceof TaxOption) { | ||
482 | + | ||
483 | + \Yii::$app->response->redirect(['site/error'], 404); | ||
484 | + } else { | ||
485 | + $array[$optionList]['value'] = $model->value; | ||
486 | + $array[$optionList]['name'] = $name; | ||
487 | + } | ||
488 | + | ||
489 | + | ||
490 | + } | ||
491 | + | ||
492 | + | ||
493 | + } | ||
494 | + | ||
495 | + return $array; | ||
496 | + | ||
497 | + } | ||
498 | + | ||
499 | + | ||
500 | + | ||
411 | } | 501 | } |
412 | \ No newline at end of file | 502 | \ No newline at end of file |