Commit 1b898c1609836814c540cfcb38a0552b1a7479a2

Authored by Administrator
1 parent d5d1cb7a

20.07.16

backend/controllers/ArticlesController.php
@@ -81,12 +81,17 @@ class ArticlesController extends Controller @@ -81,12 +81,17 @@ class ArticlesController extends Controller
81 81
82 if ($model->load(Yii::$app->request->post())) { 82 if ($model->load(Yii::$app->request->post())) {
83 83
84 - if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { 84 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
85 $model->image = $image->name; 85 $model->image = $image->name;
86 } 86 }
87 87
  88 + $imgDir = Yii::getAlias('@storage/articles/');
  89 +
  90 + if(!is_dir($imgDir)) {
  91 + mkdir($imgDir, 0755, true);
  92 + }
88 if ($model->save() && $image) { 93 if ($model->save() && $image) {
89 - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); 94 + $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name));
90 } 95 }
91 96
92 return $this->redirect(['view', 'id' => $model->id]); 97 return $this->redirect(['view', 'id' => $model->id]);
@@ -108,13 +113,17 @@ class ArticlesController extends Controller @@ -108,13 +113,17 @@ class ArticlesController extends Controller
108 $model = $this->findModel($id); 113 $model = $this->findModel($id);
109 114
110 if ($model->load(Yii::$app->request->post())) { 115 if ($model->load(Yii::$app->request->post())) {
111 -  
112 - if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { 116 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
113 $model->image = $image->name; 117 $model->image = $image->name;
114 } 118 }
115 119
  120 + $imgDir = Yii::getAlias('@storage/articles/');
  121 +
  122 + if(!is_dir($imgDir)) {
  123 + mkdir($imgDir, 0755, true);
  124 + }
116 if ($model->save() && $image) { 125 if ($model->save() && $image) {
117 - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); 126 + $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name));
118 } 127 }
119 128
120 return $this->redirect(['view', 'id' => $model->id]); 129 return $this->redirect(['view', 'id' => $model->id]);
backend/views/articles/_form.php
@@ -37,7 +37,7 @@ use yii\jui\DatePicker; @@ -37,7 +37,7 @@ use yii\jui\DatePicker;
37 ]) ?> 37 ]) ?>
38 38
39 39
40 - <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ 40 + <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
41 'language' => 'ru', 41 'language' => 'ru',
42 'options' => [ 42 'options' => [
43 'accept' => 'image/*', 43 'accept' => 'image/*',
common/config/bootstrap.php
@@ -5,5 +5,5 @@ Yii::setAlias(&#39;@backend&#39;, dirname(dirname(__DIR__)) . &#39;/backend&#39;); @@ -5,5 +5,5 @@ Yii::setAlias(&#39;@backend&#39;, dirname(dirname(__DIR__)) . &#39;/backend&#39;);
5 Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console'); 5 Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
6 Yii::setAlias('storage', dirname(dirname(__DIR__)) . '/storage'); 6 Yii::setAlias('storage', dirname(dirname(__DIR__)) . '/storage');
7 7
8 -Yii::setAlias('@imagesDir', dirname(dirname(__DIR__)) . '/frontend/web/images');  
9 -Yii::setAlias('@imagesUrl', '/images'); 8 +Yii::setAlias('@imagesDir', dirname(dirname(__DIR__)) . '/storage');
  9 +Yii::setAlias('@imagesUrl', '/storage');
common/models/Articles.php
@@ -31,6 +31,23 @@ class Articles extends \yii\db\ActiveRecord @@ -31,6 +31,23 @@ class Articles extends \yii\db\ActiveRecord
31 return 'articles'; 31 return 'articles';
32 } 32 }
33 33
  34 +
  35 +
  36 + /**
  37 + * @inheritdoc
  38 + */
  39 + public function behaviors()
  40 + {
  41 + return [
  42 + 'slug' => [
  43 + 'class' => 'common\behaviors\Slug',
  44 + 'in_attribute' => 'title',
  45 + 'out_attribute' => 'translit',
  46 + 'translit' => true
  47 + ]
  48 + ];
  49 + }
  50 +
34 /** 51 /**
35 * @inheritdoc 52 * @inheritdoc
36 */ 53 */
@@ -38,7 +55,7 @@ class Articles extends \yii\db\ActiveRecord @@ -38,7 +55,7 @@ class Articles extends \yii\db\ActiveRecord
38 { 55 {
39 return [ 56 return [
40 [['date'], 'safe'], 57 [['date'], 'safe'],
41 - [['title', 'body', 'image', 'translit'], 'required'], 58 + [['title', 'body'], 'required'],
42 [['body', 'seo_text'], 'string'], 59 [['body', 'seo_text'], 'string'],
43 [['title', 'image', 'translit', 'meta_title', 'meta_keywords', 'meta_description', 'h1'], 'string', 'max' => 255], 60 [['title', 'image', 'translit', 'meta_title', 'meta_keywords', 'meta_description', 'h1'], 'string', 'max' => 255],
44 [['imageUpload'], 'safe'], 61 [['imageUpload'], 'safe'],
common/modules/product/CatalogUrlManager.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace common\modules\product; 3 namespace common\modules\product;
4 4
  5 +use common\modules\product\helpers\FilterHelper;
5 use common\modules\product\models\Brand; 6 use common\modules\product\models\Brand;
6 use common\modules\product\models\BrandSearch; 7 use common\modules\product\models\BrandSearch;
7 use common\modules\product\models\CategorySearch; 8 use common\modules\product\models\CategorySearch;
@@ -45,9 +46,15 @@ class CatalogUrlManager implements UrlRuleInterface { @@ -45,9 +46,15 @@ class CatalogUrlManager implements UrlRuleInterface {
45 } 46 }
46 if (!empty($paths[2])) { 47 if (!empty($paths[2])) {
47 // Filter 48 // Filter
48 - if (strpos($paths[2], 'filter:') === 0) { 49 +
  50 + if (strpos($paths[2], 'filters:') === 0) {
49 $this->parseFilter($paths[2], $params); 51 $this->parseFilter($paths[2], $params);
50 } 52 }
  53 + else if(strpos($paths[2], 'filter:') === 0){
  54 + $this->parseOldFilter($paths[2], $params);
  55 + //['catalog/category', 'category' => $category, 'filters' =>$params['filter']]
  56 + Yii::$app->response->redirect(['catalog/category', 'category' => $category, 'filters' =>$params['filter']],301);
  57 + }
51 else { 58 else {
52 throw new HttpException(404 ,'Page not found'); 59 throw new HttpException(404 ,'Page not found');
53 } 60 }
@@ -72,7 +79,7 @@ class CatalogUrlManager implements UrlRuleInterface { @@ -72,7 +79,7 @@ class CatalogUrlManager implements UrlRuleInterface {
72 $params['brand'] = $brand; 79 $params['brand'] = $brand;
73 if (!empty($paths[2])) { 80 if (!empty($paths[2])) {
74 // Filter 81 // Filter
75 - if (strpos($paths[2], 'filter:') === 0) { 82 + if (strpos($paths[2], 'filters:') === 0) {
76 $this->parseFilter($paths[2], $params); 83 $this->parseFilter($paths[2], $params);
77 } 84 }
78 } 85 }
@@ -158,24 +165,24 @@ class CatalogUrlManager implements UrlRuleInterface { @@ -158,24 +165,24 @@ class CatalogUrlManager implements UrlRuleInterface {
158 165
159 private function setFilterUrl(&$params, &$url) { 166 private function setFilterUrl(&$params, &$url) {
160 $filter = []; 167 $filter = [];
161 - if (!empty($params['filter'])) {  
162 - foreach ($params['filter'] as $key => $values) { 168 + if (!empty($params['filters'])) {
  169 + foreach ($params['filters'] as $key => $values) {
163 switch($key) { 170 switch($key) {
164 case 'prices': 171 case 'prices':
165 $filter[] = $key .'='. implode(':', $values); 172 $filter[] = $key .'='. implode(':', $values);
166 break; 173 break;
167 174
168 - case 'options':  
169 - foreach($values as $group => &$value_items) {  
170 - foreach($value_items as &$value_item) {  
171 - $value_item = $this->option_value_encode($value_item);  
172 - if (empty($value_item)) {  
173 - unset($value_item);  
174 - }  
175 - }  
176 - $filter[] = $this->option_prefix. $group .'='. implode(',', $value_items);  
177 - }  
178 - break; 175 +// case 'options':
  176 +// foreach($values as $group => &$value_items) {
  177 +// foreach($value_items as &$value_item) {
  178 +// $value_item = $this->option_value_encode($value_item);
  179 +// if (empty($value_item)) {
  180 +// unset($value_item);
  181 +// }
  182 +// }
  183 +// $filter[] = $this->option_prefix. $group .'='. implode(',', $value_items);
  184 +// }
  185 +// break;
179 186
180 default: 187 default:
181 foreach($values as &$value) { 188 foreach($values as &$value) {
@@ -189,13 +196,37 @@ class CatalogUrlManager implements UrlRuleInterface { @@ -189,13 +196,37 @@ class CatalogUrlManager implements UrlRuleInterface {
189 } 196 }
190 } 197 }
191 if (!empty($filter)) { 198 if (!empty($filter)) {
192 - $url .= 'filter:'. implode(';', $filter); 199 + $url .= 'filters:'. implode(';', $filter);
193 } 200 }
194 - unset($params['filter']); 201 + unset($params['filters']);
195 } 202 }
196 } 203 }
197 204
198 private function parseFilter($paths, &$params) { 205 private function parseFilter($paths, &$params) {
  206 + $params['filters'] = [];
  207 + $filter_str = substr($paths, 8);
  208 + $filter_options = explode(';', $filter_str);
  209 + foreach ($filter_options as $filter_option) {
  210 + if (empty($filter_option)) {
  211 + continue;
  212 + }
  213 + list($filter_key, $filter_option) = explode('=', $filter_option);
  214 + if($filter_key == 'prices') { // price-interval section
  215 + $prices = explode(':', $filter_option);
  216 + $params['filters'][$filter_key] = [
  217 + 'min' => floatval($prices[0]),
  218 + 'max' => floatval($prices[1]),
  219 + ];
  220 + }
  221 + else { // brands and other sections
  222 + $params['filters'][$filter_key] = explode(',', $filter_option);
  223 + }
  224 + }
  225 + }
  226 +
  227 +
  228 +
  229 + private function parseOldFilter($paths, &$params) {
199 $params['filter'] = []; 230 $params['filter'] = [];
200 $filter_str = substr($paths, 7); 231 $filter_str = substr($paths, 7);
201 $filter_options = explode(';', $filter_str); 232 $filter_options = explode(';', $filter_str);
@@ -210,9 +241,11 @@ class CatalogUrlManager implements UrlRuleInterface { @@ -210,9 +241,11 @@ class CatalogUrlManager implements UrlRuleInterface {
210 'min' => floatval($prices[0]), 241 'min' => floatval($prices[0]),
211 'max' => floatval($prices[1]), 242 'max' => floatval($prices[1]),
212 ]; 243 ];
213 - } elseif (strpos($filter_key, $this->option_prefix) === 0) { // options section  
214 - $params['filter']['options'][substr($filter_key, 2)] = explode(',', $filter_option);  
215 - } else { // brands and other sections 244 + }
  245 + elseif (strpos($filter_key, $this->option_prefix) === 0) { // options section
  246 + $params['filter'][substr($filter_key, 2)] = explode(',', $filter_option);
  247 + }
  248 + else { // brands and other sections
216 $params['filter'][$filter_key] = explode(',', $filter_option); 249 $params['filter'][$filter_key] = explode(',', $filter_option);
217 } 250 }
218 } 251 }
common/modules/product/controllers/VariantController.php
@@ -150,31 +150,42 @@ class VariantController extends Controller @@ -150,31 +150,42 @@ class VariantController extends Controller
150 150
151 $ProductStocks = Yii::$app->request->post('ProductStock'); 151 $ProductStocks = Yii::$app->request->post('ProductStock');
152 152
153 - foreach($ProductStocks as $index => $ProductStock){  
154 - $stock = Stock::find()->where(['name'=>$ProductStock['name']])->one();  
155 - if(!$stock instanceof Stock){  
156 - $stock = new Stock();  
157 - $stock->name = $ProductStock['name'];  
158 - $stock->save();  
159 - } 153 + $quantity = 0;
  154 +
  155 + if(is_array($ProductStocks)){
  156 +
  157 + foreach($ProductStocks as $index => $ProductStock){
  158 + $stock = Stock::find()->where(['name'=>$ProductStock['name']])->one();
  159 + if(!$stock instanceof Stock){
  160 + $stock = new Stock();
  161 + $stock->name = $ProductStock['name'];
  162 + $stock->save();
  163 + }
  164 +
  165 + $psModel = ProductStock::find()->where(['product_variant_id'=>$model->product_variant_id, 'stock_id' =>$stock->stock_id ])->one();
  166 + if(!$psModel instanceof ProductStock){
  167 + $psModel = new ProductStock;
  168 + $psModel->load(['ProductStock'=>$ProductStock]);
  169 + $psModel->stock_id = $stock->stock_id;
  170 + $psModel->product_variant_id = $model->product_variant_id;
  171 + $psModel->product_id = $model->product->product_id;
  172 + $quantity = $quantity + $psModel->quantity;
  173 + $psModel->validate();
  174 + $psModel->save();
  175 + } else {
  176 + $psModel->load(['ProductStock'=>$ProductStock]);
  177 + $quantity = $quantity + $psModel->quantity;
  178 + $psModel->save();
  179 + }
160 180
161 - $psModel = ProductStock::find()->where(['product_variant_id'=>$model->product_variant_id, 'stock_id' =>$stock->stock_id ]);  
162 - if(!$psModel instanceof ProductStock){  
163 - $psModel = new ProductStock;  
164 - $psModel->load(['ProductStock'=>$ProductStock]);  
165 - $psModel->stock_id = $stock->stock_id;  
166 - $psModel->product_variant_id = $model->product_variant_id;  
167 - $psModel->product_id = $model->product->product_id;  
168 - $psModel->save();  
169 - } else {  
170 - $psModel->load(['ProductStock'=>$ProductStock]);  
171 - $psModel->save();  
172 } 181 }
173 - 182 + } else {
  183 + $model->unlinkAll('stocks',true);
174 } 184 }
175 185
176 186
177 - 187 + $model->stock = $quantity;
  188 + $model->save();
178 } 189 }
179 return $this->redirect(['index', 'product_id'=>$product_id]); 190 return $this->redirect(['index', 'product_id'=>$product_id]);
180 191
common/modules/product/helpers/FilterHelper.php 0 โ†’ 100755
  1 +<?php
  2 +
  3 +namespace common\modules\product\helpers;
  4 +
  5 +use common\modules\product\models\Product;
  6 +use common\modules\product\models\BrandName;
  7 +use common\modules\product\models\CategoryName;
  8 +use common\modules\rubrication\models\TaxGroup;
  9 +use yii\base\Object;
  10 +use Yii;
  11 +use yii\db\QueryInterface;
  12 +use yii\helpers\ArrayHelper;
  13 +
  14 +class FilterHelper extends Object {
  15 +
  16 + public static $optionsList;
  17 +
  18 + public static function optionsTemplate(){
  19 + if(empty(static::$optionsList)){
  20 + return static::$optionsList = ArrayHelper::getColumn(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(),'alias');
  21 + }
  22 + else
  23 + {
  24 + return static::$optionsList;
  25 + }
  26 +
  27 + }
  28 +
  29 + /*
  30 + * Return custom filter-option link
  31 + * @var array $filter
  32 + * @var array $options
  33 + * @return array
  34 + */
  35 + public static function getFilterForOption($filter, $key, $value, $remove = false) {
  36 +
  37 + $optionsTemplate = self::optionsTemplate();
  38 + array_unshift($optionsTemplate, "special", "brands");
  39 +
  40 + $result = $filter;
  41 +
  42 + if (is_array($value)) {
  43 + foreach($value as $value_key => $value_items) {
  44 + if (!is_array($value_items)) {
  45 + $value_items = [$value_items];
  46 + }
  47 + foreach($value_items as $value_item) {
  48 + if ($remove && isset($result[$key]) && ($i = array_search($value_item, $result[$key][$value_key])) !== FALSE) {
  49 + unset($result[$key][$value_key][$i]);
  50 + if (empty($result[$key][$value_key])) {
  51 + unset($result[$key][$value_key]);
  52 + }
  53 + } else {
  54 + if (!isset($result[$key][$value_key]) || array_search($value_item, $result[$key][$value_key]) === FALSE) {
  55 + $result[$key][$value_key][] = $value_item;
  56 + }
  57 + }
  58 + }
  59 + }
  60 + } else {
  61 + if ($remove && isset($result[$key]) && ($i = array_search($value, $result[$key])) !== FALSE) {
  62 + unset($result[$key][$i]);
  63 + if (empty($result[$key])) {
  64 + unset($result[$key]);
  65 + }
  66 + } else {
  67 + if (!isset($result[$key]) || array_search($value, $result[$key]) === FALSE) {
  68 + $result[$key][] = $value;
  69 + }
  70 + }
  71 + }
  72 +
  73 +
  74 + $filterView = [];
  75 +
  76 + foreach($optionsTemplate as $optionKey){
  77 + if(isset($result[$optionKey])){
  78 + $filterView[$optionKey] = $result[$optionKey];
  79 + }
  80 +
  81 +
  82 + }
  83 +
  84 + return $filterView;
  85 + }
  86 +
  87 +
  88 +
  89 +}
0 \ No newline at end of file 90 \ No newline at end of file
common/modules/product/helpers/ProductHelper.php
@@ -104,7 +104,7 @@ class ProductHelper extends Object { @@ -104,7 +104,7 @@ class ProductHelper extends Object {
104 104
105 public static function getSimilarProducts($product, $count = 10) { 105 public static function getSimilarProducts($product, $count = 10) {
106 if (!is_object($product)) { 106 if (!is_object($product)) {
107 - $product = Product::findOne($product); 107 + $product = Product::find()->where(['product_id'=>$product])->with('enabledVariants')->one();
108 } 108 }
109 109
110 if (!$product->properties) { 110 if (!$product->properties) {
@@ -143,6 +143,8 @@ class ProductHelper extends Object { @@ -143,6 +143,8 @@ class ProductHelper extends Object {
143 return $products; 143 return $products;
144 } 144 }
145 145
  146 +
  147 +
146 public static function _setQueryParams(&$query, $params, $setPriceLimits = true) { 148 public static function _setQueryParams(&$query, $params, $setPriceLimits = true) {
147 if (!empty($params['keywords'])) { 149 if (!empty($params['keywords'])) {
148 if (!is_array($params['keywords'])) { 150 if (!is_array($params['keywords'])) {
@@ -152,35 +154,39 @@ class ProductHelper extends Object { @@ -152,35 +154,39 @@ class ProductHelper extends Object {
152 $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]); 154 $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]);
153 $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]); 155 $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]);
154 $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]); 156 $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]);
155 - }  
156 - }  
157 - if (!empty($params['special'])) {  
158 - foreach($params['special'] as $key => $value) {  
159 - $query->orFilterWhere([Product::tableName() .'.'. $key => $value]);  
160 - }  
161 - }  
162 - if (!empty($params['brands'])) {  
163 - $query->andFilterWhere([Product::tableName() .'.brand_id' => $params['brands']]);  
164 - }  
165 - if (!empty($params['options'])) {  
166 - foreach ($params['options'] as $group => $options) {  
167 - foreach ($options as &$option) {  
168 - $option = "'$option'";  
169 - }  
170 - $query->andWhere(  
171 - Product::tableName() . '.product_id IN (SELECT product_id AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE \''. $group .'\' AND tax_option.alias IN (' . implode(',', $options) . '))'  
172 - ); 157 + $query->orFilterWhere(['ilike', ProductVariant::tableName() .'.sku', $keyword]);
173 } 158 }
174 } 159 }
175 160
176 - if ($setPriceLimits && !empty($params['prices'])) {  
177 - if ($params['prices']['min'] > 0) {  
178 - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);  
179 - }  
180 - if ($params['prices']['max'] > 0) {  
181 - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); 161 + foreach($params as $key => $param){
  162 +
  163 + switch ($key) {
  164 + case 'special':
  165 + foreach($param as $key => $value) {
  166 + $query->orFilterWhere([Product::tableName() .'.'. $key => $value]);
  167 + }
  168 + break;
  169 + case 'brands':
  170 + $query->andFilterWhere([Product::tableName() .'.brand_id' => $param]);
  171 + break;
  172 + case 'keywords':
  173 + break;
  174 + case 'prices':
  175 + if ($param['min'] > 0) {
  176 + $query->andWhere(['>=', ProductVariant::tableName() .'.price', $param['min']]);
  177 + }
  178 + if ($param['max'] > 0) {
  179 + $query->andWhere(['<=', ProductVariant::tableName() .'.price', $param['max']]);
  180 + }
  181 + break;
  182 + default:
  183 + $query->andWhere(
  184 + Product::tableName() . '.product_id IN (SELECT product_id AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE \''. $key .'\' AND tax_option.alias IN (\'' . implode('\',\'', $param) . '\'))'
  185 + );
182 } 186 }
  187 +
183 } 188 }
  189 +
184 } 190 }
185 191
186 public static function productCountQuery($category = null, $params, $excludeKeys = []) { 192 public static function productCountQuery($category = null, $params, $excludeKeys = []) {
common/modules/product/models/BrandSearch.php
@@ -114,25 +114,25 @@ class BrandSearch extends Brand @@ -114,25 +114,25 @@ class BrandSearch extends Brand
114 ->with(['brandName']); 114 ->with(['brandName']);
115 115
116 116
117 - $queryCount = Product::find()  
118 - ->select(['COUNT(product.product_id)'])  
119 - ->where('product.brand_id = brand.brand_id');  
120 - $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = product.product_id) > 0');  
121 - if (!empty($category)) {  
122 - $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = product.product_id AND pc.category_id = '. $category->category_id .') > 0');  
123 - }  
124 - if (!empty($params['options'])) {  
125 - $queryCount->innerJoin('product_option', 'product_option.product_id = product.product_id');  
126 - $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');  
127 - $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');  
128 - foreach ($params['options'] as $group => $options) {  
129 - $queryCount->andWhere([  
130 - 'tax_group.alias' => $group,  
131 - 'tax_option.alias' => $options  
132 - ]);  
133 - }  
134 -// $query->addSelect("(SELECT COUNT(product_option.product_id) AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE '$group' AND tax_option.alias IN (" . implode(',', $options) . ")) AS _items_count");  
135 - } 117 +// $queryCount = Product::find()
  118 +// ->select(['COUNT(product.product_id)'])
  119 +// ->where('product.brand_id = brand.brand_id');
  120 +// $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = product.product_id) > 0');
  121 +// if (!empty($category)) {
  122 +// $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = product.product_id AND pc.category_id = '. $category->category_id .') > 0');
  123 +// }
  124 +// if (!empty($params['options'])) {
  125 +// $queryCount->innerJoin('product_option', 'product_option.product_id = product.product_id');
  126 +// $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');
  127 +// $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');
  128 +// foreach ($params['options'] as $group => $options) {
  129 +// $queryCount->andWhere([
  130 +// 'tax_group.alias' => $group,
  131 +// 'tax_option.alias' => $options
  132 +// ]);
  133 +// }
  134 +//// $query->addSelect("(SELECT COUNT(product_option.product_id) AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE '$group' AND tax_option.alias IN (" . implode(',', $options) . ")) AS _items_count");
  135 +// }
136 // $query->addSelect(['_items_count' => $queryCount]); 136 // $query->addSelect(['_items_count' => $queryCount]);
137 137
138 // if ($productQuery) { 138 // if ($productQuery) {
common/modules/product/models/Export.php
@@ -31,7 +31,7 @@ class Export extends Model { @@ -31,7 +31,7 @@ class Export extends Model {
31 }*/ 31 }*/
32 $mods = []; 32 $mods = [];
33 33
34 - $filterString = $this->convertFilterToString($product->getFilters()); 34 + //$filterString = $this->convertFilterToString($product->getFilters());
35 35
36 foreach ($product->variantsWithFilters as $variant) 36 foreach ($product->variantsWithFilters as $variant)
37 { 37 {
@@ -45,6 +45,7 @@ class Export extends Model { @@ -45,6 +45,7 @@ class Export extends Model {
45 '=' . $variant->stock; 45 '=' . $variant->stock;
46 } 46 }
47 47
  48 +
48 $fotos = []; 49 $fotos = [];
49 50
50 // foreach ($product->images as $image) 51 // foreach ($product->images as $image)
@@ -69,7 +70,7 @@ class Export extends Model { @@ -69,7 +70,7 @@ class Export extends Model {
69 $product->name, 70 $product->name,
70 '', 71 '',
71 ((! empty($product->description)) ? $product->description : ''), 72 ((! empty($product->description)) ? $product->description : ''),
72 - $filterString, 73 + '',//$filterString,
73 (!empty($product->variant)) ? $product->variant->price_old : '', 74 (!empty($product->variant)) ? $product->variant->price_old : '',
74 (!empty($product->variant)) ? $product->variant->price : '', 75 (!empty($product->variant)) ? $product->variant->price : '',
75 intval($product->akciya), 76 intval($product->akciya),
common/modules/product/models/Product.php
@@ -185,7 +185,7 @@ class Product extends \yii\db\ActiveRecord @@ -185,7 +185,7 @@ class Product extends \yii\db\ActiveRecord
185 185
186 public function getEnabledVariants() 186 public function getEnabledVariants()
187 { 187 {
188 - return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->andOnCondition(['!=', ProductVariant::tableName() .'.stock', 0]); 188 + return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->andOnCondition(['!=', ProductVariant::tableName() .'.stock', 0])->joinWith('image');
189 } 189 }
190 190
191 /* 191 /*
common/modules/product/models/ProductImage.php
@@ -81,14 +81,14 @@ class ProductImage extends \yii\db\ActiveRecord @@ -81,14 +81,14 @@ class ProductImage extends \yii\db\ActiveRecord
81 return $this->hasOne(Product::className(), ['product_variant_id' => 'product_variant_id']); 81 return $this->hasOne(Product::className(), ['product_variant_id' => 'product_variant_id']);
82 } 82 }
83 83
84 - /**  
85 - * @inheritdoc  
86 - * @return ProductImageQuery the active query used by this AR class.  
87 - */  
88 - public static function find()  
89 - {  
90 - return new ProductImageQuery(get_called_class());  
91 - } 84 +// /**
  85 +// * @inheritdoc
  86 +// * @return ProductImageQuery the active query used by this AR class.
  87 +// */
  88 +// public static function find()
  89 +// {
  90 +// return new ProductImageQuery(get_called_class());
  91 +// }
92 92
93 /** 93 /**
94 * fetch stored image file name with complete path 94 * fetch stored image file name with complete path
common/modules/rubrication/models/TaxGroup.php
@@ -51,7 +51,7 @@ class TaxGroup extends \yii\db\ActiveRecord @@ -51,7 +51,7 @@ class TaxGroup extends \yii\db\ActiveRecord
51 */ 51 */
52 public static function tableName() 52 public static function tableName()
53 { 53 {
54 - return '{{%tax_group}}'; 54 + return 'tax_group';
55 } 55 }
56 56
57 /** 57 /**
frontend/controllers/CatalogController.php
@@ -23,6 +23,7 @@ use yii\data\ActiveDataProvider; @@ -23,6 +23,7 @@ use yii\data\ActiveDataProvider;
23 use yii\data\Pagination; 23 use yii\data\Pagination;
24 use yii\data\Sort; 24 use yii\data\Sort;
25 use yii\db\ActiveQuery; 25 use yii\db\ActiveQuery;
  26 +use yii\helpers\ArrayHelper;
26 use yii\web\HttpException; 27 use yii\web\HttpException;
27 28
28 class CatalogController extends \yii\web\Controller 29 class CatalogController extends \yii\web\Controller
@@ -35,7 +36,7 @@ class CatalogController extends \yii\web\Controller @@ -35,7 +36,7 @@ class CatalogController extends \yii\web\Controller
35 { 36 {
36 /** @var Category $category */ 37 /** @var Category $category */
37 $category = Yii::$app->request->get('category'); 38 $category = Yii::$app->request->get('category');
38 - $filter = Yii::$app->request->get('filter', []); 39 + $filter = Yii::$app->request->get('filters', []);
39 40
40 if (empty($category->category_id) && empty($word)) { 41 if (empty($category->category_id) && empty($word)) {
41 return $this->render( 42 return $this->render(
@@ -46,6 +47,8 @@ class CatalogController extends \yii\web\Controller @@ -46,6 +47,8 @@ class CatalogController extends \yii\web\Controller
46 47
47 $params = []; 48 $params = [];
48 49
  50 + $optionsList = ArrayHelper::getColumn(TaxGroup::find()->where(['is_filter' => 'TRUE'])->all(),'alias');
  51 +
49 if ( !empty($filter['brands']) ) { 52 if ( !empty($filter['brands']) ) {
50 $brands = Brand::find()->select('brand_id')->where(['in', 'alias', $filter['brands']])->all(); 53 $brands = Brand::find()->select('brand_id')->where(['in', 'alias', $filter['brands']])->all();
51 $params['brands'] = []; 54 $params['brands'] = [];
@@ -69,16 +72,27 @@ class CatalogController extends \yii\web\Controller @@ -69,16 +72,27 @@ class CatalogController extends \yii\web\Controller
69 } 72 }
70 } 73 }
71 74
72 - if ( !empty($filter['options']) ) {  
73 - $params['options'] = $filter['options']; 75 +
  76 +// if ( !empty($filter['options']) ) {
  77 +// $params['options'] = $filter['options'];
  78 +// }
  79 +
  80 +
  81 + foreach($optionsList as $optionList){
  82 +
  83 + if(isset($filter[$optionList])){
  84 + $params[$optionList] = $filter[$optionList];
  85 + }
  86 +
74 } 87 }
75 88
  89 +
76 if ( !empty($filter['prices']) ) { 90 if ( !empty($filter['prices']) ) {
77 $params['prices'] = $filter['prices']; 91 $params['prices'] = $filter['prices'];
78 } 92 }
79 93
80 $productModel = new ProductFrontendSearch(); 94 $productModel = new ProductFrontendSearch();
81 - $productQuery = $productModel->getSearchQuery($category, $params); 95 + //$productQuery = $productModel->getSearchQuery($category, $params);
82 $productProvider = $productModel->search($category, $params); 96 $productProvider = $productModel->search($category, $params);
83 97
84 $brandModel = new BrandSearch(); 98 $brandModel = new BrandSearch();
@@ -86,6 +100,8 @@ class CatalogController extends \yii\web\Controller @@ -86,6 +100,8 @@ class CatalogController extends \yii\web\Controller
86 100
87 $optionsQuery = $productModel->optionsForCategory($category, $params); 101 $optionsQuery = $productModel->optionsForCategory($category, $params);
88 $groups = []; 102 $groups = [];
  103 +
  104 +
89 foreach ($optionsQuery->all() as $option) { 105 foreach ($optionsQuery->all() as $option) {
90 if (!isset($groups[$option->tax_group_id])) { 106 if (!isset($groups[$option->tax_group_id])) {
91 $groups[$option->tax_group_id] = $option->taxGroup; 107 $groups[$option->tax_group_id] = $option->taxGroup;
frontend/controllers/SearchController.php
@@ -18,28 +18,45 @@ class SearchController extends \yii\web\Controller @@ -18,28 +18,45 @@ class SearchController extends \yii\web\Controller
18 18
19 if (!empty($word)) 19 if (!empty($word))
20 { 20 {
21 - $params = [];  
22 21
23 - $params['keywords'] = explode(' ', preg_replace("|[\s,.!:&?~();-]|i", " ", $word));  
24 - foreach($params['keywords'] as $i => &$keyword) {  
25 - $keyword = trim($keyword);  
26 - if (empty($keyword)) {  
27 - unset($params['keywords'][$i]); 22 +
  23 + if( preg_match('/^\+?\d+$/', $word) && (iconv_strlen($word) > 4)){
  24 +
  25 + $params['keywords'][] = $word;
  26 +
  27 + $categoriesQuery = Category::find()
  28 + ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.category_id = '. Category::tableName() .'.category_id')
  29 + ->innerJoin(Product::tableName(), Product::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id')
  30 + ->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id');
  31 + $categoriesQuery->andWhere(['ilike', 'product.name', $params['keywords'][0]]);
  32 + $categories = $categoriesQuery->all();
  33 +
  34 + } else {
  35 +
  36 + $params['keywords'] = explode(' ', preg_replace("|[\s,.!:&?~();-]|i", " ", $word));
  37 +
  38 + foreach($params['keywords'] as $i => &$keyword) {
  39 + $keyword = trim($keyword);
  40 + if (empty($keyword)) {
  41 + unset($params['keywords'][$i]);
  42 + }
  43 + }
  44 + array_unshift($params['keywords'], $word);
  45 +
  46 + $categoriesQuery = Category::find()
  47 + ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.category_id = '. Category::tableName() .'.category_id')
  48 + ->innerJoin(Product::tableName(), Product::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id')
  49 + ->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id');
  50 + foreach ($params['keywords'] as $keyword) {
  51 + $categoriesQuery->andWhere(['ilike', 'product.name', $keyword]);
28 } 52 }
  53 + $categoriesQuery->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]);
  54 + $categories = $categoriesQuery->all();
29 } 55 }
30 56
31 $productModel = new ProductFrontendSearch(); 57 $productModel = new ProductFrontendSearch();
32 $productProvider = $productModel->search(null, $params); 58 $productProvider = $productModel->search(null, $params);
33 59
34 - $categoriesQuery = Category::find()  
35 - ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.category_id = '. Category::tableName() .'.category_id')  
36 - ->innerJoin(Product::tableName(), Product::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id')  
37 - ->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id = '. ProductCategory::tableName() .'.product_id');  
38 - foreach ($params['keywords'] as $keyword) {  
39 - $categoriesQuery->andWhere(['ilike', 'product.name', $keyword]);  
40 - }  
41 - $categoriesQuery->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]);  
42 - $categories = $categoriesQuery->all();  
43 60
44 return $this->render( 61 return $this->render(
45 'index', 62 'index',
frontend/models/ProductFrontendSearch.php
@@ -91,7 +91,7 @@ class ProductFrontendSearch extends Product { @@ -91,7 +91,7 @@ class ProductFrontendSearch extends Product {
91 $query = Product::find(); 91 $query = Product::find();
92 } 92 }
93 $query->select(['product.*']); 93 $query->select(['product.*']);
94 - $query->joinWith(['variant', 'image', 'brand', 'brand.brandName', 'category', 'category.categoryName']); 94 + $query->joinWith(['enabledVariants','brand', 'brand.brandName', 'category', 'category.categoryName']);
95 95
96 $query->groupBy(['product.product_id', 'product_variant.price']); 96 $query->groupBy(['product.product_id', 'product_variant.price']);
97 97
@@ -108,7 +108,7 @@ class ProductFrontendSearch extends Product { @@ -108,7 +108,7 @@ class ProductFrontendSearch extends Product {
108 TaxOption::tableName() .'.*', 108 TaxOption::tableName() .'.*',
109 ]) 109 ])
110 ->leftJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id') 110 ->leftJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id')
111 - ->innerJoin(TaxGroup::tableName(), TaxGroup::tableName() .'.tax_group_id='. TaxOption::tableName() .'.tax_group_id') 111 + ->joinWith('taxGroup')
112 ->where([TaxGroup::tableName() .'.is_filter' => true]); 112 ->where([TaxGroup::tableName() .'.is_filter' => true]);
113 113
114 $query->innerJoin('product_variant', 'product_variant.product_id = '. ProductOption::tableName() .'.product_id'); 114 $query->innerJoin('product_variant', 'product_variant.product_id = '. ProductOption::tableName() .'.product_id');
@@ -124,35 +124,35 @@ class ProductFrontendSearch extends Product { @@ -124,35 +124,35 @@ class ProductFrontendSearch extends Product {
124 $query->orderBy(TaxOption::tableName() .'.sort', SORT_ASC); 124 $query->orderBy(TaxOption::tableName() .'.sort', SORT_ASC);
125 $query->limit(null); 125 $query->limit(null);
126 126
127 - $queryCount = ProductOption::find()  
128 - ->select(['COUNT('. ProductOption::tableName() .'.product_id)'])  
129 - ->where(ProductOption::tableName() .'.option_id = '. TaxOption::tableName() .'.tax_option_id');  
130 - $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = '. ProductOption::tableName() .'.product_id) > 0');  
131 - if (!empty($category)) {  
132 - $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = '. ProductOption::tableName() .'.product_id AND pc.category_id = '. $category->category_id .') > 0');  
133 - }  
134 - if (!empty($params['options'])) {  
135 - $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');  
136 - $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');  
137 - foreach ($params['options'] as $group => $options) {  
138 - $queryCount->andWhere([  
139 - 'tax_group.alias' => $group,  
140 - 'tax_option.alias' => $options  
141 - ]);  
142 - }  
143 - }  
144 - if (!empty($params['brands'])) {  
145 - $queryCount->innerJoin(Product::tableName(), 'product.product_id='. ProductOption::tableName() .'.product_id');  
146 - $queryCount->andWhere(['product.brand_id' => $params['brands']]);  
147 - }  
148 - if (!empty($params['prices'])) {  
149 - if ($params['prices']['min'] > 0) {  
150 - $queryCount->andWhere(['>=', 'pv.price', $params['prices']['min']]);  
151 - }  
152 - if ($params['prices']['max'] > 0) {  
153 - $queryCount->andWhere(['<=', 'pv.price', $params['prices']['max']]);  
154 - }  
155 - } 127 +// $queryCount = ProductOption::find()
  128 +// ->select(['COUNT('. ProductOption::tableName() .'.product_id)'])
  129 +// ->where(ProductOption::tableName() .'.option_id = '. TaxOption::tableName() .'.tax_option_id');
  130 +// $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = '. ProductOption::tableName() .'.product_id) > 0');
  131 +// if (!empty($category)) {
  132 +// $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = '. ProductOption::tableName() .'.product_id AND pc.category_id = '. $category->category_id .') > 0');
  133 +// }
  134 +// if (!empty($params['options'])) {
  135 +// $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');
  136 +// $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');
  137 +// foreach ($params['options'] as $group => $options) {
  138 +// $queryCount->andWhere([
  139 +// 'tax_group.alias' => $group,
  140 +// 'tax_option.alias' => $options
  141 +// ]);
  142 +// }
  143 +// }
  144 +// if (!empty($params['brands'])) {
  145 +// $queryCount->innerJoin(Product::tableName(), 'product.product_id='. ProductOption::tableName() .'.product_id');
  146 +// $queryCount->andWhere(['product.brand_id' => $params['brands']]);
  147 +// }
  148 +// if (!empty($params['prices'])) {
  149 +// if ($params['prices']['min'] > 0) {
  150 +// $queryCount->andWhere(['>=', 'pv.price', $params['prices']['min']]);
  151 +// }
  152 +// if ($params['prices']['max'] > 0) {
  153 +// $queryCount->andWhere(['<=', 'pv.price', $params['prices']['max']]);
  154 +// }
  155 +// }
156 // $query->addSelect(['_items_count' => $queryCount]); 156 // $query->addSelect(['_items_count' => $queryCount]);
157 157
158 return $query; 158 return $query;
frontend/views/catalog/products.php
@@ -8,6 +8,7 @@ use yii\helpers\Url; @@ -8,6 +8,7 @@ use yii\helpers\Url;
8 use yii\widgets\Breadcrumbs; 8 use yii\widgets\Breadcrumbs;
9 use yii\web\View; 9 use yii\web\View;
10 use common\modules\product\helpers\ProductHelper; 10 use common\modules\product\helpers\ProductHelper;
  11 +use common\modules\product\helpers\FilterHelper;
11 use frontend\widgets\Seo; 12 use frontend\widgets\Seo;
12 //$this->title = $category->categoryName->value; 13 //$this->title = $category->categoryName->value;
13 $this->params['seo']['title'] = !empty($category->meta_title) ? $category->meta_title : ''; 14 $this->params['seo']['title'] = !empty($category->meta_title) ? $category->meta_title : '';
@@ -52,7 +53,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -52,7 +53,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
52 'max' => '{to}', 53 'max' => '{to}',
53 ]; 54 ];
54 ?> 55 ?>
55 - var url = "<?= Url::to(['catalog/category', 'category' => $category, 'filter' => $filterWhitoutPrice])?>"; 56 + var url = "<?= Url::to(['catalog/category', 'category' => $category, 'filters' => $filterWhitoutPrice])?>";
56 var from = e.from; 57 var from = e.from;
57 var to = e.to; 58 var to = e.to;
58 document.location = url.replace('{from}', from).replace('{to}', to); 59 document.location = url.replace('{from}', from).replace('{to}', to);
@@ -83,7 +84,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -83,7 +84,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
83 <li class="new"> 84 <li class="new">
84 <?php 85 <?php
85 $checked = !empty($filter['special']) && in_array('new', $filter['special']); 86 $checked = !empty($filter['special']) && in_array('new', $filter['special']);
86 - $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'special', 'new', $checked)]); 87 + $option_url = Url::to(['catalog/category', 'category' => $category, 'filters' => FilterHelper::getFilterForOption($filter, 'special', 'new', $checked)]);
87 ?> 88 ?>
88 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" /> 89 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" />
89 <a href="<?= $option_url?>"><?= Yii::t('product', 'New products')?></a> 90 <a href="<?= $option_url?>"><?= Yii::t('product', 'New products')?></a>
@@ -91,7 +92,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -91,7 +92,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
91 <li class="top"> 92 <li class="top">
92 <?php 93 <?php
93 $checked = !empty($filter['special']) && in_array('top', $filter['special']); 94 $checked = !empty($filter['special']) && in_array('top', $filter['special']);
94 - $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'special', 'top', $checked)]); 95 + $option_url = Url::to(['catalog/category', 'category' => $category, 'filters' => FilterHelper::getFilterForOption($filter, 'special', 'top', $checked)]);
95 ?> 96 ?>
96 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" /> 97 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" />
97 <a href="<?= $option_url?>"><?= Yii::t('product', 'Top products')?></a> 98 <a href="<?= $option_url?>"><?= Yii::t('product', 'Top products')?></a>
@@ -99,7 +100,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -99,7 +100,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
99 <li class="promo"> 100 <li class="promo">
100 <?php 101 <?php
101 $checked = !empty($filter['special']) && in_array('promo', $filter['special']); 102 $checked = !empty($filter['special']) && in_array('promo', $filter['special']);
102 - $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'special', 'promo', $checked)]); 103 + $option_url = Url::to(['catalog/category', 'category' => $category, 'filters' => FilterHelper::getFilterForOption($filter, 'special', 'promo', $checked)]);
103 ?> 104 ?>
104 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" /> 105 <input type="checkbox" class="special-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" />
105 <a href="<?= $option_url?>"><?= Yii::t('product', 'Promo products')?></a> 106 <a href="<?= $option_url?>"><?= Yii::t('product', 'Promo products')?></a>
@@ -119,7 +120,8 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -119,7 +120,8 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
119 <ul> 120 <ul>
120 <?php foreach($brands as $brand) : 121 <?php foreach($brands as $brand) :
121 $checked = !empty($filter['brands']) && in_array($brand->alias, $filter['brands']); 122 $checked = !empty($filter['brands']) && in_array($brand->alias, $filter['brands']);
122 - $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'brands', $brand->alias, $checked)]); 123 +//
  124 + $option_url = Url::to(['catalog/category', 'category' => $category, 'filters' => FilterHelper::getFilterForOption($filter, 'brands', $brand->alias, $checked)]);
123 ?> 125 ?>
124 <li> 126 <li>
125 <input type="checkbox" onchange="document.location='<?= $option_url?>'" class="brands-option" <?= $checked ? ' checked' : ''?> /> 127 <input type="checkbox" onchange="document.location='<?= $option_url?>'" class="brands-option" <?= $checked ? ' checked' : ''?> />
@@ -136,8 +138,8 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -136,8 +138,8 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
136 <div class="begin"><?= $group->name?></div> 138 <div class="begin"><?= $group->name?></div>
137 <ul> 139 <ul>
138 <?php foreach($group->_options as $option) : 140 <?php foreach($group->_options as $option) :
139 - $checked = (isset($filter['options'][$group->alias]) && in_array($option->alias, $filter['options'][$group->alias]));  
140 - $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'options', [$option->group->alias => [$option->alias]], $checked)]); 141 + $checked = (isset($filter[$group->alias]) && in_array($option->alias, $filter[$group->alias]));
  142 + $option_url = Url::to(['catalog/category', 'category' => $category, 'filters' => FilterHelper::getFilterForOption($filter, $option->taxGroup->alias, $option->alias, $checked)]);
141 ?> 143 ?>
142 <li> 144 <li>
143 <input type="checkbox" onchange="document.location='<?= $option_url?>'" class="features-option" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> /> 145 <input type="checkbox" onchange="document.location='<?= $option_url?>'" class="features-option" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> />
@@ -182,7 +184,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[ @@ -182,7 +184,7 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
182 <div class="products pn"> 184 <div class="products pn">
183 <ul> 185 <ul>
184 <?php foreach($productProvider->models as $product) :?> 186 <?php foreach($productProvider->models as $product) :?>
185 - <?= $this->render('/catalog/product_item.php', ['product' => $product])?> 187 + <?= $this->render('product_item', ['product' => $product])?>
186 <?php endforeach?> 188 <?php endforeach?>
187 </ul> 189 </ul>
188 <div class="both"></div> 190 <div class="both"></div>
frontend/views/search/index.php
@@ -52,7 +52,7 @@ $this-&gt;params[&#39;seo&#39;][&#39;meta&#39;]= &#39;noindex,follow&#39;; @@ -52,7 +52,7 @@ $this-&gt;params[&#39;seo&#39;][&#39;meta&#39;]= &#39;noindex,follow&#39;;
52 </div> 52 </div>
53 </form> 53 </form>
54 </div> 54 </div>
55 - <?php endif?> 55 + <?php endif ?>
56 <div class="content"> 56 <div class="content">
57 <h1>ะŸะพะธัะบ</h1> 57 <h1>ะŸะพะธัะบ</h1>
58 <div class="ten"></div> 58 <div class="ten"></div>
frontend/web/css/style.css
1 -html,form,body{padding:0;margin:0;font-family:'Roboto';font-size:14px;color:#333;height:100%}h1,h2,h3{margin:0px;padding:0px 0px 10px 0px}.fl{float:left}.fotter .wrap .fr{float:right;width:180px;height:50px;position:relative;font-size:12px}.fotter .wrap .fr img{position:absolute;top:50%;margin-top:-10px;right:0}.fotter .wrap .fl{line-height:50px;font-size:12px}.both{clear:both}h1{margin:10px 0;font-size:24px}h3{margin-bottom:30px}p{margin:3px 0px;padding:0px}a{color:#6a6a6a;font-size:14px;text-decoration:underline}a:hover{color:#799920}.wrap{width:960px;margin:0px auto}.f{background:#ffffff}.br{-webkit-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);-moz-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);padding:20px}nav.top{background:#f5f5f5;padding:10px 0px;border-bottom:1px solid #d2d2d2;font-size:12px}nav.top ul{list-style:none;margin:0px;padding:0px}nav.top ul li{float:left;padding-right:20px}nav.top ul li a{font-size:12px}nav.top a{color:#6a6a6a;text-decoration:none}#help{background:url('../img/help.png') right no-repeat;padding-right:20px}#help span{border-bottom:1px dotted #6a6a6a}#login{background:url('../img/login.png') right no-repeat;padding-right:20px;font-size:12px}#login span{border-bottom:1px dotted #6a6a6a}.search{margin:-5px 0px -5px 100px;float:left}nav input[type="text"]{width:325px;outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px}nav input[type="submit"]{width:35px;height:29px;border:none;background:url('../img/lupa_sub.png') center no-repeat;margin-left:-35px;cursor:pointer}.header{margin:0px 0px 20px}.phone{float:left;position:relative;text-align:center;}.phone .tel{font-size:23px}.phone .tel span.more{margin-bottom:3px}.more_block{background:#ffffff;border:1px solid #d2d2d2;padding:10px;position:absolute;font-size:20px;display:none;z-index:99}.more{background:url('../img/more.png') no-repeat;width:12px;height:7px;display:inline-block;cursor:pointer;margin-bottom:5px}.logo{margin:0px auto 0px;width:193px}.logo a{display:block;width:193px;height:84px;background:url('../img/logo.png') no-repeat}.logo a span{display:none}#call{color:#6a6a6a;text-decoration:none;border-bottom:1px dotted #6a6a6a}.basket{float:right;position:relative;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;font-size:18px;text-transform:uppercase;margin-top:13px}.basket .info{float:left;border-right:1px solid #d2d2d2;padding-right:10px;margin-right:17px}.basket .info span{color:#f75d50;font-size:22px}.basket a:link,.basket a:visited{text-decoration:none;color:#000000;font-size:18px}.basket span.more{margin-bottom:-1px}.menu{background:#596065;border:1px solid #e8e8e8}.menu ul{margin:0px;padding:0px;list-style:none}.menu ul li{float:left;border-left:1px solid #8b9094;height:43px}.menu ul li:first-child{border-left:none}.menu ul li a{width:100%;height:100%;line-height:43px;float:left;box-sizing:border-box;padding:0 19px;text-transform:uppercase;color:#ffffff;font-size:15px;text-decoration:none;font-weight:600}.menu ul li:hover{background:#3e454b}.menu ul li.active a{background:#f5f5f5;color:#596065}.menu ul li.active a:hover{cursor:default}.menu_childs{background:#f5f5f5;border:1px solid #e8e8e8;border-bottom:2px solid #596065}.menu_childs ul{margin:0px;padding:0px;list-style:none}.menu_childs ul li{float:left}.menu_childs ul li a{float:left;padding:15px 23px 15px 23px;text-transform:uppercase;color:#596065;font-size:14px;font-weight:bold;text-decoration:none}.menu_childs ul li a:hover{color:#878b8e}.fr ul li{border:none}.akciya a{background:#f75d50;color:#ffffff}.brands a{background:#95ba2f;color:#ffffff}a.myorders{color:#f75d50}.sub{margin:2px 0px 0px 0px}.sub img{float:left;margin-right:2px}.rubrics{margin:60px 0 0 0;padding-bottom:27px}.rubrics ul{list-style:none;margin:0px;padding:0px}.rubrics ul li{float:left;margin:0px 35px}.rubrics ul li a{float:left;width:120px;padding-top:130px;text-align:center;text-transform:uppercase;color:#494949;text-decoration:none;font-weight:bold}.rubrics ul li.item_ryukzaki a{background:url('../img/ico1.png') no-repeat}.rubrics ul li.item_sumki a{background:url('../img/ico2.png') no-repeat}.rubrics ul li.item_chehly a{background:url('../img/ico3.png') no-repeat}.rubrics ul li.item_nesessery a{background:url('../img/ico4.png') no-repeat}.rubrics ul li.item_koshelki a{background:url('../img/ico5.png') no-repeat}.products{padding-bottom:30px;padding-top:20px}.why_me_,.products{border-top:1px solid #d2d2d2}.products ul{list-style:none;margin:0;padding:0}.products ul li.item{float:left;width:192px;margin:0 0 50px 0;text-align:center;position:relative}.products ul li a.name,.special-products a.name{display:block;color:#799920;font-size:15px;text-decoration:none;margin:15px 0 0 0;height:35px;overflow:hidden;box-sizing:border-box;padding:0 10px}.products ul li a.name:hover,.special-products a.name:hover{text-decoration:underline}.products ul li .info{text-align:left}.pn{border:none}.cost,.product_read_price #cost{color:#f75d50;font-size:18px;margin:0;padding:0}.cost span,.cost span.valute,.product_read_price .valute{font-size:14px}strike,strike span#old_cost{font-size:14px;color:#333}.submit4m,a.link_buy,.checkout_basket button,.submit4{background:#95ba2f;border-radius:4px;height:29px;text-transform:uppercase;color:#ffffff;text-decoration:none;font-weight:600;text-align:center;border-bottom:3px solid #799920;font-size:12px}.submit4.bottom3{font-size:12px !important;display:block}.basket .submit4.bottom3{font-size:12px !important;display:block;margin-top:10px}a.link_buy,.checkout_basket button{display:block;margin:0 auto 10px auto;width:122px;line-height:32px}.checkout_basket button,.submit4{margin:0;padding:0 20px;line-height:31px;width:auto;border-top:0;border-left:0;border-right:0;cursor:pointer}a.link_buy:hover,.submit4m:hover,.checkout_basket button:hover,.submit4:hover,.btn-primary:hover{border-bottom:3px solid #95ba2f}a.link_buy:active,.submit4m:active,.checkout_basket button:active,.submit4:active,.btn-primary:active{background:#799920;border-bottom:3px solid #799920}.checkout_basket button:focus,.submit4:focus{outline:none}.mycarousel{position:absolute;right:22px;top:13px}ul.mycarousel{list-style:none;margin:0px;padding:0px}ul.mycarousel li{margin:0px;padding:0px}.mycarousel img{border:1px solid #d2d2d2}h3{text-align:center;text-transform:uppercase;font-size:20px}span.why {height: 29px;display: block;width:213px;height:49px;background:url('../img/logo-why.png') no-repeat;margin:0px auto;padding:0 0 20px 0}ul.why_list{list-style:none;margin:0px;padding:0px}ul.why_list li{float:left;margin-left:58px;width:288px;height:96px;box-sizing:border-box;padding-left:110px;margin-top:20px}ul.why_list li div{display:table-cell;height:96px;vertical-align:middle}ul.why_list li span{font-weight:bold;color:#799920}ul.why_list li.item1{background:url('../img/why_item1.png') left no-repeat}ul.why_list li.item2{background:url('../img/why_item2.png') left no-repeat}ul.why_list li.item3{background:url('../img/why_item3.png') left no-repeat}ul.why_list li.item4{background:url('../img/why_item4.png') left no-repeat}ul.why_list li.item5{background:url('../img/why_item5.png') left no-repeat}ul.why_list li.item6{background:url('../img/why_item6.png') left no-repeat}.banner_akciya{margin:50px 0px}.bottom{background:#4d5458;padding:40px 0px;color:#ffffff}.bottom .leftbar{float:left;width:210px}.bottom ul{list-style:none;margin:0px;padding:0px;line-height:23px}.bottom ul a{color:#ffffff;font-size:15px;text-decoration:none}.bottom ul a:hover{color:#799920}.phones{padding-left:25px;background:url('../img/phone.png') left top no-repeat;margin-top:50px;line-height:23px;font-size:18px}.map{padding:5px 0px 5px 25px;background:url('../img/map.png') left no-repeat;margin-bottom:7px}a.more_map{color:#99a5ad;border-bottom:1px dotted #99a5ad;text-decoration:none;font-size:11px;text-align:center}.bread-crumbs{padding:0 0 0 20px;border-bottom:1px solid #d2d2d2;height:29px}.bread-crumbs ul{list-style:none;margin:0 0 0 0;padding:0;height:29px}.bread-crumbs ul li{float:left;padding-left:20px;height:100%;line-height:29px;color:#7d7d7d;position:relative;font-size:12px}.bread-crumbs ul li:first-child{padding-left:0}.bread-crumbs ul li a{font-size:12px;display:block;color:#7d7d7d}.bread-crumbs ul li a:visited,.bread-crumbs ul li a:link{color:#7d7d7d;text-decoration:underline}.bread-crumbs ul li a:hover{color:#464646;text-decoration:none}.breadcrumb > li + li:before{color:#ccc;content:"/";position:absolute;top:0;left:8px}.loyout{padding:20px 0px}.leftbar{float:left;width:172px;margin-right:20px}.rightbar{float:right;width:380px;margin-left:40px}.rightbar.basket_rightbar{margin-right:20px}.rightbar2{float:right;width:320px}.content{overflow:hidden}* html .content{height:1%}.content2{overflow:hidden}* html .content2{height:1%}.filters{border-top:1px solid #d2d2d2;padding:20px 0px 0px;margin-top:20px}.filters .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.filters ul{list-style:none;margin:0px;padding:0px;line-height:22px;margin-top:6px}.filters ul li{position:relative;box-sizing:border-box;padding-left:24px;line-height:16px;margin-top:7px}.filters ul li:first-child{margin-top:0}.filters ul li>input{position:absolute;left:4px;margin:0px 0 0;top:3px}.filters ul li a{color:#464646;text-decoration:none;font-size:13px;line-height:16px}.filters ul li a:hover{text-decoration:underline}.filters ul li.hidden{color: #9da9b1}.productLeftBar{float:left;width:228px;margin-left:20px;margin-right:20px}.productRightBar{float:right;width:260px;margin:0 20px}.productLeftBar h1{font-size:24px;border-bottom:1px solid #d2d2d2;margin-bottom:10px}ul.product_mod{list-style:none;margin:10px 0 0 0;padding:0;float:left}ul.product_mod li{float:left;width:46px;height:46px;background:#fff;border:1px solid #d2d2d2;margin:5px 5px 0 0;text-align:center;position:relative}ul.product_mod li.active:before{width:48px;height:48px;position:absolute;content:'';background:none;border:2px solid #95ba2f;top:-1px;left:-1px;box-sizing:border-box}ul.product_mod li a{width:46px;height:46px;display:table-cell;vertical-align:middle}ul.product_mod li a:focus{outline:none}ul.product_mod li img{vertical-align:middle;max-width:46px;max-height:46px}ul.product_colors{list-style:none;margin:30px 0 0 0;padding:0;float:left}ul.product_colors li{float:left;margin:10px 10px 0 0;width:98px;height:98px;text-align:center;border:1px solid #d2d2d2}ul.product_colors li a{width:98px;height:98px;vertical-align:middle;display:table-cell}ul.product_colors li img{max-width:98px;max-height:98px;vertical-align:middle}.productLeftBar .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.cost_box{border-top:1px solid #d2d2d2;border-bottom:1px solid #d2d2d2;margin:10px 0px;padding:10px 0px}.cost_box .w{float:left;margin-right:20px;padding-top:5px}.product_service ul{list-style:none;margin:0px;padding:0px}.product_service ul li a{color:#799920;text-decoration:none;border-bottom:1px dotted #799920;font-size:12px}.product_service ul li.item1{background:url('../img/li1.png') left no-repeat;padding:3px 23px}.product_service ul li.item2{background:url('../img/li2.png') left no-repeat;padding:3px 23px}.product_service ul li.item3{background:url('../img/li3.png') left no-repeat;padding:3px 23px}#nav_product{list-style:none;margin:0px;padding:0px;line-height:23px}#nav_product li a{background:url('../img/li_plus.png') left no-repeat;padding:3px 15px;color:#000000;text-transform:uppercase;text-decoration:none;font-weight:bold;font-size:12px}#nav_product li a.active{background:url('../img/li_minus.png') left no-repeat}#nav_product li .info{display:none;border-bottom:1px solid #d2d2d2;padding:10px 0px;margin-bottom:10px}#nav_product li .info,#nav_product li .info p{font-size:12px;line-height:16px}.modal_box{position:fixed;left:0;top:0;width:100%;height:100%;z-index:999;background:#000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5}#data_box{position:absolute;top:100px;z-index:1000;width:400px;background:#ffffff;-webkit-box-shadow:0 0 15px #000;-moz-box-shadow:0 0 15px #000;box-shadow:0 0 15px #000;border:7px solid #1b9bb6;border-radius:5px}#data_box .data_wrp{padding:25px 15px 15px 15px}#data_box .data_wrp h1{text-transform:uppercase}#data_box .data_wrp hr{height:1px;border:none;color:#000000;background:#000000;margin:45px 0px 20px 0px}#data_box .data_wrp hr.hr{height:1px;border:none;color:#000000;background:#000000;margin:20px 0px 20px 0px}#data_box .pic-tango{margin-right:7px;margin-bottom:7px}#modal_close{cursor:pointer;margin-top:-80px;margin-right:-50px}.rightbar .control-label,.textareagroup .control-label{float:left;width:80px;padding-top:5px}.form-control{outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:3px;width:250px}.form-control:focus{border:#1b9bb6 1px solid;box-shadow:0 0 10px #1b9bb6;-webkit-box-shadow:0 0 10px #1b9bb6;-moz-box-shadow:0 0 10px #1b9bb6}.help-block{color:red;font-size:12px;margin-bottom:5px}.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;clear:both}.basket_item img{margin-right:20px}.basket_item .count{margin:20px 0px}.basket_item .fr{margin-top:13px}.basket_item .info{overflow:hidden}.basket_item > a{display:block;float:left}a.del:visited,a.del:link{background:url('../img/del.png') left center no-repeat;padding:2px 25px;font-size:12px;font-weight:normal;color:#787878;text-decoration:underline}a.del:hover{color:#a52828;text-decoration:underline}.total{text-align:right;color:#87476a;font-size:20px;margin:10px 0px}.submit4m{font-family:Roboto;border:none;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;font-size:10px;cursor:pointer;width:102px;height:29px;border-bottom:3px solid #799920;line-height:29px}.submit4m:active,.submit4m:focus{outline:none}.btn-primary{border-bottom:3px solid #799920;border-top:0;border-right:0;border-left:0;margin-top:5px;padding:0 15px;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:12px;font-weight:bold;cursor:pointer;height:29px;line-height:29px}.btn-primary:active,.btn-primary:focus{outline:none}a.logout:visited,a.logout:link{border:none;padding:3px 5px;background:#f75d50;border-radius:5px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:11px;font-weight:normal;cursor:pointer}a.logout:hover{background:#95ba2f}.boy_box{border-bottom:1px solid #b7b7b7;padding:0px 0px 15px 0px}.boy_box div{padding-top:10px}.content_product .info{padding:0px 0px 20px 0px}a.btn-success{display:inline-block;border:2px solid #d8d6d6;color:#95ba2f;border-radius:5px;padding:5px;margin-bottom:10px;text-decoration:none;font-size:14px}a.btn-success:hover{border:#95ba2f 2px solid;color:#f75d50}.txtb1{font-size:14px;font-weight:bold}.txtf{font-size:14px;font-weight:bold;color:#87476a}.txtfb{font-size:20px;font-weight:bold;color:#87476a}.count{margin:20px 0px}.count input[type="number"]{outline:0;width:50px;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:7px}a.link2:visited,a.link2:link{font-size:14px;font-weight:bold;color:#95ba2f;text-decoration:none}a.link2:hover{color:#f75d50;text-decoration:underline}.well{margin:50px auto;width:400px;background:#f5f5f5;border:1px solid #e8e8e8;padding:20px;border-radius:5px}.control-label{float:left;width:100px;padding-top:5px}#user-verifycode-image{display:block}.form-inline{display:inline}.form-inline .form-group{float:left;margin-right:10px}.form-inline .form-group select{width:100px}.form-group{margin-bottom:10px}.table-bordered{width:100%;border:1px solid silver}.table-bordered th{background:#B3D1FD;padding:5px}.table-bordered tr td{border:1px solid silver;padding:5px}.table-bordered .filters{display:none}.formCost label{float:left;width:30px}ul.brends_list{list-style:none;margin:0px;padding:0px}ul.brends_list li{float:left;text-align:center;margin:0px 15px 20px 15px}.compare{text-align:center}.compare a:visited,.compare a:link{font-size:12px;text-decoration:underline}.alert-success{margin:10px 0px;padding:10px;border:1px solid #3ed824;border-radius:5px;background:#c0feb5}.news_item{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid silver}.news_item img{margin-right:20px}.news_item a{font-size:16px}.pic{width:392px;height:365px}.pic a{width:392px;height:365px;display:table-cell;vertical-align:middle}.pic a img{max-width:392px;max-height:365px;vertical-align:middle}input#subscribe-email::-webkit-input-placeholder{color:#596065}input#subscribe-email::-moz-placeholder{color:#596065}input#subscribe-email:-ms-input-placeholder{color:#596065}input#subscribe-sale::-webkit-input-placeholder{color:#596065}input#subscribe-sale::-moz-placeholder{color:#596065}input#subscribe-sale:-ms-input-placeholder{color:#596065}#subscribe-email,#subscribe-sale{color:#596065}#subscribe-sale{width:100px;float:left;margin-right:20px;height:28px}.saletxt{width:150px;float:left;color:#ffffff;font-size:12px}#subscribe-email{width:370px}.txts{color:#9da9b1;font-size:18px;margin-bottom:20px}.content ul.pagination{list-style:none;text-align:center;margin:0 0 16px 0;padding:0 0 20px 0;border-bottom:1px solid #d2d2d2}.content ul.pagination li{display:inline}.content ul.pagination li a{padding:3px;color:#82a02f;font-size:15px;margin:0;text-decoration:none}.content ul.pagination li a:hover{text-decoration:underline}.content ul.pagination li.active a{color:#333333}.boxitem{height:283px}ul.social{margin-top:20px}.social{list-style:none;margin:10px;padding:0px;height:48px}.social li{display:inline-block;margin-right:7px;padding-bottom:10px}.social li a{width:36px;height:36px;display:block;margin:0;padding:0;text-indent:-9999px;background:#bcbcbc url(../img/social-ico-two.png) no-repeat 0 0;border-radius:48px;-moz-border-radius:48px;-webkit-border-radius:48px;-webkit-transition:all 0.5s ease-out;-moz-transition:all 0.5s ease-out;transition:all 0.5s ease-out}.social .fb{background-position:-44px 0;cursor:pointer}.social .vk{cursor:pointer}.social .vk:hover{background-color:#5B7FA6}.social .fb:hover{background-color:#354f89}.social .gp{background-position:-132px 0;cursor:pointer}.social .gp:hover{background-color:#c72f21}.social .tw{background-position:-144px 0;cursor:pointer}.social .tw:hover{background-color:#6398c9}.social .ok{background-position:-89px 0;cursor:pointer}.social .ok:hover{background-color:#f88f15}.social ul li a:hover{background-color:#065baa}.socialbox{margin:10px 0px}.hide{display:none}.footer .fl{font-size:12px}.fotter{background:#484f55;height:50px;color:#98a3ab}.fotter a{color:#98a3ab;line-height:50px;float:left;font-size:12px}.view_products2{list-style:none;overflow:auto;height:400px}.view_products2 img{float:left;margin-right:20px}.view_products2 li{margin:10px 0px}.pixbox{width:160px;margin:0 auto;height:200px;overflow:hidden;text-align:center}.form-order{background:#f5f5f5;padding:0 20px 20px 20px}#order-payment{float:right;width:280px}#order-delivery{float:right;width:280px}.delivery-data{margin-bottom:27px;position:relative;background:#95ba2f;display:none;border-radius:5px;float:left;box-sizing:border-box;padding:14px 20px;color:#fff;font-size:13px}.jcarousel-next-disabled,.jcarousel-prev-disabled{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.content2 br{display:none}.pixbox a{width:160px;height:200px;display:table-cell;vertical-align:middle}.pixbox img{max-width:160px;max-height:200px;vertical-align:middle}.pagination li.prev.disabled span{display:none}.pagination li.next.disabled span{display:none}.fr{float:right}.nobottom{border-bottom:none !important}.dotted a{border-bottom:1px dotted #808080}.mycabinet{padding-left:20px;margin-top:20px}.mycabinet .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.mycabinet ul{margin:0px;padding:0px;list-style:none}.mycabinet ul li{padding-top:10px;padding-bottom:10px}.mycabinet a{color:#799920;text-decoration:none}.lay_title .uppercase{text-transform:uppercase}.lay_title .center{text-align:center}.lay_title{padding-top:15px;font-size:24px}.user_data{width:390px;border-right:1px solid #d2d2d2;float:left}.user_data .col{padding-bottom:35px}.user_data .col.last{padding-bottom:0px}.user_data .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data .data{float:left;font-size:13px}.edit_menu{float:left;padding-left:60px;font-size:13px}.edit_menu div{padding-bottom:20px}.edit_menu a{color:#799920;text-decoration:none}.edit_menu .dotted{border-bottom:1px dotted #799920}.user_edit_area{padding-top:30px}.user_data_editing{float:left}.inputs .col{padding-bottom:12px !important}.user_data_editing .col{padding-bottom:35px;width:432px}.user_data_editing .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data_editing .data{float:left;font-size:13px;width:262px}.user_data_editing input[type="text"]{padding:0;margin:0;border:1px solid #d2d2d2;padding-top:7px;padding-bottom:7px;padding-left:10px;padding-right:10px;border-radius:4px;font-size:12px;margin-top:-10px;width:240px}.user_data_editing .add{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.add_more{padding-bottom:24px;padding-left:170px}.delete{float:right}.delete_button{background:url('../img/ico_close.png') right no-repeat;width:16px;height:16px;float:right}.content_area{width:450px}#cancel{text-decoration:none;color:#799920;font-size:13px;border-bottom:1px dotted #799920;float:left;margin-left:40px}.buttons{display:inline-flex;align-items:center}.favorites{background-color:#f5f5f5;padding:5px;font-size:14px}.favorites .fav_point{background-color:#ffffff;border:1px solid #d2d2d2;border-radius:3px;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px;margin-top:5px}.favorites .fav_point .left{float:left;padding-right:0;width:178px}.favorites .fav_point .right{float:right;padding-right:0;padding-left:0}.favorites .link{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.redtext{color:#f75d50}.greentext{color:#95ba2f}.hold .orders_view{display:none !important}.orders_view{width:680px;margin-top:13px;padding-top:13px;padding-bottom:5px;border-top:1px solid #d2d2d2;display:block}.orders_view .order{float:left;width:225px;text-align:center}.orders_view .order .order_price{color:#f75d50;font-weight:bold;font-size:15px}.orders_view .order .order_price span{font-size:24px}.orders_view .order img{padding-bottom:22px}.orders_view .order .note{font-size:13px}.orders_view .order .note span{color:#f75d50}.basket_hovered{position:absolute;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;background-color:white;right:-1px;margin-top:10px;width:640px;display:none;z-index:1111}.open .basket_hovered{display:block}.open,.open .basket_hovered{-moz-box-shadow:0px 0px 5px rgba(149,149,149,0.75);-webkit-box-shadow:0px 0px 5px rgba(149,149,149,0.75);box-shadow:0px 0px 5px rgba(149,149,149,0.75)}.basket_hovered1:before{position:absolute;left:0;content:' ';width:100%;background-color:white;height:10px;top:45px;z-index:1112}.basket_item input{border:1px solid #d2d2d2;border-radius:4px;padding:9px;width:26px;font-size:18px;font-weight:bold;text-align:center;background-color:white;color:black;margin:7px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.minus{background:url('../img/minus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.plus{background:url('../img/plus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.basket_sum{padding-top:15px}.basket_sum .sum_text{font-size:15px;text-transform:none;padding-top:12px;float:right !important;padding-top:1px;margin-bottom:11px}.basket_sum .sum_text span{font-size:18px;color:#f75d50;font-weight:bold}.basket_sum a{color:white !important;font-size:15px !important;float:right}.black{z-index:9999;width:100%;height:100%;position:absolute;display:block;padding-top:6%}.black:before{content:'';background-color:rgba(0,0,0,0.5);width:100%;height:100%;position:fixed;top:0}.black.hidden{display:none}.black .item_added_win{background-color:#ffffff;width:640px;margin:auto;position:relative}.black_close{position:absolute;top:30px;right:30px;background:url('../img/ico_close2.png') no-repeat;width:22px;height:22px;display:inline-block;cursor:pointer}.block_content{padding-left:20px;padding-right:20px}.item_added_win h2{text-transform:uppercase;text-align:center;padding:30px}.block_content .item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #d2d2d2}.uppercase{text-transform:uppercase}.w230{width:230px}.w260{width:260px}.w430{width:430px}.borderbottom{border-bottom:1px solid #d2d2d2}.left_block .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.color_variants .variant{text-align:center;border:1px solid #d2d2d2;float:left;margin-right:5px;margin-bottom:5px}.variant:hover{cursor:pointer}.color_variants{margin-top:14px;margin-bottom:-5px}.color_variants .variant.active{width:44px;height:44px;border:2px solid #95ba2f}.color_variants .variant.active a{width:44px;height:44px}.tobasket{margin-top:20px;margin-bottom:20px}.tobasket:hover{color:white}.variant{width:46px;height:46px}.variant.active{width:44px;height:44px}.layout{margin-top:15px}.left_block{float:left}.right_block{float:right}.center_block{float:left;margin-left:23px}.left_block .links{margin-top:25px}.left_block .links li{list-style:none;padding-left:25px;display:inline-block;cursor:pointer;height:20px}.left_block .links ul{margin:0;padding:0}.left_block .links a{font-size:13.5px;text-decoration:none;color:#8ba73e}.links .add_bookmarks{background:url('../img/ico_add_bookmark.png') no-repeat center left}.links .what_price{background:url('../img/ico_price.png') no-repeat center left}.links .add_compare{background:url('../img/ico_scales.png') no-repeat center left}.spoiler_one{padding-top:15px;padding-bottom:15px;border-bottom:1px solid #d2d2d2}.spoiler_one .spoiler_content{margin-top:15px;font-size:13px}.spoiler_one .spoiler_content.hidden{display:none}.title_spoiler:hover{cursor:pointer}.title_spoiler{background:url('../img/ico_open.png') no-repeat center left;padding-left:17px;font-size:13px;text-transform:uppercase;color:#333333;font-weight:bold;text-decoration:none}.title_spoiler.closed{background:url('../img/ico_close3.png') no-repeat center left}.features{list-style:none;padding:0;margin:0;font-size:13px}.features a{font-size:13px;text-decoration:none;border-bottom:1px dotted #8ba73e;color:#8ba73e}.features li{padding-top:5px;padding-bottom:4px}.note_prod{width:225px;height:23px;overflow:hidden;border-radius:5px;display:table;text-transform:uppercase;font-size:11px;font-weight:bold}.note_prod .one{z-index:999}.note_prod .two{z-index:998}.note_prod .blue{float:left;padding-top:5px;padding-bottom:5px;background-color:#42b9f6;padding-left:10px;padding-right:5px;position:relative}.note_prod .blue:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #42b9f6;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .red{float:left;padding-top:5px;padding-bottom:5px;background-color:#f75d50;padding-left:10px;padding-right:5px;position:relative;color:#ffffff}.note_prod .red:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #f75d50;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .yellow{float:left;padding-top:5px;padding-bottom:5px;background-color:#fbc665;padding-left:10px;padding-right:5px;position:relative}.note_prod .yellow:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #fbc665;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.products_block .product{float:left;width:190px;vertical-align:bottom}.product .image{height:225px;position:relative}.product .image img{position:absolute;bottom:0;left:15px}.price{font-size:18px;color:#f75d50;font-weight:bold;text-align:center}.product{padding-bottom:30px;position:relative}.product p{font-size:15px;text-align:center;margin-top:15px}.left52{margin-left:52px}.product a{color:#ffffff}.mrg1{margin-top:25px;margin-bottom:15px}.products_martopbot{margin-top:60px;margin-bottom:100px}.cont_shop_but{display:table-cell;vertical-align:middle;padding:35px}.cont_shop{text-decoration:none;font-size:12px;border-bottom:1px dotted #799920;color:#799920}.icons{width:45px;height:50%;position:absolute;z-index:9;right:0;padding-top:25px;padding-right:15px}.icons a{width:44px;height:44px;float:left;border:1px solid #d2d2d2;margin-bottom:5px;background-color:white}a:hover{cursor:pointer}.basket_item .form-group{display:inline}.basket.open:after{content:'';position:absolute;top:43px;width:100%;height:10px;background-color:white;left:0;z-index:9990}.basket_hovered .basket_sum{float:left}a.active{font-weight:bold;text-decoration:underline}.HOME_RIGHT{display:inline-block;vertical-align:top;margin-left:10px;position:absolute}#HOME_UNDER_SLIDER > div{display:inline-block;margin-right:3px;margin-top:3px}.sort_block{display:inline-block}.sort_block ul{display:inline-block;margin:0;padding:0}.sort_block ul li{display:inline-block;margin:0 0.5em;list-style:none}.sort_block ul li a.asc:after,.sort_block ul li a.desc:after{display:block;width:5px;height:3px;position:absolute;top:50%;margin-top:-1px;right:-10px;content:'';background:url("../img/arrow_sort_asc_desc.png") no-repeat}.sort_block ul li a.asc:after{background-position:0 0}.sort_block ul li a.desc:after{background-position:0 -3px}.home_banner_up{margin-top:20px}.home_banner_up .HOME_RIGHT{display:block;float:right;position:static;margin-left:0}#HOME_SLIDER .jssorb03 div,#HOME_SLIDER .jssorb03 div:hover,#HOME_SLIDER .jssorb03 .av{width:6px;height:6px;border-radius:50%;line-height:6px;background:#fff;border:2px solid #fff;box-shadow:0px 0px 5px 0px rgba(54, 54, 54, 0.75)}#HOME_SLIDER .jssorb03 div.av:hover,#HOME_SLIDER .jssorb03 div.av:active,#HOME_SLIDER .jssorb03 .av{cursor:default;background:#95BA2F}.special-products{padding-top:30px}.special-products .link_buy{margin-bottom:0}.special-products .item{margin-bottom:0 !important;text-align:center}.why_me_{padding-top:30px;overflow:hidden;margin-bottom:60px}.why_me_ .why_list{width:1038px;margin-left:-58px}.seo_text p{margin:12px 0 0 0;font-size:13px !important;color:#333 !important;font-family:Roboto !important}.seo_text p:first-child{margin-top:0}.product-special{position:absolute}.jcarousel-skin-tango .jcarousel-item{width:38px;height:38px;border:1px solid #d2d2d2;text-align:center;background:#fff}.jcarousel-skin-tango .jcarousel-item a{display:table-cell;width:38px;height:38px;vertical-align:middle}.mycarousel img{max-width:38px;max-height:38px;border:0;vertical-align:middle}.jcarousel-skin-tango .jcarousel-clip-vertical,.jcarousel-skin-tango .jcarousel-container-vertical{height:175px}.jcarousel-skin-tango .jcarousel-container-vertical{padding:0}.jcarousel-skin-tango .jcarousel-prev-vertical{top:-13px}.jcarousel-skin-tango .jcarousel-next-vertical{bottom:-13px}.jcarousel-skin-tango .jcarousel-prev-vertical,.jcarousel-skin-tango .jcarousel-next-vertical{left:0;width:42px;background-position:14px 0}.jcarousel-skin-tango .jcarousel-prev-vertical:hover,.jcarousel-skin-tango .jcarousel-next-vertical:hover{background-position:14px 0;left:0}ul.product-special{position:absolute;top:0;left:16px}ul.product-special li{width:100%;float:left}ul.product-special li div{color:#333;font-size:10px;text-transform:uppercase;font-weight:700;height:22px;line-height:24px;padding:0 9px;position:relative;border-top-left-radius:4px;border-bottom-left-radius:4px;margin-top:8px;float:left}ul.product-special li:first-child{margin-top:0}ul.product-special li.top div{background:#fbc665}ul.product-special li.top div:after{content:'';position:absolute;right:-19px;top:3px;border:11px solid transparent;border-top:5px solid #fbc665;transform:rotate(-90deg)}ul.product-special li.new div{background:#42b9f6}ul.product-special li.new div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #42b9f6;transform:rotate(-90deg)}ul.product-special li.promo div{background:#f75d50}ul.product-special li.promo div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #f75d50;transform:rotate(-90deg)}.cost-block{margin-top:1px}.products.pn a.link_buy{margin-bottom:0}.products.pn{padding-bottom:0}.products.pn>ul{width:100%;float:left;margin-bottom:-3px}._form_checkbox_reset,.sort_block ul li a,.sort_block{font-size:12px}.filter_accept_bloc{margin-top:13px;margin-bottom:0}._form_checkbox_reset{color:#6a6a6a;display:block;width:128px;height:28px;border:1px solid #d2d2d2;line-height:28px;text-align:center;border-radius:4px;text-decoration:none;margin:0 auto}._form_checkbox_reset:hover{border:1px solid #95ba2f;color:#6a6a6a}._form_checkbox_reset:active{border:1px solid #95ba2f;background:#95ba2f;color:#fff}.sort_block ul li a{color:#8fa951;position:relative}.sort_block ul li a:hover{color:#333}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03r{width:36px;height:340px;background:url('../img/new_arrows_.png') no-repeat}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03l:hover{background-position:0 50%;left:0;top:0}#HOME_SLIDER .jssora03r,#HOME_SLIDER .jssora03r:hover{background-position:-36px 50%;right:0;top:0}.loyout ._prd_spec-wr{margin-top:10px}.loyout .special-products:first-child{border-top:0;padding-top:0}.irs-slider{width:13px;height:13px;top:25px;border-radius:100%;box-shadow:none;border:1px solid #d2d2d2;background:#ffffff;background:-moz-linear-gradient(top, #ffffff 0%, #ebebeb 100%);background:-webkit-linear-gradient(top, #ffffff 0%,#ebebeb 100%);background:linear-gradient(to bottom, #ffffff 0%,#ebebeb 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ebebeb',GradientType=0 )}.irs-slider.state_hover,.irs-slider:hover{background:#ffffff}.irs-slider:after{display:none}.irs-slider:before{content:"";position:absolute;width:5px;height:5px;z-index:2;border:1px solid #d2d2d2;border-radius:100%;background:#799920;top:3px;left:3px}.irs-bar{height:3px;top:30px}.irs-line{height:9px;background:#ebebeb;border:1px solid #d2d2d2;top:27px}.irs-line:before{width:166px;height:5px;position:absolute;content:'';top:2px;left:2px;background:#d2d2d2;border-radius:5px}.irs-min,.irs-max{display:none}.irs{height:49px}.price_filter.first_price_li{margin-top:8px}.product_read_ .w{width:110px;overflow:hidden;margin:0;padding-top:0;display:table-cell;vertical-align:middle;height:32px;float:none}.product_read_ .w strike,.product_read_ .w .cost{width:100%;float:left}.product_read_price .link_buy{width:118px;position:absolute;top:50%;right:0;margin:-16px 0 0 0}.product_read_price{position:relative;min-height:32px;margin-top:10px}.special-products.products h3{margin-bottom:10px}.special-products.products li.item{margin-top:30px}.productLeftBar .cost_box{border-top:0;padding:10px 0 15px 0}.productLeftBar .product_mod{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:15px}.field-orders-delivery .control-label,.field-orders-payment .control-label,.field-orders-body .control-label,.textareagroup .control-label{width:100%;float:left}.basket_title_{text-align:center}.cont_shopping-wr{width:100%;float:left;margin-top:10px}.cont_shopping-wr .cont_shopping{float:right}.cont_shopping{display:block !important;border-top:0 !important;border-left:0 !important;border-right:0 !important;border-bottom:1px dashed #799920 !important;color:#799920 !important;margin:0 !important;padding:0 !important;font-size:12px !important;float:left;border-radius:0 !important}.info.product-thumb-video{width:100%;height:100%}.info.product-thumb-video iframe,.info.product-thumb-video embed{width:100% !important;height:auto !important}.input-blocks-wrapper,.input-blocks{width:100%;float:left}.form-order .input-blocks-wrapper{margin-top:6px}.input-blocks label{font-size:13px;color:#333}.basket_input_2 label{height:30px;line-height:30px;float:left;width:70px !important;padding-top:0 !important}.custom-input-2{width:100%;height:30px;box-sizing:border-box;outline:none;line-height:30px;padding-left:8px;margin-top:5px;background:#fff;border-radius:4px}.custom-input-2,.custom-area-2,.textareagroup textarea{border:1px solid #d2d2d2;box-sizing:border-box;font-size:13px;color:#636363}.custom-area-2,.textareagroup textarea{min-height:128px;max-height:128px;resize:none;width:100%;max-width:100%;outline:none;padding-left:8px;padding-top:8px;margin-top:8px}.basket_input_2 .custom-input-2{width:270px;float:right;margin-top:0}.custom-input-2:focus,.custom-area-3:focus,.textareagroup textarea:focus{box-shadow:1px 2px 2px 0px rgba(215, 215, 215, 0.75) inset;transition:0.1s}.textareagroup textarea:focus{border:1px solid #d2d2d2}.title_groups,.radio_grp label.control-label,.textareagroup .control-label{font-size:12px;font-weight:bold;text-transform:uppercase;margin-bottom:12px}.input-blocks-group{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:20px;margin-top:18px}.custom-form-buttons{width:100%;float:left}input.custom-radio + label,input.custom-check + label{font-size:13px;cursor:pointer;margin-left:6px}input.custom-radio,input.custom-check{display:none}input.custom-radio + label span{width:16px;height:16px;background:url('../img/radio_new.png') no-repeat;float:left;transition:.2s;margin-top:1px}input.custom-radio:checked + label span,input.custom-radio:checked + label:hover span{background:url('../img/radio_new-active.png') no-repeat}input.custom-radio + label:hover{text-decoration:underline}.custom-form-buttons{margin-top:7px}.custom-form-buttons:first-child{margin-top:0}.delivery-data .field-order-delivery-childs .control-label{display:none}.checkout_basket{width:100%;float:left}.checkout_basket button{margin:0 auto}.input-blocks-wrapper .help-block{padding-left:71px;padding-top:4px;width:100%;float:left;box-sizing:border-box;margin-bottom:0}.cont_shop_but-wr{height:33px;margin-top:35px;padding-bottom:29px}.cont_shop_but-wr .cont_shop{margin-top:8px;float:left}.cont_shop_but-wr .submit4.bottom3{float:right}._qqq_ .params{font-size:12px}.activeShow{border-bottom:0 !important}.delivery-data:after{width:100%;border-bottom:1px solid #d2d2d2;position:absolute;content:'';bottom:-27px;left:0}.img_ajax_basket img{margin-right:0 !important;max-width:90px;max-height:90px;vertical-align:middle}.jcarousel-skin-tango>li{display:none}#login-form{margin:50px auto 0 auto}#bg{top:0 !important;z-index:1 !important}.top,.wrap,.bottom,.fotter{position:relative;z-index:2}.owl-pagination{display:none}.owl-controls .owl-buttons div{width:34px !important;height:50px !important;background:#596065 !important;top:50% !important;margin:-25px 0 0 0 !important;opacity:1 !important;border-radius:0 !important;padding:0 !important;position:absolute}.owl-controls .owl-buttons div:hover{background:#acafb2 !important;transition:0.2s !important}.owl-controls .owl-buttons .owl-prev{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important;left:-20px}.owl-controls .owl-buttons .owl-next{border-top-left-radius:4px !important;border-bottom-left-radius:4px !important;right:-20px}.owl-controls .owl-buttons div:before{position:absolute;content:'';width:8px;height:22px;background:url("../img/arrows_blocks.png") no-repeat;top:50%;margin-top:-11px;left:50%;margin-left:-4px}.owl-controls .owl-buttons .owl-prev:before{background-position:0 0}.owl-controls .owl-buttons .owl-next:before{background-position:-8px 0}.basket_input_2.required .control-label{position:relative}.basket_input_2.required .control-label:before{position:absolute;top:0;content:'*';color:#D60000;left:-11px;padding-top:2px}.float-left{float:left}.blog-show-img{padding-right:20px}.text_seo.hidden_seo{height:178px;overflow:hidden;position:relative}.text_seo.hidden_seo div{height:162px;overflow:hidden;position:relative}.text_seo.hidden_seo a{position:absolute;bottom:0;right:0;font-size:16px}.text_seo.hidden_seo div:before{content:'';display:block;position:absolute;bottom:0;right:0;left:0;height:120px;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%)}  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +html,form,body{padding:0;margin:0;font-family:'Roboto';font-size:14px;color:#333;height:100%}h1,h2,h3{margin:0px;padding:0px 0px 10px 0px}.fl{float:left}.fotter .wrap .fr{float:right;width:180px;height:50px;position:relative;font-size:12px}.fotter .wrap .fr img{position:absolute;top:50%;margin-top:-10px;right:0}.fotter .wrap .fl{line-height:50px;font-size:12px}.both{clear:both}h1{margin:10px 0;font-size:24px}h3{margin-bottom:30px}p{margin:3px 0px;padding:0px}a{color:#6a6a6a;font-size:14px;text-decoration:underline}a:hover{color:#799920}.wrap{width:960px;margin:0px auto}.f{background:#ffffff}.br{-webkit-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);-moz-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);padding:20px}nav.top{background:#f5f5f5;padding:10px 0px;border-bottom:1px solid #d2d2d2;font-size:12px}nav.top ul{list-style:none;margin:0px;padding:0px}nav.top ul li{float:left;padding-right:20px}nav.top ul li a{font-size:12px}nav.top a{color:#6a6a6a;text-decoration:none}#help{background:url('../img/help.png') right no-repeat;padding-right:20px}#help span{border-bottom:1px dotted #6a6a6a}#login{background:url('../img/login.png') right no-repeat;padding-right:20px;font-size:12px}#login span{border-bottom:1px dotted #6a6a6a}.search{margin:-5px 0px -5px 100px;float:left}nav input[type="text"]{width:325px;outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px}nav input[type="submit"]{width:35px;height:29px;border:none;background:url('../img/lupa_sub.png') center no-repeat;margin-left:-35px;cursor:pointer}.header{margin:0px 0px 20px}.phone{float:left;position:relative;text-align:center;}.phone .tel{font-size:23px}.phone .tel span.more{margin-bottom:3px}.more_block{background:#ffffff;border:1px solid #d2d2d2;padding:10px;position:absolute;font-size:20px;display:none;z-index:99}.more{background:url('../img/more.png') no-repeat;width:12px;height:7px;display:inline-block;cursor:pointer;margin-bottom:5px}.logo{margin:0px auto 0px;width:193px}.logo a{display:block;width:193px;height:84px;background:url('../img/logo.png') no-repeat}.logo a span{display:none}#call{color:#6a6a6a;text-decoration:none;border-bottom:1px dotted #6a6a6a}.basket{float:right;position:relative;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;font-size:18px;text-transform:uppercase;margin-top:13px}.basket .info{float:left;border-right:1px solid #d2d2d2;padding-right:10px;margin-right:17px}.basket .info span{color:#f75d50;font-size:22px}.basket a:link,.basket a:visited{text-decoration:none;color:#000000;font-size:18px}.basket span.more{margin-bottom:-1px}.menu{background:#596065;border:1px solid #e8e8e8}.menu ul{margin:0px;padding:0px;list-style:none}.menu ul li{float:left;border-left:1px solid #8b9094;height:43px}.menu ul li:first-child{border-left:none}.menu ul li a{width:100%;height:100%;line-height:43px;float:left;box-sizing:border-box;padding:0 19px;text-transform:uppercase;color:#ffffff;font-size:15px;text-decoration:none;font-weight:600}.menu ul li:hover{background:#3e454b}.menu ul li.active a{background:#f5f5f5;color:#596065}.menu ul li.active a:hover{cursor:default}.menu_childs{background:#f5f5f5;border:1px solid #e8e8e8;border-bottom:2px solid #596065}.menu_childs ul{margin:0px;padding:0px;list-style:none}.menu_childs ul li{float:left}.menu_childs ul li a{float:left;padding:15px 23px 15px 23px;text-transform:uppercase;color:#596065;font-size:14px;font-weight:bold;text-decoration:none}.menu_childs ul li a:hover{color:#878b8e}.fr ul li{border:none}.akciya a{background:#f75d50;color:#ffffff}.brands a{background:#95ba2f;color:#ffffff}a.myorders{color:#f75d50}.sub{margin:2px 0px 0px 0px}.sub img{float:left;margin-right:2px}.rubrics{margin:60px 0 0 0;padding-bottom:27px}.rubrics ul{list-style:none;margin:0px;padding:0px}.rubrics ul li{float:left;margin:0px 35px}.rubrics ul li a{float:left;width:120px;padding-top:130px;text-align:center;text-transform:uppercase;color:#494949;text-decoration:none;font-weight:bold}.rubrics ul li.item_ryukzaki a{background:url('../img/ico1.png') no-repeat}.rubrics ul li.item_sumki a{background:url('../img/ico2.png') no-repeat}.rubrics ul li.item_chehly a{background:url('../img/ico3.png') no-repeat}.rubrics ul li.item_nesessery a{background:url('../img/ico4.png') no-repeat}.rubrics ul li.item_koshelki a{background:url('../img/ico5.png') no-repeat}.products{padding-bottom:30px;padding-top:20px}.why_me_,.products{border-top:1px solid #d2d2d2}.products ul{list-style:none;margin:0;padding:0}.products ul li.item{float:left;width:192px;margin:0 0 50px 0;text-align:center;position:relative}.products ul li a.name,.special-products a.name{display:block;color:#799920;font-size:15px;text-decoration:none;margin:15px 0 0 0;height:35px;overflow:hidden;box-sizing:border-box;padding:0 10px}.products ul li a.name:hover,.special-products a.name:hover{text-decoration:underline}.products ul li .info{text-align:left}.pn{border:none}.cost,.product_read_price #cost{color:#f75d50;font-size:18px;margin:0;padding:0}.cost span,.cost span.valute,.product_read_price .valute{font-size:14px}strike,strike span#old_cost{font-size:14px;color:#333}.submit4m,a.link_buy,.checkout_basket button,.submit4{background:#95ba2f;border-radius:4px;height:29px;text-transform:uppercase;color:#ffffff;text-decoration:none;font-weight:600;text-align:center;border-bottom:3px solid #799920;font-size:12px}.submit4.bottom3{font-size:12px !important;display:block}.basket .submit4.bottom3{font-size:12px !important;display:block;margin-top:10px}a.link_buy,.checkout_basket button{display:block;margin:0 auto 10px auto;width:122px;line-height:32px}.checkout_basket button,.submit4{margin:0;padding:0 20px;line-height:31px;width:auto;border-top:0;border-left:0;border-right:0;cursor:pointer}a.link_buy:hover,.submit4m:hover,.checkout_basket button:hover,.submit4:hover,.btn-primary:hover{border-bottom:3px solid #95ba2f}a.link_buy:active,.submit4m:active,.checkout_basket button:active,.submit4:active,.btn-primary:active{background:#799920;border-bottom:3px solid #799920}.checkout_basket button:focus,.submit4:focus{outline:none}.mycarousel{position:absolute;right:22px;top:13px}ul.mycarousel{list-style:none;margin:0px;padding:0px}ul.mycarousel li{margin:0px;padding:0px}.mycarousel img{border:1px solid #d2d2d2}h3{text-align:center;text-transform:uppercase;font-size:20px}span.why {height: 29px;display: block;width:213px;height:49px;background:url('../img/logo-why.png') no-repeat;margin:0px auto;padding:0 0 20px 0}ul.why_list{list-style:none;margin:0px;padding:0px}ul.why_list li{float:left;margin-left:58px;width:288px;height:96px;box-sizing:border-box;padding-left:110px;margin-top:20px}ul.why_list li div{display:table-cell;height:96px;vertical-align:middle}ul.why_list li span{font-weight:bold;color:#799920}ul.why_list li.item1{background:url('../img/why_item1.png') left no-repeat}ul.why_list li.item2{background:url('../img/why_item2.png') left no-repeat}ul.why_list li.item3{background:url('../img/why_item3.png') left no-repeat}ul.why_list li.item4{background:url('../img/why_item4.png') left no-repeat}ul.why_list li.item5{background:url('../img/why_item5.png') left no-repeat}ul.why_list li.item6{background:url('../img/why_item6.png') left no-repeat}.banner_akciya{margin:50px 0px}.bottom{background:#4d5458;padding:40px 0px;color:#ffffff}.bottom .leftbar{float:left;width:210px}.bottom ul{list-style:none;margin:0px;padding:0px;line-height:23px}.bottom ul a{color:#ffffff;font-size:15px;text-decoration:none}.bottom ul a:hover{color:#799920}.phones{padding-left:25px;background:url('../img/phone.png') left top no-repeat;margin-top:50px;line-height:23px;font-size:18px}.map{padding:5px 0px 5px 25px;background:url('../img/map.png') left no-repeat;margin-bottom:7px}a.more_map{color:#99a5ad;border-bottom:1px dotted #99a5ad;text-decoration:none;font-size:11px;text-align:center}.bread-crumbs{padding:0 0 0 20px;border-bottom:1px solid #d2d2d2;height:29px}.bread-crumbs ul{list-style:none;margin:0 0 0 0;padding:0;height:29px}.bread-crumbs ul li{float:left;padding-left:20px;height:100%;line-height:29px;color:#7d7d7d;position:relative;font-size:12px}.bread-crumbs ul li:first-child{padding-left:0}.bread-crumbs ul li a{font-size:12px;display:block;color:#7d7d7d}.bread-crumbs ul li a:visited,.bread-crumbs ul li a:link{color:#7d7d7d;text-decoration:underline}.bread-crumbs ul li a:hover{color:#464646;text-decoration:none}.breadcrumb > li + li:before{color:#ccc;content:"/";position:absolute;top:0;left:8px}.loyout{padding:20px 0px}.leftbar{float:left;width:172px;margin-right:20px}.rightbar{float:right;width:380px;margin-left:40px}.rightbar.basket_rightbar{margin-right:20px}.rightbar2{float:right;width:320px}.content{overflow:hidden}* html .content{height:1%}.content2{overflow:hidden}* html .content2{height:1%}.filters{border-top:1px solid #d2d2d2;padding:20px 0px 0px;margin-top:20px}.filters .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.filters ul{list-style:none;margin:0px;padding:0px;line-height:22px;margin-top:6px}.filters ul li{position:relative;box-sizing:border-box;padding-left:24px;line-height:16px;margin-top:7px}.filters ul li:first-child{margin-top:0}.filters ul li>input{position:absolute;left:4px;margin:0px 0 0;top:3px}.filters ul li a{color:#464646;text-decoration:none;font-size:13px;line-height:16px}.filters ul li a:hover{text-decoration:underline}.filters ul li.hidden{color: #9da9b1}.productLeftBar{float:left;width:228px;margin-left:20px;margin-right:20px}.productRightBar{float:right;width:260px;margin:0 20px}.productLeftBar h1{font-size:24px;border-bottom:1px solid #d2d2d2;margin-bottom:10px}ul.product_mod{list-style:none;margin:10px 0 0 0;padding:0;float:left}ul.product_mod li{float:left;width:46px;height:46px;background:#fff;border:1px solid #d2d2d2;margin:5px 5px 0 0;text-align:center;position:relative}ul.product_mod li.active:before{width:48px;height:48px;position:absolute;content:'';background:none;border:2px solid #95ba2f;top:-1px;left:-1px;box-sizing:border-box}ul.product_mod li a{width:46px;height:46px;display:table-cell;vertical-align:middle}ul.product_mod li a:focus{outline:none}ul.product_mod li img{vertical-align:middle;max-width:46px;max-height:46px}ul.product_colors{list-style:none;margin:30px 0 0 0;padding:0;float:left}ul.product_colors li{float:left;margin:10px 10px 0 0;width:98px;height:98px;text-align:center;border:1px solid #d2d2d2}ul.product_colors li a{width:98px;height:98px;vertical-align:middle;display:table-cell}ul.product_colors li img{max-width:98px;max-height:98px;vertical-align:middle}.productLeftBar .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.cost_box{border-top:1px solid #d2d2d2;border-bottom:1px solid #d2d2d2;margin:10px 0px;padding:10px 0px}.cost_box .w{float:left;margin-right:20px;padding-top:5px}.product_service ul{list-style:none;margin:0px;padding:0px}.product_service ul li a{color:#799920;text-decoration:none;border-bottom:1px dotted #799920;font-size:12px}.product_service ul li.item1{background:url('../img/li1.png') left no-repeat;padding:3px 23px}.product_service ul li.item2{background:url('../img/li2.png') left no-repeat;padding:3px 23px}.product_service ul li.item3{background:url('../img/li3.png') left no-repeat;padding:3px 23px}#nav_product{list-style:none;margin:0px;padding:0px;line-height:23px}#nav_product li a{background:url('../img/li_plus.png') left no-repeat;padding:3px 15px;color:#000000;text-transform:uppercase;text-decoration:none;font-weight:bold;font-size:12px}#nav_product li a.active{background:url('../img/li_minus.png') left no-repeat}#nav_product li .info{display:none;border-bottom:1px solid #d2d2d2;padding:10px 0px;margin-bottom:10px}#nav_product li .info,#nav_product li .info p{font-size:12px;line-height:16px}.modal_box{position:fixed;left:0;top:0;width:100%;height:100%;z-index:999;background:#000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5}#data_box{position:absolute;top:100px;z-index:1000;width:400px;background:#ffffff;-webkit-box-shadow:0 0 15px #000;-moz-box-shadow:0 0 15px #000;box-shadow:0 0 15px #000;border:7px solid #1b9bb6;border-radius:5px}#data_box .data_wrp{padding:25px 15px 15px 15px}#data_box .data_wrp h1{text-transform:uppercase}#data_box .data_wrp hr{height:1px;border:none;color:#000000;background:#000000;margin:45px 0px 20px 0px}#data_box .data_wrp hr.hr{height:1px;border:none;color:#000000;background:#000000;margin:20px 0px 20px 0px}#data_box .pic-tango{margin-right:7px;margin-bottom:7px}#modal_close{cursor:pointer;margin-top:-80px;margin-right:-50px}.rightbar .control-label,.textareagroup .control-label{float:left;width:80px;padding-top:5px}.form-control{outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:3px;width:250px}.form-control:focus{border:#1b9bb6 1px solid;box-shadow:0 0 10px #1b9bb6;-webkit-box-shadow:0 0 10px #1b9bb6;-moz-box-shadow:0 0 10px #1b9bb6}.help-block{color:red;font-size:12px;margin-bottom:5px}.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;clear:both}.basket_item img{margin-right:20px}.basket_item .count{margin:20px 0px}.basket_item .fr{margin-top:13px}.basket_item .info{overflow:hidden}.basket_item > a{display:block;float:left}a.del:visited,a.del:link{background:url('../img/del.png') left center no-repeat;padding:2px 25px;font-size:12px;font-weight:normal;color:#787878;text-decoration:underline}a.del:hover{color:#a52828;text-decoration:underline}.total{text-align:right;color:#87476a;font-size:20px;margin:10px 0px}.submit4m{font-family:Roboto;border:none;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;font-size:10px;cursor:pointer;width:102px;height:29px;border-bottom:3px solid #799920;line-height:29px}.submit4m:active,.submit4m:focus{outline:none}.btn-primary{border-bottom:3px solid #799920;border-top:0;border-right:0;border-left:0;margin-top:5px;padding:0 15px;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:12px;font-weight:bold;cursor:pointer;height:29px;line-height:29px}.btn-primary:active,.btn-primary:focus{outline:none}a.logout:visited,a.logout:link{border:none;padding:3px 5px;background:#f75d50;border-radius:5px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:11px;font-weight:normal;cursor:pointer}a.logout:hover{background:#95ba2f}.boy_box{border-bottom:1px solid #b7b7b7;padding:0px 0px 15px 0px}.boy_box div{padding-top:10px}.content_product .info{padding:0px 0px 20px 0px}a.btn-success{display:inline-block;border:2px solid #d8d6d6;color:#95ba2f;border-radius:5px;padding:5px;margin-bottom:10px;text-decoration:none;font-size:14px}a.btn-success:hover{border:#95ba2f 2px solid;color:#f75d50}.txtb1{font-size:14px;font-weight:bold}.txtf{font-size:14px;font-weight:bold;color:#87476a}.txtfb{font-size:20px;font-weight:bold;color:#87476a}.count{margin:20px 0px}.count input[type="number"]{outline:0;width:50px;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:7px}a.link2:visited,a.link2:link{font-size:14px;font-weight:bold;color:#95ba2f;text-decoration:none}a.link2:hover{color:#f75d50;text-decoration:underline}.well{margin:50px auto;width:400px;background:#f5f5f5;border:1px solid #e8e8e8;padding:20px;border-radius:5px}.control-label{float:left;width:100px;padding-top:5px}#user-verifycode-image{display:block}.form-inline{display:inline}.form-inline .form-group{float:left;margin-right:10px}.form-inline .form-group select{width:100px}.form-group{margin-bottom:10px}.table-bordered{width:100%;border:1px solid silver}.table-bordered th{background:#B3D1FD;padding:5px}.table-bordered tr td{border:1px solid silver;padding:5px}.table-bordered .filters{display:none}.formCost label{float:left;width:30px}ul.brends_list{list-style:none;margin:0px;padding:0px}ul.brends_list li{float:left;text-align:center;margin:0px 15px 20px 15px}.compare{text-align:center}.compare a:visited,.compare a:link{font-size:12px;text-decoration:underline}.alert-success{margin:10px 0px;padding:10px;border:1px solid #3ed824;border-radius:5px;background:#c0feb5}.news_item{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid silver}.news_item img{margin-right:20px}.news_item a{font-size:16px}.pic{width:392px;height:365px}.pic a{width:392px;height:365px;display:table-cell;vertical-align:middle}.pic a img{max-width:392px;max-height:365px;vertical-align:middle}input#subscribe-email::-webkit-input-placeholder{color:#596065}input#subscribe-email::-moz-placeholder{color:#596065}input#subscribe-email:-ms-input-placeholder{color:#596065}input#subscribe-sale::-webkit-input-placeholder{color:#596065}input#subscribe-sale::-moz-placeholder{color:#596065}input#subscribe-sale:-ms-input-placeholder{color:#596065}#subscribe-email,#subscribe-sale{color:#596065}#subscribe-sale{width:100px;float:left;margin-right:20px;height:28px}.saletxt{width:150px;float:left;color:#ffffff;font-size:12px}#subscribe-email{width:370px}.txts{color:#9da9b1;font-size:18px;margin-bottom:20px}.content ul.pagination{list-style:none;text-align:center;margin:0 0 16px 0;padding:0 0 20px 0;border-bottom:1px solid #d2d2d2}.content ul.pagination li{display:inline}.content ul.pagination li a{padding:3px;color:#82a02f;font-size:15px;margin:0;text-decoration:none}.content ul.pagination li a:hover{text-decoration:underline}.content ul.pagination li.active a{color:#333333}.boxitem{height:283px}ul.social{margin-top:20px}.social{list-style:none;margin:10px;padding:0px;height:48px}.social li{display:inline-block;margin-right:7px;padding-bottom:10px}.social li a{width:36px;height:36px;display:block;margin:0;padding:0;text-indent:-9999px;background:#bcbcbc url(../img/social-ico-two.png) no-repeat 0 0;border-radius:48px;-moz-border-radius:48px;-webkit-border-radius:48px;-webkit-transition:all 0.5s ease-out;-moz-transition:all 0.5s ease-out;transition:all 0.5s ease-out}.social .fb{background-position:-44px 0;cursor:pointer}.social .vk{cursor:pointer}.social .vk:hover{background-color:#5B7FA6}.social .fb:hover{background-color:#354f89}.social .gp{background-position:-132px 0;cursor:pointer}.social .gp:hover{background-color:#c72f21}.social .tw{background-position:-144px 0;cursor:pointer}.social .tw:hover{background-color:#6398c9}.social .ok{background-position:-89px 0;cursor:pointer}.social .ok:hover{background-color:#f88f15}.social ul li a:hover{background-color:#065baa}.socialbox{margin:10px 0px}.hide{display:none}.footer .fl{font-size:12px}.fotter{background:#484f55;height:50px;color:#98a3ab}.fotter a{color:#98a3ab;line-height:50px;float:left;font-size:12px}.view_products2{list-style:none;overflow:auto;height:400px}.view_products2 img{float:left;margin-right:20px}.view_products2 li{margin:10px 0px}.pixbox{width:160px;margin:0 auto;height:200px;overflow:hidden;text-align:center}.form-order{background:#f5f5f5;padding:0 20px 20px 20px}#order-payment{float:right;width:280px}#order-delivery{float:right;width:280px}.delivery-data{margin-bottom:27px;position:relative;background:#95ba2f;display:none;border-radius:5px;float:left;box-sizing:border-box;padding:14px 20px;color:#fff;font-size:13px}.jcarousel-next-disabled,.jcarousel-prev-disabled{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.content2 br{display:none}.pixbox a{width:160px;height:200px;display:table-cell;vertical-align:middle}.pixbox img{max-width:160px;max-height:200px;vertical-align:middle}.pagination li.prev.disabled span{display:none}.pagination li.next.disabled span{display:none}.fr{float:right}.nobottom{border-bottom:none !important}.dotted a{border-bottom:1px dotted #808080}.mycabinet{padding-left:20px;margin-top:20px}.mycabinet .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.mycabinet ul{margin:0px;padding:0px;list-style:none}.mycabinet ul li{padding-top:10px;padding-bottom:10px}.mycabinet a{color:#799920;text-decoration:none}.lay_title .uppercase{text-transform:uppercase}.lay_title .center{text-align:center}.lay_title{padding-top:15px;font-size:24px}.user_data{width:390px;border-right:1px solid #d2d2d2;float:left}.user_data .col{padding-bottom:35px}.user_data .col.last{padding-bottom:0px}.user_data .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data .data{float:left;font-size:13px}.edit_menu{float:left;padding-left:60px;font-size:13px}.edit_menu div{padding-bottom:20px}.edit_menu a{color:#799920;text-decoration:none}.edit_menu .dotted{border-bottom:1px dotted #799920}.user_edit_area{padding-top:30px}.user_data_editing{float:left}.inputs .col{padding-bottom:12px !important}.user_data_editing .col{padding-bottom:35px;width:432px}.user_data_editing .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data_editing .data{float:left;font-size:13px;width:262px}.user_data_editing input[type="text"]{padding:0;margin:0;border:1px solid #d2d2d2;padding-top:7px;padding-bottom:7px;padding-left:10px;padding-right:10px;border-radius:4px;font-size:12px;margin-top:-10px;width:240px}.user_data_editing .add{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.add_more{padding-bottom:24px;padding-left:170px}.delete{float:right}.delete_button{background:url('../img/ico_close.png') right no-repeat;width:16px;height:16px;float:right}.content_area{width:450px}#cancel{text-decoration:none;color:#799920;font-size:13px;border-bottom:1px dotted #799920;float:left;margin-left:40px}.buttons{display:inline-flex;align-items:center}.favorites{background-color:#f5f5f5;padding:5px;font-size:14px}.favorites .fav_point{background-color:#ffffff;border:1px solid #d2d2d2;border-radius:3px;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px;margin-top:5px}.favorites .fav_point .left{float:left;padding-right:0;width:178px}.favorites .fav_point .right{float:right;padding-right:0;padding-left:0}.favorites .link{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.redtext{color:#f75d50}.greentext{color:#95ba2f}.hold .orders_view{display:none !important}.orders_view{width:680px;margin-top:13px;padding-top:13px;padding-bottom:5px;border-top:1px solid #d2d2d2;display:block}.orders_view .order{float:left;width:225px;text-align:center}.orders_view .order .order_price{color:#f75d50;font-weight:bold;font-size:15px}.orders_view .order .order_price span{font-size:24px}.orders_view .order img{padding-bottom:22px}.orders_view .order .note{font-size:13px}.orders_view .order .note span{color:#f75d50}.basket_hovered{position:absolute;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;background-color:white;right:-1px;margin-top:10px;width:640px;display:none;z-index:1111}.open .basket_hovered{display:block}.open,.open .basket_hovered{-moz-box-shadow:0px 0px 5px rgba(149,149,149,0.75);-webkit-box-shadow:0px 0px 5px rgba(149,149,149,0.75);box-shadow:0px 0px 5px rgba(149,149,149,0.75)}.basket_hovered1:before{position:absolute;left:0;content:' ';width:100%;background-color:white;height:10px;top:45px;z-index:1112}.basket_item input{border:1px solid #d2d2d2;border-radius:4px;padding:9px;width:26px;font-size:18px;font-weight:bold;text-align:center;background-color:white;color:black;margin:7px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.minus{background:url('../img/minus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.plus{background:url('../img/plus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.basket_sum{padding-top:15px}.basket_sum .sum_text{font-size:15px;text-transform:none;padding-top:12px;float:right !important;padding-top:1px;margin-bottom:11px}.basket_sum .sum_text span{font-size:18px;color:#f75d50;font-weight:bold}.basket_sum a{color:white !important;font-size:15px !important;float:right}.black{z-index:9999;width:100%;height:100%;position:absolute;display:block;padding-top:6%}.black:before{content:'';background-color:rgba(0,0,0,0.5);width:100%;height:100%;position:fixed;top:0}.black.hidden{display:none}.black .item_added_win{background-color:#ffffff;width:640px;margin:auto;position:relative}.black_close{position:absolute;top:30px;right:30px;background:url('../img/ico_close2.png') no-repeat;width:22px;height:22px;display:inline-block;cursor:pointer}.block_content{padding-left:20px;padding-right:20px}.item_added_win h2{text-transform:uppercase;text-align:center;padding:30px}.block_content .item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #d2d2d2}.uppercase{text-transform:uppercase}.w230{width:230px}.w260{width:260px}.w430{width:430px}.borderbottom{border-bottom:1px solid #d2d2d2}.left_block .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.color_variants .variant{text-align:center;border:1px solid #d2d2d2;float:left;margin-right:5px;margin-bottom:5px}.variant:hover{cursor:pointer}.color_variants{margin-top:14px;margin-bottom:-5px}.color_variants .variant.active{width:44px;height:44px;border:2px solid #95ba2f}.color_variants .variant.active a{width:44px;height:44px}.tobasket{margin-top:20px;margin-bottom:20px}.tobasket:hover{color:white}.variant{width:46px;height:46px}.variant.active{width:44px;height:44px}.layout{margin-top:15px}.left_block{float:left}.right_block{float:right}.center_block{float:left;margin-left:23px}.left_block .links{margin-top:25px}.left_block .links li{list-style:none;padding-left:25px;display:inline-block;cursor:pointer;height:20px}.left_block .links ul{margin:0;padding:0}.left_block .links a{font-size:13.5px;text-decoration:none;color:#8ba73e}.links .add_bookmarks{background:url('../img/ico_add_bookmark.png') no-repeat center left}.links .what_price{background:url('../img/ico_price.png') no-repeat center left}.links .add_compare{background:url('../img/ico_scales.png') no-repeat center left}.spoiler_one{padding-top:15px;padding-bottom:15px;border-bottom:1px solid #d2d2d2}.spoiler_one .spoiler_content{margin-top:15px;font-size:13px}.spoiler_one .spoiler_content.hidden{display:none}.title_spoiler:hover{cursor:pointer}.title_spoiler{background:url('../img/ico_open.png') no-repeat center left;padding-left:17px;font-size:13px;text-transform:uppercase;color:#333333;font-weight:bold;text-decoration:none}.title_spoiler.closed{background:url('../img/ico_close3.png') no-repeat center left}.features{list-style:none;padding:0;margin:0;font-size:13px}.features a{font-size:13px;text-decoration:none;border-bottom:1px dotted #8ba73e;color:#8ba73e}.features li{padding-top:5px;padding-bottom:4px}.note_prod{width:225px;height:23px;overflow:hidden;border-radius:5px;display:table;text-transform:uppercase;font-size:11px;font-weight:bold}.note_prod .one{z-index:999}.note_prod .two{z-index:998}.note_prod .blue{float:left;padding-top:5px;padding-bottom:5px;background-color:#42b9f6;padding-left:10px;padding-right:5px;position:relative}.note_prod .blue:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #42b9f6;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .red{float:left;padding-top:5px;padding-bottom:5px;background-color:#f75d50;padding-left:10px;padding-right:5px;position:relative;color:#ffffff}.note_prod .red:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #f75d50;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .yellow{float:left;padding-top:5px;padding-bottom:5px;background-color:#fbc665;padding-left:10px;padding-right:5px;position:relative}.note_prod .yellow:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #fbc665;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.products_block .product{float:left;width:190px;vertical-align:bottom}.product .image{height:225px;position:relative}.product .image img{position:absolute;bottom:0;left:15px}.price{font-size:18px;color:#f75d50;font-weight:bold;text-align:center}.product{padding-bottom:30px;position:relative}.product p{font-size:15px;text-align:center;margin-top:15px}.left52{margin-left:52px}.product a{color:#ffffff}.mrg1{margin-top:25px;margin-bottom:15px}.products_martopbot{margin-top:60px;margin-bottom:100px}.cont_shop_but{display:table-cell;vertical-align:middle;padding:35px}.cont_shop{text-decoration:none;font-size:12px;border-bottom:1px dotted #799920;color:#799920}.icons{width:45px;height:50%;position:absolute;z-index:9;right:0;padding-top:25px;padding-right:15px}.icons a{width:44px;height:44px;float:left;border:1px solid #d2d2d2;margin-bottom:5px;background-color:white}a:hover{cursor:pointer}.basket_item .form-group{display:inline}.basket.open:after{content:'';position:absolute;top:43px;width:100%;height:10px;background-color:white;left:0;z-index:9990}.basket_hovered .basket_sum{float:left}a.active{font-weight:bold;text-decoration:underline}.HOME_RIGHT{display:inline-block;vertical-align:top;margin-left:10px;position:absolute}#HOME_UNDER_SLIDER > div{display:inline-block;margin-right:3px;margin-top:3px}.sort_block{display:inline-block}.sort_block ul{display:inline-block;margin:0;padding:0}.sort_block ul li{display:inline-block;margin:0 0.5em;list-style:none}.sort_block ul li a.asc:after,.sort_block ul li a.desc:after{display:block;width:5px;height:3px;position:absolute;top:50%;margin-top:-1px;right:-10px;content:'';background:url("../img/arrow_sort_asc_desc.png") no-repeat}.sort_block ul li a.asc:after{background-position:0 0}.sort_block ul li a.desc:after{background-position:0 -3px}.home_banner_up{margin-top:20px}.home_banner_up .HOME_RIGHT{display:block;float:right;position:static;margin-left:0}#HOME_SLIDER .jssorb03 div,#HOME_SLIDER .jssorb03 div:hover,#HOME_SLIDER .jssorb03 .av{width:6px;height:6px;border-radius:50%;line-height:6px;background:#fff;border:2px solid #fff;box-shadow:0px 0px 5px 0px rgba(54, 54, 54, 0.75)}#HOME_SLIDER .jssorb03 div.av:hover,#HOME_SLIDER .jssorb03 div.av:active,#HOME_SLIDER .jssorb03 .av{cursor:default;background:#95BA2F}.special-products{padding-top:30px}.special-products .link_buy{margin-bottom:0}.special-products .item{margin-bottom:0 !important;text-align:center}.why_me_{padding-top:30px;overflow:hidden;margin-bottom:60px}.why_me_ .why_list{width:1038px;margin-left:-58px}.seo_text p{margin:12px 0 0 0;font-size:13px !important;color:#333 !important;font-family:Roboto !important}.seo_text p:first-child{margin-top:0}.product-special{position:absolute}.jcarousel-skin-tango .jcarousel-item{width:38px;height:38px;border:1px solid #d2d2d2;text-align:center;background:#fff}.jcarousel-skin-tango .jcarousel-item a{display:table-cell;width:38px;height:38px;vertical-align:middle}.mycarousel img{max-width:38px;max-height:38px;border:0;vertical-align:middle}.jcarousel-skin-tango .jcarousel-clip-vertical,.jcarousel-skin-tango .jcarousel-container-vertical{height:175px}.jcarousel-skin-tango .jcarousel-container-vertical{padding:0}.jcarousel-skin-tango .jcarousel-prev-vertical{top:-13px}.jcarousel-skin-tango .jcarousel-next-vertical{bottom:-13px}.jcarousel-skin-tango .jcarousel-prev-vertical,.jcarousel-skin-tango .jcarousel-next-vertical{left:0;width:42px;background-position:14px 0}.jcarousel-skin-tango .jcarousel-prev-vertical:hover,.jcarousel-skin-tango .jcarousel-next-vertical:hover{background-position:14px 0;left:0}ul.product-special{position:absolute;top:0;left:16px}ul.product-special li{width:100%;float:left}ul.product-special li div{color:#333;font-size:10px;text-transform:uppercase;font-weight:700;height:22px;line-height:24px;padding:0 9px;position:relative;border-top-left-radius:4px;border-bottom-left-radius:4px;margin-top:8px;float:left}ul.product-special li:first-child{margin-top:0}ul.product-special li.top div{background:#fbc665}ul.product-special li.top div:after{content:'';position:absolute;right:-19px;top:3px;border:11px solid transparent;border-top:5px solid #fbc665;transform:rotate(-90deg)}ul.product-special li.new div{background:#42b9f6}ul.product-special li.new div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #42b9f6;transform:rotate(-90deg)}ul.product-special li.promo div{background:#f75d50}ul.product-special li.promo div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #f75d50;transform:rotate(-90deg)}.cost-block{margin-top:1px}.products.pn a.link_buy{margin-bottom:0}.products.pn{padding-bottom:0}.products.pn>ul{width:100%;float:left;margin-bottom:-3px}._form_checkbox_reset,.sort_block ul li a,.sort_block{font-size:12px}.filter_accept_bloc{margin-top:13px;margin-bottom:0}._form_checkbox_reset{color:#6a6a6a;display:block;width:128px;height:28px;border:1px solid #d2d2d2;line-height:28px;text-align:center;border-radius:4px;text-decoration:none;margin:0 auto}._form_checkbox_reset:hover{border:1px solid #95ba2f;color:#6a6a6a}._form_checkbox_reset:active{border:1px solid #95ba2f;background:#95ba2f;color:#fff}.sort_block ul li a{color:#8fa951;position:relative}.sort_block ul li a:hover{color:#333}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03r{width:36px;height:340px;background:url('../img/new_arrows_.png') no-repeat}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03l:hover{background-position:0 50%;left:0;top:0}#HOME_SLIDER .jssora03r,#HOME_SLIDER .jssora03r:hover{background-position:-36px 50%;right:0;top:0}.loyout ._prd_spec-wr{margin-top:10px}.loyout .special-products:first-child{border-top:0;padding-top:0}.irs-slider{width:13px;height:13px;top:25px;border-radius:100%;box-shadow:none;border:1px solid #d2d2d2;background:#ffffff;background:-moz-linear-gradient(top, #ffffff 0%, #ebebeb 100%);background:-webkit-linear-gradient(top, #ffffff 0%,#ebebeb 100%);background:linear-gradient(to bottom, #ffffff 0%,#ebebeb 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ebebeb',GradientType=0 )}.irs-slider.state_hover,.irs-slider:hover{background:#ffffff}.irs-slider:after{display:none}.irs-slider:before{content:"";position:absolute;width:5px;height:5px;z-index:2;border:1px solid #d2d2d2;border-radius:100%;background:#799920;top:3px;left:3px}.irs-bar{height:3px;top:30px}.irs-line{height:9px;background:#ebebeb;border:1px solid #d2d2d2;top:27px}.irs-line:before{width:166px;height:5px;position:absolute;content:'';top:2px;left:2px;background:#d2d2d2;border-radius:5px}.irs-min,.irs-max{display:none}.irs{height:49px}.price_filter.first_price_li{margin-top:8px}.product_read_ .w{width:110px;overflow:hidden;margin:0;padding-top:0;display:table-cell;vertical-align:middle;height:32px;float:none}.product_read_ .w strike,.product_read_ .w .cost{width:100%;float:left}.product_read_price .link_buy{width:118px;position:absolute;top:50%;right:0;margin:-16px 0 0 0}.product_read_price{position:relative;min-height:32px;margin-top:10px}.special-products.products h3{margin-bottom:10px}.special-products.products li.item{margin-top:30px}.productLeftBar .cost_box{border-top:0;padding:10px 0 15px 0}.productLeftBar .product_mod{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:15px}.field-orders-delivery .control-label,.field-orders-payment .control-label,.field-orders-body .control-label,.textareagroup .control-label{width:100%;float:left}.basket_title_{text-align:center}.cont_shopping-wr{width:100%;float:left;margin-top:10px}.cont_shopping-wr .cont_shopping{float:right}.cont_shopping{display:block !important;border-top:0 !important;border-left:0 !important;border-right:0 !important;border-bottom:1px dashed #799920 !important;color:#799920 !important;margin:0 !important;padding:0 !important;font-size:12px !important;float:left;border-radius:0 !important}.info.product-thumb-video{width:100%;height:100%}.info.product-thumb-video iframe,.info.product-thumb-video embed{width:100% !important;height:auto !important}.input-blocks-wrapper,.input-blocks{width:100%;float:left}.form-order .input-blocks-wrapper{margin-top:6px}.input-blocks label{font-size:13px;color:#333}.basket_input_2 label{height:30px;line-height:30px;float:left;width:70px !important;padding-top:0 !important}.custom-input-2{width:100%;height:30px;box-sizing:border-box;outline:none;line-height:30px;padding-left:8px;margin-top:5px;background:#fff;border-radius:4px}.custom-input-2,.custom-area-2,.textareagroup textarea{border:1px solid #d2d2d2;box-sizing:border-box;font-size:13px;color:#636363}.custom-area-2,.textareagroup textarea{min-height:128px;max-height:128px;resize:none;width:100%;max-width:100%;outline:none;padding-left:8px;padding-top:8px;margin-top:8px}.basket_input_2 .custom-input-2{width:270px;float:right;margin-top:0}.custom-input-2:focus,.custom-area-3:focus,.textareagroup textarea:focus{box-shadow:1px 2px 2px 0px rgba(215, 215, 215, 0.75) inset;transition:0.1s}.textareagroup textarea:focus{border:1px solid #d2d2d2}.title_groups,.radio_grp label.control-label,.textareagroup .control-label{font-size:12px;font-weight:bold;text-transform:uppercase;margin-bottom:12px}.input-blocks-group{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:20px;margin-top:18px}.custom-form-buttons{width:100%;float:left}input.custom-radio + label,input.custom-check + label{font-size:13px;cursor:pointer;margin-left:6px}input.custom-radio,input.custom-check{display:none}input.custom-radio + label span{width:16px;height:16px;background:url('../img/radio_new.png') no-repeat;float:left;transition:.2s;margin-top:1px}input.custom-radio:checked + label span,input.custom-radio:checked + label:hover span{background:url('../img/radio_new-active.png') no-repeat}input.custom-radio + label:hover{text-decoration:underline}.custom-form-buttons{margin-top:7px}.custom-form-buttons:first-child{margin-top:0}.delivery-data .field-order-delivery-childs .control-label{display:none}.checkout_basket{width:100%;float:left}.checkout_basket button{margin:0 auto}.input-blocks-wrapper .help-block{padding-left:71px;padding-top:4px;width:100%;float:left;box-sizing:border-box;margin-bottom:0}.cont_shop_but-wr{height:33px;margin-top:35px;padding-bottom:29px}.cont_shop_but-wr .cont_shop{margin-top:8px;float:left}.cont_shop_but-wr .submit4.bottom3{float:right}._qqq_ .params{font-size:12px}.activeShow{border-bottom:0 !important}.delivery-data:after{width:100%;border-bottom:1px solid #d2d2d2;position:absolute;content:'';bottom:-27px;left:0}.img_ajax_basket img{margin-right:0 !important;max-width:90px;max-height:90px;vertical-align:middle}.jcarousel-skin-tango>li{display:none}#login-form{margin:50px auto 0 auto}#bg{top:0 !important;z-index:1 !important}.top,.wrap,.bottom,.fotter{position:relative;z-index:2}.owl-pagination{display:none}.owl-controls .owl-buttons div{width:34px !important;height:50px !important;background:#596065 !important;top:50% !important;margin:-25px 0 0 0 !important;opacity:1 !important;border-radius:0 !important;padding:0 !important;position:absolute}.owl-controls .owl-buttons div:hover{background:#acafb2 !important;transition:0.2s !important}.owl-controls .owl-buttons .owl-prev{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important;left:-20px}.owl-controls .owl-buttons .owl-next{border-top-left-radius:4px !important;border-bottom-left-radius:4px !important;right:-20px}.owl-controls .owl-buttons div:before{position:absolute;content:'';width:8px;height:22px;background:url("../img/arrows_blocks.png") no-repeat;top:50%;margin-top:-11px;left:50%;margin-left:-4px}.owl-controls .owl-buttons .owl-prev:before{background-position:0 0}.owl-controls .owl-buttons .owl-next:before{background-position:-8px 0}.basket_input_2.required .control-label{position:relative}.basket_input_2.required .control-label:before{position:absolute;top:0;content:'*';color:#D60000;left:-11px;padding-top:2px}.float-left{float:left}.blog-show-img{padding-right:20px}.text_seo.hidden_seo{height:178px;overflow:hidden;position:relative}.text_seo.hidden_seo div{height:162px;overflow:hidden;position:relative}.text_seo.hidden_seo a{position:absolute;bottom:0;right:0;font-size:16px}.text_seo.hidden_seo div:before{content:'';display:block;position:absolute;bottom:0;right:0;left:0;height:120px;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%)}.special-products{border-bottom:1px solid #d2d2d2}.submit4m,a.link_buy,.checkout_basket button,.submit4{font-size:15px}.cost,.product_read_price #cost{font-size:20px}.cost span,.cost span.valute,.product_read_price .valute{font-size:15px}
3 \ No newline at end of file 3 \ No newline at end of file
frontend/web/css/style.dev.css
@@ -1612,4 +1612,5 @@ input.custom-radio + label:hover { @@ -1612,4 +1612,5 @@ input.custom-radio + label:hover {
1612 background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%); 1612 background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%);
1613 background: -ms-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%); 1613 background: -ms-linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%);
1614 background: linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%); 1614 background: linear-gradient(top, rgba(255, 255, 255, 0) 0%, #fff 100%);
1615 -}  
1616 \ No newline at end of file 1615 \ No newline at end of file
  1616 +}
  1617 +.special-products{border-bottom:1px solid #d2d2d2}.submit4m,a.link_buy,.checkout_basket button,.submit4{font-size:15px}.cost,.product_read_price #cost{font-size:20px}.cost span,.cost span.valute,.product_read_price .valute{font-size:15px}
1617 \ No newline at end of file 1618 \ No newline at end of file
frontend/widgets/Seo.php
@@ -23,6 +23,8 @@ class Seo extends Widget @@ -23,6 +23,8 @@ class Seo extends Widget
23 public $key; 23 public $key;
24 public $name; 24 public $name;
25 public $project_name; 25 public $project_name;
  26 + protected static $check_url;
  27 + protected static $check_url_bool;
26 28
27 29
28 const SEO_TEXT = 'seo_text'; 30 const SEO_TEXT = 'seo_text';
@@ -63,7 +65,7 @@ class Seo extends Widget @@ -63,7 +65,7 @@ class Seo extends Widget
63 65
64 } else { 66 } else {
65 67
66 - $widgetData = $this->findSeoByUrl(); 68 + $widgetData = static::findSeoByUrl($this->url);
67 69
68 $result = ''; 70 $result = '';
69 71
@@ -264,9 +266,13 @@ class Seo extends Widget @@ -264,9 +266,13 @@ class Seo extends Widget
264 return $str; 266 return $str;
265 } 267 }
266 268
267 - protected function findSeoByUrl() 269 + protected static function findSeoByUrl($url)
268 { 270 {
269 - return \common\models\Seo::findOne(['url' => $this->url]); 271 + if(empty(self::$check_url_bool)){
  272 + self::$check_url = \common\models\Seo::findOne(['url' => $url]);
  273 + self::$check_url_bool = true;
  274 + }
  275 + return self::$check_url;
270 } 276 }
271 277
272 protected function findSeoByDynamic() 278 protected function findSeoByDynamic()
@@ -299,7 +305,7 @@ class Seo extends Widget @@ -299,7 +305,7 @@ class Seo extends Widget
299 { 305 {
300 $result = ''; 306 $result = '';
301 307
302 - $widgetData = $this->findSeoByUrl(); 308 + $widgetData = static::findSeoByUrl($this->url);
303 309
304 if ($widgetData instanceof \common\models\Seo) { 310 if ($widgetData instanceof \common\models\Seo) {
305 311