Commit 30d2133cee84456c3cc9394afa6bf0c5e0beb687

Authored by Administrator
1 parent bf6de24b

add variantSku

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
... ... @@ -47,10 +47,6 @@
47 47 'columns' => [
48 48 [ 'class' => 'yii\grid\SerialColumn' ],
49 49 'id',
50   - [
51   - 'attribute' => 'title',
52   - 'value' => 'lang.title',
53   - ],
54 50 'action',
55 51 'fields',
56 52 'param',
... ...
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
... ...