Commit 30d2133cee84456c3cc9394afa6bf0c5e0beb687

Authored by Administrator
1 parent bf6de24b

add variantSku

models/SeoDynamicLang.php
@@ -48,7 +48,6 @@ @@ -48,7 +48,6 @@
48 return [ 48 return [
49 [ 49 [
50 [ 50 [
51 - 'meta_title',  
52 'meta_description', 51 'meta_description',
53 'seo_text', 52 'seo_text',
54 ], 53 ],
@@ -101,8 +100,7 @@ @@ -101,8 +100,7 @@
101 return [ 100 return [
102 'seo_dynamic_id' => Yii::t('app', 'seo_dynamic_id'), 101 'seo_dynamic_id' => Yii::t('app', 'seo_dynamic_id'),
103 'language_id' => Yii::t('app', 'language_id'), 102 'language_id' => Yii::t('app', 'language_id'),
104 - 'title' => 'name',  
105 - 'meta_title' => 'title', 103 + 'title' => 'title',
106 'h1' => 'h1', 104 'h1' => 'h1',
107 'key' => 'key', 105 'key' => 'key',
108 'meta' => 'meta', 106 'meta' => 'meta',
views/seo-dynamic/_form_language.php
@@ -17,9 +17,6 @@ @@ -17,9 +17,6 @@
17 <?= $form->field($model_lang, '[' . $language->id . ']title') 17 <?= $form->field($model_lang, '[' . $language->id . ']title')
18 ->textInput([ 'maxlength' => true ]); ?> 18 ->textInput([ 'maxlength' => true ]); ?>
19 19
20 -<?= $form->field($model_lang, '[' . $language->id . ']meta_title')  
21 - ->textInput(); ?>  
22 -  
23 <?= $form->field($model_lang, '[' . $language->id . ']meta_description')->textarea() ?> 20 <?= $form->field($model_lang, '[' . $language->id . ']meta_description')->textarea() ?>
24 21
25 <?= $form->field($model_lang, '[' . $language->id . ']key') 22 <?= $form->field($model_lang, '[' . $language->id . ']key')
views/seo-dynamic/index.php
@@ -47,10 +47,6 @@ @@ -47,10 +47,6 @@
47 'columns' => [ 47 'columns' => [
48 [ 'class' => 'yii\grid\SerialColumn' ], 48 [ 'class' => 'yii\grid\SerialColumn' ],
49 'id', 49 'id',
50 - [  
51 - 'attribute' => 'title',  
52 - 'value' => 'lang.title',  
53 - ],  
54 'action', 50 'action',
55 'fields', 51 'fields',
56 'param', 52 'param',
@@ -66,7 +66,7 @@ class Seo extends Widget @@ -66,7 +66,7 @@ class Seo extends Widget
66 66
67 if(empty($filter) && empty($sort) && empty($paginate) ){ 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 } else { 71 } else {
72 72
@@ -84,13 +84,13 @@ class Seo extends Widget @@ -84,13 +84,13 @@ class Seo extends Widget
84 84
85 if ($widgetData instanceof SeoDynamic) { 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,18 +103,18 @@ class Seo extends Widget
103 103
104 if ($default != $this->{self::H1}) { 104 if ($default != $this->{self::H1}) {
105 105
106 - return $default; 106 + return $this->prepareString($default);
107 107
108 108
109 } else if(!empty($filter) && !$this->checkFilter($filter)){ 109 } else if(!empty($filter) && !$this->checkFilter($filter)){
110 $array = $this->arrayBuilder($filter); 110 $array = $this->arrayBuilder($filter);
111 - return $this->getNameString($array); 111 + return $this->prepareString($this->getNameString($array,$default));
112 } 112 }
113 else { 113 else {
114 114
115 - return $default; 115 + return $this->prepareString($default);
116 } 116 }
117 - break; 117 + break;
118 case self::TITLE: 118 case self::TITLE:
119 119
120 $filter = \Yii::$app->request->get('filters', []); 120 $filter = \Yii::$app->request->get('filters', []);
@@ -122,25 +122,23 @@ class Seo extends Widget @@ -122,25 +122,23 @@ class Seo extends Widget
122 122
123 $title = $this->selectSeoData(self::TITLE); 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 $array = $this->arrayBuilder($filter); 127 $array = $this->arrayBuilder($filter);
129 128
130 - $title_string = $this->getTitleString($array); 129 + $title_string = $this->getTitleString($array, $title);
131 130
132 if($title_string){ 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 if (!empty($title)) { 138 if (!empty($title)) {
140 -  
141 - return $title; 139 + return $this->prepareString($title);
142 } else { 140 } else {
143 - return $this->project_name; 141 + return $this->prepareString($this->project_name);
144 } 142 }
145 143
146 break; 144 break;
@@ -151,7 +149,7 @@ class Seo extends Widget @@ -151,7 +149,7 @@ class Seo extends Widget
151 149
152 $this->getView()->registerMetaTag([ 150 $this->getView()->registerMetaTag([
153 'name' => 'description', 151 'name' => 'description',
154 - 'content' => $description 152 + 'content' => $this->prepareString($description)
155 ]); 153 ]);
156 154
157 } else { 155 } else {
@@ -162,7 +160,7 @@ class Seo extends Widget @@ -162,7 +160,7 @@ class Seo extends Widget
162 $array = $this->arrayBuilder($filter); 160 $array = $this->arrayBuilder($filter);
163 $this->getView()->registerMetaTag([ 161 $this->getView()->registerMetaTag([
164 'name' => 'description', 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,8 +203,8 @@ class Seo extends Widget
205 ]); 203 ]);
206 204
207 } else if ( 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 || !empty($sort) || !empty($paginate) || isset($filter['prices']) 208 || !empty($sort) || !empty($paginate) || isset($filter['prices'])
211 ) { 209 ) {
212 210
@@ -254,9 +252,7 @@ class Seo extends Widget @@ -254,9 +252,7 @@ class Seo extends Widget
254 252
255 protected function findSeoByDynamic() 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 if(!empty($this->key)){ 256 if(!empty($this->key)){
261 257
262 $query = SeoDynamic::find()->joinWith('seoCategory')->where(['controller' => \Yii::$app->controller->id, 'action' => \Yii::$app->controller->action->id, 'key' => $this->key]); 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,110 +293,71 @@ class Seo extends Widget
297 293
298 $widgetData = static::findSeoByUrl($this->url); 294 $widgetData = static::findSeoByUrl($this->url);
299 295
  296 + $widgetDynamicData = $this->findSeoByDynamic();
  297 +
300 if ($widgetData instanceof \artweb\artbox\seo\models\Seo) { 298 if ($widgetData instanceof \artweb\artbox\seo\models\Seo) {
301 299
302 $result = $widgetData->$param; 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 $result = $this->$param; 307 $result = $this->$param;
316 -  
317 -  
318 -  
319 } 308 }
320 309
321 return $this->replaceData($result); 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 $row = ''; 316 $row = '';
328 foreach($array as $name => $field){ 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 $row = ''; 344 $row = '';
380 foreach($array as $name => $field){ 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 public function arrayBuilder($filter) 359 public function arrayBuilder($filter)
397 { 360 {
398 -  
399 - $array = [  
400 - 'category' => $this->category_name  
401 - ];  
402 -  
403 -  
404 if (isset($filter['brands']) && count($filter['brands']) == 1) { 361 if (isset($filter['brands']) && count($filter['brands']) == 1) {
405 $model = Brand::find()->joinWith('lang')->where(['alias' => $filter['brands'][0]])->one(); 362 $model = Brand::find()->joinWith('lang')->where(['alias' => $filter['brands'][0]])->one();
406 if (!$model instanceof Brand) { 363 if (!$model instanceof Brand) {
@@ -441,6 +398,10 @@ class Seo extends Widget @@ -441,6 +398,10 @@ class Seo extends Widget
441 398
442 } 399 }
443 400
  401 + /**
  402 + * @param $filter
  403 + * @return bool
  404 + */
444 protected function checkFilter($filter){ 405 protected function checkFilter($filter){
445 foreach(self::$optionsList as $optionList){ 406 foreach(self::$optionsList as $optionList){
446 407
@@ -452,5 +413,11 @@ class Seo extends Widget @@ -452,5 +413,11 @@ class Seo extends Widget
452 return false; 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 \ No newline at end of file 424 \ No newline at end of file