Commit 8afa1bf26291cd96626b5cc722e7ce4c96c6e93c
1 parent
66aa1226
29.06.16
Showing
4 changed files
with
76 additions
and
56 deletions
Show diff stats
common/components/Request.php
| @@ -15,6 +15,7 @@ class Request extends \yii\web\Request | @@ -15,6 +15,7 @@ class Request extends \yii\web\Request | ||
| 15 | 15 | ||
| 16 | { | 16 | { |
| 17 | 17 | ||
| 18 | + | ||
| 18 | return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl; | 19 | return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl; |
| 19 | 20 | ||
| 20 | } | 21 | } |
| 1 | +<?php | ||
| 2 | +namespace frontend\components; | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | +use yii\base\BootstrapInterface; | ||
| 7 | + | ||
| 8 | +class SeoComponent implements BootstrapInterface | ||
| 9 | +{ | ||
| 10 | + | ||
| 11 | + public function bootstrap($app) | ||
| 12 | + { | ||
| 13 | + \Yii::$app->on(\yii\base\Application::EVENT_BEFORE_REQUEST, function($event) { | ||
| 14 | + $array = ['%21'=>'!','%22'=>'"','%23'=>'#','%24'=>'$','%25'=>'%','%26'=>'&','%27'=>'\'','%28'=>'(','%29'=>')','%2a'=>'*','%2b'=>'+','%2c'=>',','%2d'=>'-','%2e'=>'.','%2f'=>'/','%3a'=>':','%3b'=>';','%3c'=>'<','%3d'=>'=','%3e'=>'>','%3f'=>'?','%40'=>'@','%5b'=>'[','%5c'=>'\\','%5d'=>']','%5e'=>'^','%5f'=>'_','%60'=>'`','%7b'=>'{','%7c'=>'|','%7d'=>'}','%7e'=>'~']; | ||
| 15 | + $url = mb_strtolower (\Yii::$app->request->url); | ||
| 16 | + | ||
| 17 | + $continue = true; | ||
| 18 | + | ||
| 19 | + foreach($array as $sym=>$sym_row){ | ||
| 20 | + if(strpos($url, $sym)){ | ||
| 21 | + $url = str_replace($sym, $sym_row, $url); | ||
| 22 | + $continue = false; | ||
| 23 | + | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + if(!$continue){ | ||
| 28 | + \Yii::$app->getResponse()->redirect($url); | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + }); | ||
| 32 | + return $app; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | +} | ||
| 0 | \ No newline at end of file | 36 | \ No newline at end of file |
frontend/config/main.php
| @@ -9,7 +9,10 @@ $params = array_merge( | @@ -9,7 +9,10 @@ $params = array_merge( | ||
| 9 | return [ | 9 | return [ |
| 10 | 'id' => 'app-frontend', | 10 | 'id' => 'app-frontend', |
| 11 | 'basePath' => dirname(__DIR__), | 11 | 'basePath' => dirname(__DIR__), |
| 12 | - 'bootstrap' => ['log'], | 12 | + 'bootstrap' => [ |
| 13 | + | ||
| 14 | + 'frontend\components\SeoComponent', | ||
| 15 | + ], | ||
| 13 | 'controllerNamespace' => 'frontend\controllers', | 16 | 'controllerNamespace' => 'frontend\controllers', |
| 14 | 'components' => [ | 17 | 'components' => [ |
| 15 | 'authManager' => [ | 18 | 'authManager' => [ |
frontend/widgets/Seo.php
| @@ -197,68 +197,49 @@ class Seo extends Widget | @@ -197,68 +197,49 @@ class Seo extends Widget | ||
| 197 | $sort = \Yii::$app->request->get('sort', []); | 197 | $sort = \Yii::$app->request->get('sort', []); |
| 198 | $paginate = \Yii::$app->request->get('page', []); | 198 | $paginate = \Yii::$app->request->get('page', []); |
| 199 | 199 | ||
| 200 | - $array = ['%21','%22','%23','%24','%25','%26','%27','%28','%29','%2a','%2b','%2c','%2d','%2e','%2f','%3a','%3b','%3c','%3d','%3e','%3f','%40','%5b','%5c','%5d','%5e','%5f','%60','%7b','%7c','%7d','%7e',]; | ||
| 201 | - $url = mb_strtolower (\Yii::$app->request->url); | ||
| 202 | 200 | ||
| 203 | - $continue = true; | ||
| 204 | 201 | ||
| 205 | - foreach($array as $sym){ | ||
| 206 | - if(strpos($url, $sym)){ | ||
| 207 | - $this->getView()->registerMetaTag([ | ||
| 208 | - 'name' => 'robots', | ||
| 209 | - 'content' => 'noindex,nofollow' | ||
| 210 | - ]); | 202 | + if (!empty($meta)) { |
| 211 | 203 | ||
| 212 | - $continue = false; | ||
| 213 | - break; | 204 | + $this->getView()->registerMetaTag([ |
| 205 | + 'name' => 'robots', | ||
| 206 | + 'content' => $meta | ||
| 207 | + ]); | ||
| 214 | 208 | ||
| 215 | - } | ||
| 216 | - } | 209 | + } else if(!empty($filter['special'])){ |
| 217 | 210 | ||
| 211 | + $this->getView()->registerMetaTag([ | ||
| 212 | + 'name' => 'robots', | ||
| 213 | + 'content' => 'noindex,follow' | ||
| 214 | + ]); | ||
| 218 | 215 | ||
| 219 | - if($continue){ | ||
| 220 | - if (!empty($meta)) { | ||
| 221 | - | ||
| 222 | - $this->getView()->registerMetaTag([ | ||
| 223 | - 'name' => 'robots', | ||
| 224 | - 'content' => $meta | ||
| 225 | - ]); | ||
| 226 | - | ||
| 227 | - } else if(!empty($filter['special'])){ | ||
| 228 | - | ||
| 229 | - $this->getView()->registerMetaTag([ | ||
| 230 | - 'name' => 'robots', | ||
| 231 | - 'content' => 'noindex,follow' | ||
| 232 | - ]); | ||
| 233 | - | ||
| 234 | - } else if ( | ||
| 235 | - isset($filter['brands']) && count($filter['brands']) > 1 | ||
| 236 | - || isset($filter['options']["pol"]) && count($filter['options']["pol"]) > 1 | ||
| 237 | - || isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) > 1 | ||
| 238 | - || isset($filter['options']["god"]) && count($filter['options']["god"]) > 1 | ||
| 239 | - | ||
| 240 | - ) { | ||
| 241 | - $this->getView()->registerMetaTag([ | ||
| 242 | - 'name' => 'robots', | ||
| 243 | - 'content' => 'noindex,nofollow' | ||
| 244 | - ]); | ||
| 245 | - | ||
| 246 | - } else if ( | ||
| 247 | - isset($filter['brands']) && count($filter['brands']) <= 1 && isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) >= 4 | ||
| 248 | - || isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) > 4 | ||
| 249 | - || !empty($sort) || !empty($paginate) || isset($filter['prices']) | ||
| 250 | - ) { | ||
| 251 | - $this->getView()->registerMetaTag([ | ||
| 252 | - 'name' => 'robots', | ||
| 253 | - 'content' => 'noindex,follow' | ||
| 254 | - ]); | ||
| 255 | - } else { | 216 | + } else if ( |
| 217 | + isset($filter['brands']) && count($filter['brands']) > 1 | ||
| 218 | + || isset($filter['options']["pol"]) && count($filter['options']["pol"]) > 1 | ||
| 219 | + || isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) > 1 | ||
| 220 | + || isset($filter['options']["god"]) && count($filter['options']["god"]) > 1 | ||
| 256 | 221 | ||
| 257 | - $this->getView()->registerMetaTag([ | ||
| 258 | - 'name' => 'robots', | ||
| 259 | - 'content' => 'index,follow' | ||
| 260 | - ]); | ||
| 261 | - } | 222 | + ) { |
| 223 | + $this->getView()->registerMetaTag([ | ||
| 224 | + 'name' => 'robots', | ||
| 225 | + 'content' => 'noindex,nofollow' | ||
| 226 | + ]); | ||
| 227 | + | ||
| 228 | + } else if ( | ||
| 229 | + isset($filter['brands']) && count($filter['brands']) <= 1 && isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) >= 4 | ||
| 230 | + || isset($filter['options']) && count($filter['options'], COUNT_RECURSIVE) > 4 | ||
| 231 | + || !empty($sort) || !empty($paginate) || isset($filter['prices']) | ||
| 232 | + ) { | ||
| 233 | + $this->getView()->registerMetaTag([ | ||
| 234 | + 'name' => 'robots', | ||
| 235 | + 'content' => 'noindex,follow' | ||
| 236 | + ]); | ||
| 237 | + } else { | ||
| 238 | + | ||
| 239 | + $this->getView()->registerMetaTag([ | ||
| 240 | + 'name' => 'robots', | ||
| 241 | + 'content' => 'index,follow' | ||
| 242 | + ]); | ||
| 262 | } | 243 | } |
| 263 | 244 | ||
| 264 | 245 |