Commit e21450c9f471844a427d247816540e8f15a644eb

Authored by Dmytry Fedorchuk
1 parent 173e7c8a

SEO

@@ -15,6 +15,7 @@ AddDefaultCharset utf-8 @@ -15,6 +15,7 @@ AddDefaultCharset utf-8
15 15
16 16
17 17
  18 +
18 RewriteRule ^storage/(.*)?$ /storage/$1 [L,PT] 19 RewriteRule ^storage/(.*)?$ /storage/$1 [L,PT]
19 20
20 RewriteCond %{REQUEST_URI} ^/(admin) 21 RewriteCond %{REQUEST_URI} ^/(admin)
@@ -70,14 +71,16 @@ AddDefaultCharset utf-8 @@ -70,14 +71,16 @@ AddDefaultCharset utf-8
70 71
71 RewriteCond %{REQUEST_FILENAME} !-d 72 RewriteCond %{REQUEST_FILENAME} !-d
72 73
73 - RewriteCond %{HTTP_HOST} ^www\.(.*)  
74 - RewriteRule ^(.*)$ frontend/web/index.php [L]  
75 74
76 - RewriteCond %{HTTP_HOST} ^([^www].*)$  
77 - RewriteRule (.*) http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 75 + RewriteCond %{HTTP_HOST} ^www\.(.*)
  76 + RewriteRule ^(.*)$ frontend/web/index.php
78 77
79 78
  79 + RewriteCond %{HTTP_HOST} ^([^www].*)$
  80 + RewriteRule (.*) http://www.%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
80 81
  82 + RewriteCond %{THE_REQUEST} (\/[\w\/-]+\w)\s
  83 + RewriteRule (.*) %1/ [R,L]
81 84
82 85
83 86
frontend/views/site/index.php
@@ -5,10 +5,10 @@ use yii\web\View; @@ -5,10 +5,10 @@ use yii\web\View;
5 use frontend\widgets\BannerWidget; 5 use frontend\widgets\BannerWidget;
6 use yii\helpers\Url; 6 use yii\helpers\Url;
7 use frontend\widgets\Seo; 7 use frontend\widgets\Seo;
8 -$this->params['seo']['seo_text'] = 'TEST SEO TEXT';  
9 -$this->params['seo']['h1'] = 'TEST H1';  
10 -$this->params['seo']['description'] = 'TEST DESCRIPTION';  
11 -$this->params['seo']['fields']['name'] = 'TEST NAME FROM FIELD'; 8 +//$this->params['seo']['seo_text'] = 'TEST SEO TEXT';
  9 +//$this->params['seo']['h1'] = 'TEST H1';
  10 +//$this->params['seo']['description'] = 'TEST DESCRIPTION';
  11 +//$this->params['seo']['fields']['name'] = 'TEST NAME FROM FIELD';
12 $this->params['seo']['title'] = 'Купить городской рюкзак Киев | Купить рюкзаки Dakine Украина | Rukzachok.com.ua'; 12 $this->params['seo']['title'] = 'Купить городской рюкзак Киев | Купить рюкзаки Dakine Украина | Rukzachok.com.ua';
13 $this->registerJsFile ( 13 $this->registerJsFile (
14 Yii::$app->request->baseUrl . '/js/slides.min.jquery.js', 14 Yii::$app->request->baseUrl . '/js/slides.min.jquery.js',
frontend/widgets/Seo.php
1 <?php 1 <?php
2 namespace frontend\widgets; 2 namespace frontend\widgets;
  3 +
3 use common\models\SeoDynamic; 4 use common\models\SeoDynamic;
4 use yii\base\Widget; 5 use yii\base\Widget;
5 use yii\helpers\Html; 6 use yii\helpers\Html;
@@ -7,9 +8,9 @@ use yii\helpers\Html; @@ -7,9 +8,9 @@ use yii\helpers\Html;
7 class Seo extends Widget 8 class Seo extends Widget
8 { 9 {
9 private $url; 10 private $url;
10 - public $row;  
11 - public $own_attr;  
12 - public $fields; 11 + public $row;
  12 + public $own_attr;
  13 + public $fields;
13 public $description; 14 public $description;
14 public $title; 15 public $title;
15 public $meta; 16 public $meta;
@@ -19,17 +20,16 @@ class Seo extends Widget @@ -19,17 +20,16 @@ class Seo extends Widget
19 public $project_name; 20 public $project_name;
20 21
21 22
22 -  
23 -  
24 const SEO_TEXT = 'seo_text'; 23 const SEO_TEXT = 'seo_text';
25 const DESCRIPTION = 'description'; 24 const DESCRIPTION = 'description';
26 const META = 'meta'; 25 const META = 'meta';
27 const H1 = 'h1'; 26 const H1 = 'h1';
28 const TITLE = 'title'; 27 const TITLE = 'title';
29 28
30 - public function init(){  
31 - $this->url = \Yii::$app->request->url;  
32 - $this->project_name = \Yii::$app->name; 29 + public function init()
  30 + {
  31 + $this->url = \Yii::$app->request->url;
  32 + $this->project_name = \Yii::$app->name;
33 parent::init(); 33 parent::init();
34 34
35 } 35 }
@@ -39,7 +39,7 @@ class Seo extends Widget @@ -39,7 +39,7 @@ class Seo extends Widget
39 { 39 {
40 40
41 $seoData = $this->getViewData(); 41 $seoData = $this->getViewData();
42 - foreach($seoData as $key=>$value){ 42 + foreach ($seoData as $key => $value) {
43 $this->$key = $value; 43 $this->$key = $value;
44 } 44 }
45 45
@@ -99,37 +99,43 @@ class Seo extends Widget @@ -99,37 +99,43 @@ class Seo extends Widget
99 $meta = $this->selectSeoData(self::META); 99 $meta = $this->selectSeoData(self::META);
100 100
101 $filter = \Yii::$app->request->get('filter', []); 101 $filter = \Yii::$app->request->get('filter', []);
  102 + $sort = \Yii::$app->request->get('sort', []);
102 103
103 -  
104 -  
105 - if(!empty($meta)){ 104 + if (!empty($meta)) {
106 105
107 $this->getView()->registerMetaTag([ 106 $this->getView()->registerMetaTag([
108 'name' => 'robots', 107 'name' => 'robots',
109 - 'content' => $meta 108 + 'content' => $meta
110 ]); 109 ]);
111 110
112 - } else if ( 111 + } else if (
113 isset($filter['brands']) && count($filter['brands']) > 1 112 isset($filter['brands']) && count($filter['brands']) > 1
114 || isset($filter['options']["pol"]) && count($filter['options']["pol"]) > 1 113 || isset($filter['options']["pol"]) && count($filter['options']["pol"]) > 1
115 || isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) > 1 114 || isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) > 1
116 || isset($filter['options']["god"]) && count($filter['options']["god"]) > 1 115 || isset($filter['options']["god"]) && count($filter['options']["god"]) > 1
117 - || isset($filter['brands']) && count($filter['brands']) <= 1 && isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) >= 4  
118 - || isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) > 4  
119 116
120 - ){  
121 - $this->getView()->registerMetaTag([  
122 - 'name' => 'robots',  
123 - 'content' => 'noindex,follow'  
124 - ]); 117 + ) {
  118 + $this->getView()->registerMetaTag([
  119 + 'name' => 'robots',
  120 + 'content' => 'noindex,nofollow'
  121 + ]);
125 122
126 - } else if($filter) { 123 + } else if (
  124 + isset($filter['brands']) && count($filter['brands']) <= 1 && isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) >= 4
  125 + || isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) > 4
  126 + || !empty($sort) || isset($filter['prices'])
  127 + ) {
  128 + $this->getView()->registerMetaTag([
  129 + 'name' => 'robots',
  130 + 'content' => 'noindex,follow'
  131 + ]);
  132 + } else {
127 133
128 - $this->getView()->registerMetaTag([  
129 - 'name' => 'robots',  
130 - 'content' => 'index,follow'  
131 - ]);  
132 - } 134 + $this->getView()->registerMetaTag([
  135 + 'name' => 'robots',
  136 + 'content' => 'index,follow'
  137 + ]);
  138 + }
133 139
134 140
135 break; 141 break;
@@ -141,9 +147,9 @@ class Seo extends Widget @@ -141,9 +147,9 @@ class Seo extends Widget
141 protected function replaceData($str) 147 protected function replaceData($str)
142 { 148 {
143 149
144 - if(!empty($this->fields)){  
145 - foreach($this->fields as $field_name => $field_value){  
146 - $str = str_replace('{'.$field_name.'}', $field_value, $str); 150 + if (!empty($this->fields)) {
  151 + foreach ($this->fields as $field_name => $field_value) {
  152 + $str = str_replace('{' . $field_name . '}', $field_value, $str);
147 } 153 }
148 } 154 }
149 $str = str_replace('{project_name}', $this->project_name, $str); 155 $str = str_replace('{project_name}', $this->project_name, $str);
@@ -152,47 +158,49 @@ class Seo extends Widget @@ -152,47 +158,49 @@ class Seo extends Widget
152 158
153 protected function findSeoByUrl() 159 protected function findSeoByUrl()
154 { 160 {
155 - return \common\models\Seo::findOne(['url'=>$this->url]); 161 + return \common\models\Seo::findOne(['url' => $this->url]);
156 } 162 }
157 163
158 protected function findSeoByDynamic() 164 protected function findSeoByDynamic()
159 { 165 {
160 - $query = SeoDynamic::find()->joinWith('seoCategory')->where(['controller'=> \Yii::$app->controller->id, 'action'=>\Yii::$app->controller->action->id]);  
161 - if(!empty($this->key)){  
162 - $query->andWhere(['key'=>$this->key]); 166 + $query = SeoDynamic::find()->joinWith('seoCategory')->where(['controller' => \Yii::$app->controller->id, 'action' => \Yii::$app->controller->action->id]);
  167 + if (!empty($this->key)) {
  168 + $query->andWhere(['key' => $this->key]);
163 } 169 }
164 return $query->one(); 170 return $query->one();
165 } 171 }
166 172
167 173
168 - protected function getViewData(){ 174 + protected function getViewData()
  175 + {
169 $params = $this->getView()->params; 176 $params = $this->getView()->params;
170 - if(isset($params['seo'])){ 177 + if (isset($params['seo'])) {
171 return $params['seo']; 178 return $params['seo'];
172 } else { 179 } else {
173 return []; 180 return [];
174 } 181 }
175 } 182 }
176 183
177 - protected function selectSeoData($param){ 184 + protected function selectSeoData($param)
  185 + {
178 $result = ''; 186 $result = '';
179 187
180 $widgetData = $this->findSeoByUrl(); 188 $widgetData = $this->findSeoByUrl();
181 189
182 - if($widgetData instanceof \common\models\Seo){ 190 + if ($widgetData instanceof \common\models\Seo) {
183 191
184 - $result = $widgetData->$param; 192 + $result = $widgetData->$param;
185 193
186 - }else if(!empty($this->$param)){ 194 + } else if (!empty($this->$param)) {
187 195
188 $result = $this->$param; 196 $result = $this->$param;
189 } else { 197 } else {
190 198
191 $widgetData = $this->findSeoByDynamic(); 199 $widgetData = $this->findSeoByDynamic();
192 200
193 - if($widgetData instanceof SeoDynamic){ 201 + if ($widgetData instanceof SeoDynamic) {
194 202
195 - $result = $widgetData->$param; 203 + $result = $widgetData->$param;
196 204
197 } 205 }
198 206