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 | ... | ... |