Commit 30d2133cee84456c3cc9394afa6bf0c5e0beb687
1 parent
bf6de24b
add variantSku
Showing
4 changed files
with
56 additions
and
98 deletions
Show diff stats
models/SeoDynamicLang.php
| ... | ... | @@ -48,7 +48,6 @@ |
| 48 | 48 | return [ |
| 49 | 49 | [ |
| 50 | 50 | [ |
| 51 | - 'meta_title', | |
| 52 | 51 | 'meta_description', |
| 53 | 52 | 'seo_text', |
| 54 | 53 | ], |
| ... | ... | @@ -101,8 +100,7 @@ |
| 101 | 100 | return [ |
| 102 | 101 | 'seo_dynamic_id' => Yii::t('app', 'seo_dynamic_id'), |
| 103 | 102 | 'language_id' => Yii::t('app', 'language_id'), |
| 104 | - 'title' => 'name', | |
| 105 | - 'meta_title' => 'title', | |
| 103 | + 'title' => 'title', | |
| 106 | 104 | 'h1' => 'h1', |
| 107 | 105 | 'key' => 'key', |
| 108 | 106 | 'meta' => 'meta', | ... | ... |
views/seo-dynamic/_form_language.php
| ... | ... | @@ -17,9 +17,6 @@ |
| 17 | 17 | <?= $form->field($model_lang, '[' . $language->id . ']title') |
| 18 | 18 | ->textInput([ 'maxlength' => true ]); ?> |
| 19 | 19 | |
| 20 | -<?= $form->field($model_lang, '[' . $language->id . ']meta_title') | |
| 21 | - ->textInput(); ?> | |
| 22 | - | |
| 23 | 20 | <?= $form->field($model_lang, '[' . $language->id . ']meta_description')->textarea() ?> |
| 24 | 21 | |
| 25 | 22 | <?= $form->field($model_lang, '[' . $language->id . ']key') | ... | ... |
views/seo-dynamic/index.php
widgets/Seo.php
| ... | ... | @@ -66,7 +66,7 @@ class Seo extends Widget |
| 66 | 66 | |
| 67 | 67 | if(empty($filter) && empty($sort) && empty($paginate) ){ |
| 68 | 68 | |
| 69 | - return $this->selectSeoData(self::SEO_TEXT); | |
| 69 | + return $this->prepareString($this->selectSeoData(self::SEO_TEXT)); | |
| 70 | 70 | |
| 71 | 71 | } else { |
| 72 | 72 | |
| ... | ... | @@ -84,13 +84,13 @@ class Seo extends Widget |
| 84 | 84 | |
| 85 | 85 | if ($widgetData instanceof SeoDynamic) { |
| 86 | 86 | |
| 87 | - $result = $widgetData->{self::SEO_TEXT}; | |
| 87 | + $result = $widgetData->lang->{self::SEO_TEXT}; | |
| 88 | 88 | |
| 89 | 89 | } |
| 90 | 90 | |
| 91 | 91 | } |
| 92 | 92 | |
| 93 | - return $this->replaceData($result); | |
| 93 | + return $this->prepareString($this->replaceData($result)); | |
| 94 | 94 | } |
| 95 | 95 | |
| 96 | 96 | |
| ... | ... | @@ -103,18 +103,18 @@ class Seo extends Widget |
| 103 | 103 | |
| 104 | 104 | if ($default != $this->{self::H1}) { |
| 105 | 105 | |
| 106 | - return $default; | |
| 106 | + return $this->prepareString($default); | |
| 107 | 107 | |
| 108 | 108 | |
| 109 | 109 | } else if(!empty($filter) && !$this->checkFilter($filter)){ |
| 110 | 110 | $array = $this->arrayBuilder($filter); |
| 111 | - return $this->getNameString($array); | |
| 111 | + return $this->prepareString($this->getNameString($array,$default)); | |
| 112 | 112 | } |
| 113 | 113 | else { |
| 114 | 114 | |
| 115 | - return $default; | |
| 115 | + return $this->prepareString($default); | |
| 116 | 116 | } |
| 117 | - break; | |
| 117 | + break; | |
| 118 | 118 | case self::TITLE: |
| 119 | 119 | |
| 120 | 120 | $filter = \Yii::$app->request->get('filters', []); |
| ... | ... | @@ -122,25 +122,23 @@ class Seo extends Widget |
| 122 | 122 | |
| 123 | 123 | $title = $this->selectSeoData(self::TITLE); |
| 124 | 124 | |
| 125 | - | |
| 126 | - if(!empty($filter) && $title == $this->title || !empty($filter) && empty($title)) { | |
| 125 | + if(!empty($filter) && $title == $this->{Seo::TITLE} || !empty($filter) && empty($this->{Seo::TITLE})) { | |
| 127 | 126 | |
| 128 | 127 | $array = $this->arrayBuilder($filter); |
| 129 | 128 | |
| 130 | - $title_string = $this->getTitleString($array); | |
| 129 | + $title_string = $this->getTitleString($array, $title); | |
| 131 | 130 | |
| 132 | 131 | if($title_string){ |
| 133 | - return $title_string; | |
| 132 | + return $this->prepareString($title_string); | |
| 134 | 133 | } |
| 135 | 134 | |
| 136 | 135 | } |
| 137 | 136 | |
| 138 | 137 | |
| 139 | 138 | if (!empty($title)) { |
| 140 | - | |
| 141 | - return $title; | |
| 139 | + return $this->prepareString($title); | |
| 142 | 140 | } else { |
| 143 | - return $this->project_name; | |
| 141 | + return $this->prepareString($this->project_name); | |
| 144 | 142 | } |
| 145 | 143 | |
| 146 | 144 | break; |
| ... | ... | @@ -151,7 +149,7 @@ class Seo extends Widget |
| 151 | 149 | |
| 152 | 150 | $this->getView()->registerMetaTag([ |
| 153 | 151 | 'name' => 'description', |
| 154 | - 'content' => $description | |
| 152 | + 'content' => $this->prepareString($description) | |
| 155 | 153 | ]); |
| 156 | 154 | |
| 157 | 155 | } else { |
| ... | ... | @@ -162,7 +160,7 @@ class Seo extends Widget |
| 162 | 160 | $array = $this->arrayBuilder($filter); |
| 163 | 161 | $this->getView()->registerMetaTag([ |
| 164 | 162 | 'name' => 'description', |
| 165 | - 'content' => $this->getDescriptionString($array) | |
| 163 | + 'content' => $this->prepareString($this->getDescriptionString($array,$description)) | |
| 166 | 164 | ]); |
| 167 | 165 | } |
| 168 | 166 | |
| ... | ... | @@ -205,8 +203,8 @@ class Seo extends Widget |
| 205 | 203 | ]); |
| 206 | 204 | |
| 207 | 205 | } else if ( |
| 208 | - isset($filter['brands']) && count($filter['brands']) > 1 && isset($filter) && count($filter, COUNT_RECURSIVE) >= 4 | |
| 209 | - || isset($filter) && count($filter, COUNT_RECURSIVE) > 4 | |
| 206 | + isset($filter['brands']) && count($filter['brands']) > 1 && isset($filter) && count($filter, COUNT_RECURSIVE) >= 2 | |
| 207 | + || isset($filter) && count($filter, COUNT_RECURSIVE) > 2 | |
| 210 | 208 | || !empty($sort) || !empty($paginate) || isset($filter['prices']) |
| 211 | 209 | ) { |
| 212 | 210 | |
| ... | ... | @@ -254,9 +252,7 @@ class Seo extends Widget |
| 254 | 252 | |
| 255 | 253 | protected function findSeoByDynamic() |
| 256 | 254 | { |
| 257 | -// print_r(\Yii::$app->controller->id); | |
| 258 | -// print_r(\Yii::$app->controller->action->id); | |
| 259 | -// die(); | |
| 255 | + | |
| 260 | 256 | if(!empty($this->key)){ |
| 261 | 257 | |
| 262 | 258 | $query = SeoDynamic::find()->joinWith('seoCategory')->where(['controller' => \Yii::$app->controller->id, 'action' => \Yii::$app->controller->action->id, 'key' => $this->key]); |
| ... | ... | @@ -297,110 +293,71 @@ class Seo extends Widget |
| 297 | 293 | |
| 298 | 294 | $widgetData = static::findSeoByUrl($this->url); |
| 299 | 295 | |
| 296 | + $widgetDynamicData = $this->findSeoByDynamic(); | |
| 297 | + | |
| 300 | 298 | if ($widgetData instanceof \artweb\artbox\seo\models\Seo) { |
| 301 | 299 | |
| 302 | 300 | $result = $widgetData->$param; |
| 303 | 301 | |
| 304 | - } else if (!empty($this->$param)) { | |
| 305 | - $widgetData = $this->findSeoByDynamic(); | |
| 306 | - | |
| 307 | - if ($widgetData instanceof SeoDynamic) { | |
| 302 | + } else if ($widgetDynamicData instanceof SeoDynamic) { | |
| 308 | 303 | |
| 309 | - $result = $widgetData->lang->$param; | |
| 310 | - | |
| 311 | - } | |
| 312 | - | |
| 313 | - } else { | |
| 304 | + $result = $widgetDynamicData->lang->$param; | |
| 314 | 305 | |
| 306 | + } else if(!empty($this->$param)) { | |
| 315 | 307 | $result = $this->$param; |
| 316 | - | |
| 317 | - | |
| 318 | - | |
| 319 | 308 | } |
| 320 | 309 | |
| 321 | 310 | return $this->replaceData($result); |
| 322 | 311 | |
| 323 | 312 | } |
| 324 | 313 | |
| 325 | - public function getTitleString($array){ | |
| 326 | - // "{Название раздела: Название блока фильтра | Фильтр 1 | Название блока фильтра: Фильтр 2 | Название блока фильтра: Фильтр 3} - купить в Киеве, Украине - интернет магазин Лінія Світла"; | |
| 314 | + public function getTitleString($array, $title){ | |
| 315 | + | |
| 327 | 316 | $row = ''; |
| 328 | 317 | foreach($array as $name => $field){ |
| 318 | + $row .= $field['name'] .' '.$field['value'].' ' ; | |
| 319 | + } | |
| 329 | 320 | |
| 330 | - if($name == 'category' ){ | |
| 331 | - $row = $field.' | '.$row; | |
| 332 | - } else { | |
| 333 | - $row .= $field['name'] .' '.$field['value'].' | ' ; | |
| 334 | - } | |
| 335 | - | |
| 336 | - | |
| 321 | + $template = preg_replace('/{filter}/',$row,$title); | |
| 337 | 322 | |
| 338 | - } | |
| 339 | - $row = substr($row, 0,-2 ); | |
| 340 | - $row .= " - купить в Киеве, Украине - интернет магазин Екстрим стайл"; | |
| 341 | - return $row; | |
| 342 | -// $template = SeoDynamic::find()->select('title')->where(['param' =>'filters'])->one(); | |
| 343 | -// if($template instanceof SeoDynamic){ | |
| 344 | -// foreach ($array as $field_name => $field_value) { | |
| 345 | -// $template->title = str_replace('{' . $field_name . '}', mb_strtolower($field_value), $template->title); | |
| 346 | -// } | |
| 347 | -// $template = preg_replace('/\{.[^\}]*\}\s/','',$template->title); | |
| 348 | -// return $template; | |
| 349 | -// } | |
| 350 | -// | |
| 351 | -// return false; | |
| 323 | + return $template; | |
| 352 | 324 | |
| 353 | 325 | } |
| 354 | 326 | |
| 355 | 327 | |
| 356 | - public function getDescriptionString($array){ | |
| 357 | - // "Лучшие цены на {Название раздела | Название блока фильтра: Фильтр 1 | Название блока фильтра: Фильтр 2 | Название блока фильтра: Фильтр 3}. Лінія Світла"; | |
| 358 | - $row = 'Лучшие цены на '; | |
| 359 | - foreach($array as $name => $field){ | |
| 360 | - | |
| 361 | - if($name == 'category' ){ | |
| 362 | - $row = $field.' | '.$row; | |
| 363 | - } else { | |
| 364 | - $row .= $field['name'] .' '.$field['value'].' | ' ; | |
| 365 | - } | |
| 328 | + public function getDescriptionString($array, $description){ | |
| 366 | 329 | |
| 330 | + $row = ''; | |
| 331 | + foreach($array as $name => $field){ | |
| 332 | + $row .= $field['name'] .' '.$field['value'].' ' ; | |
| 333 | + } | |
| 367 | 334 | |
| 335 | + $template = preg_replace('/{filter}/',$row,$title); | |
| 368 | 336 | |
| 369 | - } | |
| 370 | - $row = substr($row, 0,-2 ); | |
| 371 | - $row .= ". Екстрим стайл"; | |
| 372 | - return $row; | |
| 337 | + return $template; | |
| 373 | 338 | |
| 374 | 339 | } |
| 375 | 340 | |
| 376 | 341 | |
| 377 | - public function getNameString($array){ | |
| 378 | - // "Лучшие цены на {Название раздела | Название блока фильтра: Фильтр 1 | Название блока фильтра: Фильтр 2 | Название блока фильтра: Фильтр 3}. Лінія Світла"; | |
| 342 | + public function getNameString($array, $h1){ | |
| 343 | + | |
| 379 | 344 | $row = ''; |
| 380 | 345 | foreach($array as $name => $field){ |
| 346 | + $row .= $field['name'] .' '.$field['value'].' ' ; | |
| 347 | + } | |
| 381 | 348 | |
| 382 | - if($name == 'category' ){ | |
| 383 | - $row = $field.' | '.$row; | |
| 384 | - } else { | |
| 385 | - $row .= $field['name'] .' '.$field['value'].' | ' ; | |
| 386 | - } | |
| 387 | - | |
| 349 | + $template = preg_replace('/{filter}/',$row,$title); | |
| 388 | 350 | |
| 389 | - | |
| 390 | - } | |
| 391 | - $row = substr($row, 0,-2 ); | |
| 392 | - return $row; | |
| 351 | + return $template; | |
| 393 | 352 | |
| 394 | 353 | } |
| 395 | 354 | |
| 355 | + /** | |
| 356 | + * @param $filter | |
| 357 | + * @return mixed | |
| 358 | + */ | |
| 396 | 359 | public function arrayBuilder($filter) |
| 397 | 360 | { |
| 398 | - | |
| 399 | - $array = [ | |
| 400 | - 'category' => $this->category_name | |
| 401 | - ]; | |
| 402 | - | |
| 403 | - | |
| 404 | 361 | if (isset($filter['brands']) && count($filter['brands']) == 1) { |
| 405 | 362 | $model = Brand::find()->joinWith('lang')->where(['alias' => $filter['brands'][0]])->one(); |
| 406 | 363 | if (!$model instanceof Brand) { |
| ... | ... | @@ -441,6 +398,10 @@ class Seo extends Widget |
| 441 | 398 | |
| 442 | 399 | } |
| 443 | 400 | |
| 401 | + /** | |
| 402 | + * @param $filter | |
| 403 | + * @return bool | |
| 404 | + */ | |
| 444 | 405 | protected function checkFilter($filter){ |
| 445 | 406 | foreach(self::$optionsList as $optionList){ |
| 446 | 407 | |
| ... | ... | @@ -452,5 +413,11 @@ class Seo extends Widget |
| 452 | 413 | return false; |
| 453 | 414 | } |
| 454 | 415 | |
| 416 | + /** | |
| 417 | + * @param $string | |
| 418 | + */ | |
| 419 | + public function prepareString($string){ | |
| 420 | + return preg_replace('/\{.[^\}]*\}/','',$string); | |
| 421 | + } | |
| 455 | 422 | |
| 456 | 423 | } |
| 457 | 424 | \ No newline at end of file | ... | ... |