Commit 951935ebf84a9f34317833d8c80c5f557b621445
Merge remote-tracking branch 'origin/master'
Conflicts: .htaccess
Showing
26 changed files
with
881 additions
and
148 deletions
Show diff stats
.htaccess
@@ -70,7 +70,6 @@ AddDefaultCharset utf-8 | @@ -70,7 +70,6 @@ AddDefaultCharset utf-8 | ||
70 | 70 | ||
71 | RewriteRule sitemap.xml$ frontend/web/sitemap.xml [L] | 71 | RewriteRule sitemap.xml$ frontend/web/sitemap.xml [L] |
72 | 72 | ||
73 | - | ||
74 | RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|txt|js|images|fonts|img|files)/ | 73 | RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|txt|js|images|fonts|img|files)/ |
75 | 74 | ||
76 | RewriteCond %{REQUEST_URI} !index.php | 75 | RewriteCond %{REQUEST_URI} !index.php |
backend/controllers/SliderImageController.php
@@ -89,6 +89,13 @@ class SliderImageController extends Controller | @@ -89,6 +89,13 @@ class SliderImageController extends Controller | ||
89 | $model->image = $image->name; | 89 | $model->image = $image->name; |
90 | } | 90 | } |
91 | if ($model->save() && $image) { | 91 | if ($model->save() && $image) { |
92 | + | ||
93 | + $imgDir = Yii::getAlias('@storage/slider/'); | ||
94 | + | ||
95 | + if(!is_dir($imgDir)) { | ||
96 | + mkdir($imgDir, 0755, true); | ||
97 | + } | ||
98 | + | ||
92 | $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); | 99 | $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); |
93 | } | 100 | } |
94 | return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); | 101 | return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); |
@@ -116,11 +123,24 @@ class SliderImageController extends Controller | @@ -116,11 +123,24 @@ class SliderImageController extends Controller | ||
116 | $model = $this->findModel($slider_id, $id); | 123 | $model = $this->findModel($slider_id, $id); |
117 | 124 | ||
118 | if ($model->load(Yii::$app->request->post())) { | 125 | if ($model->load(Yii::$app->request->post())) { |
126 | + | ||
127 | + | ||
128 | + | ||
119 | if ( ($image = UploadedFile::getInstance($model, 'image')) ) { | 129 | if ( ($image = UploadedFile::getInstance($model, 'image')) ) { |
120 | $model->image = $image->name; | 130 | $model->image = $image->name; |
121 | } | 131 | } |
122 | 132 | ||
133 | + if(!$model->image){ | ||
134 | + $model->image = $model->getOldAttribute('image'); | ||
135 | + } | ||
136 | + | ||
123 | if ($model->save() && $image) { | 137 | if ($model->save() && $image) { |
138 | + $imgDir = Yii::getAlias('@storage/slider/'); | ||
139 | + | ||
140 | + if(!is_dir($imgDir)) { | ||
141 | + mkdir($imgDir, 0755, true); | ||
142 | + } | ||
143 | + | ||
124 | $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); | 144 | $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); |
125 | } | 145 | } |
126 | return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); | 146 | return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); |
backend/views/layouts/main-sidebar.php
@@ -34,6 +34,11 @@ use yii\widgets\Menu; | @@ -34,6 +34,11 @@ use yii\widgets\Menu; | ||
34 | 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'] | 34 | 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'] |
35 | ], | 35 | ], |
36 | [ | 36 | [ |
37 | + 'label' => 'Модификации', | ||
38 | + 'url' => ['/product/variant'], | ||
39 | + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide'] | ||
40 | + ], | ||
41 | + [ | ||
37 | 'label' => 'Категории', | 42 | 'label' => 'Категории', |
38 | 'url' => ['/category'], | 43 | 'url' => ['/category'], |
39 | 'options' => ['class'=>\Yii::$app->user->can('category') ? '' :'hide'], | 44 | 'options' => ['class'=>\Yii::$app->user->can('category') ? '' :'hide'], |
backend/views/slider-image/_form.php
@@ -17,6 +17,8 @@ use yii\widgets\ActiveForm; | @@ -17,6 +17,8 @@ use yii\widgets\ActiveForm; | ||
17 | <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> | 17 | <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> |
18 | 18 | ||
19 | <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ | 19 | <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ |
20 | + 'model' => $model, | ||
21 | + 'attribute' => 'image', | ||
20 | 'options' => [ | 22 | 'options' => [ |
21 | 'accept' => 'image/*', | 23 | 'accept' => 'image/*', |
22 | 'multiple' => true | 24 | 'multiple' => true |
@@ -29,6 +31,8 @@ use yii\widgets\ActiveForm; | @@ -29,6 +31,8 @@ use yii\widgets\ActiveForm; | ||
29 | 'showUpload' => false, | 31 | 'showUpload' => false, |
30 | ], | 32 | ], |
31 | ]); ?> | 33 | ]); ?> |
34 | + | ||
35 | + | ||
32 | <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?> | 36 | <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?> |
33 | 37 | ||
34 | <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> | 38 | <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> |
common/config/main.php
@@ -207,6 +207,27 @@ return [ | @@ -207,6 +207,27 @@ return [ | ||
207 | 'model' => 'common\modules\product\models\ProductOption', | 207 | 'model' => 'common\modules\product\models\ProductOption', |
208 | ] | 208 | ] |
209 | ], | 209 | ], |
210 | + 'product_variant_option' => [ | ||
211 | + 'name' => Yii::t('product', 'Properties'), | ||
212 | + 'field' => 'options', | ||
213 | + 'entity1' => [ | ||
214 | + 'model' => '\common\modules\product\models\ProductVariant', | ||
215 | + 'label' => 'Variant', | ||
216 | + 'listField' => 'fullname', | ||
217 | + 'key' => 'product_variant_id', | ||
218 | + 'linked_key' => 'product_variant_id', | ||
219 | + ], | ||
220 | + 'entity2' => [ | ||
221 | + 'model' => '\common\modules\rubrication\models\TaxOption', | ||
222 | + 'label' => 'Option', | ||
223 | + 'listField' => 'ValueRenderFlash', | ||
224 | + 'key' => 'tax_option_id', | ||
225 | + 'linked_key' => 'option_id', | ||
226 | + ], | ||
227 | + 'via' => [ | ||
228 | + 'model' => 'common\modules\product\models\ProductVariantOption', | ||
229 | + ] | ||
230 | + ], | ||
210 | 'tax_group_to_category' => [ | 231 | 'tax_group_to_category' => [ |
211 | 'name' => Yii::t('product', 'Характеристики по категориям'), | 232 | 'name' => Yii::t('product', 'Характеристики по категориям'), |
212 | 'field' => 'group_to_category', | 233 | 'field' => 'group_to_category', |
common/modules/product/controllers/ManageController.php
@@ -117,16 +117,6 @@ class ManageController extends Controller | @@ -117,16 +117,6 @@ class ManageController extends Controller | ||
117 | $model = $this->findModel($id); | 117 | $model = $this->findModel($id); |
118 | if ($model->load(Yii::$app->request->post())) { | 118 | if ($model->load(Yii::$app->request->post())) { |
119 | $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); | 119 | $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); |
120 | - $model->variantImagesUpload = UploadedFile::getInstances($model, 'variants'); | ||
121 | - /*if (!empty($variantImagesUpload)) { | ||
122 | - var_dump($variantImagesUpload);exit; | ||
123 | - }*/ | ||
124 | - /*$model->variantImagesUpload = []; | ||
125 | - foreach ($_POST['Product']['variants'] as $i => $variant) { | ||
126 | - if (!empty($variant['product_variant_id'])) { | ||
127 | - $model->variantImagesUpload[$variant['product_variant_id']] = $variantImagesUpload[$i]; | ||
128 | - } | ||
129 | - }*/ | ||
130 | if ($model->save()) { | 120 | if ($model->save()) { |
131 | // foreach ($model->images as $image) { | 121 | // foreach ($model->images as $image) { |
132 | // $image->delete(); | 122 | // $image->delete(); |
@@ -140,19 +130,6 @@ class ManageController extends Controller | @@ -140,19 +130,6 @@ class ManageController extends Controller | ||
140 | } | 130 | } |
141 | } | 131 | } |
142 | 132 | ||
143 | - if ( ($images = $model->variantImagesUpload()) !== FALSE) { | ||
144 | - foreach ($images as $i => $image) { | ||
145 | - if (empty($model->_variants[$i])) { | ||
146 | - continue; | ||
147 | - } | ||
148 | - $imageModel = new ProductImage(); | ||
149 | - $imageModel->product_id = $model->product_id; | ||
150 | - $imageModel->product_variant_id = intval($model->_variants[$i]['product_variant_id']); | ||
151 | - $imageModel->image = $image; | ||
152 | - $imageModel->save(); | ||
153 | - } | ||
154 | - } | ||
155 | - | ||
156 | return $this->redirect(['view', 'id' => $model->product_id]); | 133 | return $this->redirect(['view', 'id' => $model->product_id]); |
157 | } | 134 | } |
158 | } else { | 135 | } else { |
common/modules/product/controllers/VariantController.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +namespace common\modules\product\controllers; | ||
4 | + | ||
5 | +use common\modules\product\models\Product; | ||
6 | +use common\modules\product\models\ProductVariant; | ||
7 | +use common\modules\product\models\ProductVariantSearch; | ||
8 | +use Yii; | ||
9 | +use yii\web\Controller; | ||
10 | +use yii\web\NotFoundHttpException; | ||
11 | +use yii\filters\VerbFilter; | ||
12 | +use yii\web\UploadedFile; | ||
13 | + | ||
14 | +/** | ||
15 | + * ManageController implements the CRUD actions for ProductVariant model. | ||
16 | + */ | ||
17 | +class VariantController extends Controller | ||
18 | +{ | ||
19 | + /** | ||
20 | + * @inheritdoc | ||
21 | + */ | ||
22 | + public function behaviors() | ||
23 | + { | ||
24 | + return [ | ||
25 | + 'verbs' => [ | ||
26 | + 'class' => VerbFilter::className(), | ||
27 | + 'actions' => [ | ||
28 | + 'delete' => ['POST'], | ||
29 | + ], | ||
30 | + ], | ||
31 | + ]; | ||
32 | + } | ||
33 | + | ||
34 | + /** | ||
35 | + * Lists all ProductVariant models. | ||
36 | + * @return mixed | ||
37 | + */ | ||
38 | + public function actionIndex() | ||
39 | + { | ||
40 | + $searchModel = new ProductVariantSearch(); | ||
41 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||
42 | + | ||
43 | + if ( ($product = Yii::$app->request->get('product_id')) !== null) { | ||
44 | + $product = Product::findOne($product); | ||
45 | + } | ||
46 | + | ||
47 | + return $this->render('index', [ | ||
48 | + 'searchModel' => $searchModel, | ||
49 | + 'dataProvider' => $dataProvider, | ||
50 | + 'product' => $product, | ||
51 | + ]); | ||
52 | + } | ||
53 | + | ||
54 | + /** | ||
55 | + * Displays a single ProductVariant model. | ||
56 | + * @param integer $id | ||
57 | + * @return mixed | ||
58 | + */ | ||
59 | + public function actionView($id) | ||
60 | + { | ||
61 | + return $this->render('view', [ | ||
62 | + 'model' => $this->findModel($id), | ||
63 | + ]); | ||
64 | + } | ||
65 | + | ||
66 | + /** | ||
67 | + * Creates a new ProductVariant model. | ||
68 | + * If creation is successful, the browser will be redirected to the 'view' page. | ||
69 | + * @return mixed | ||
70 | + */ | ||
71 | + public function actionCreate() | ||
72 | + { | ||
73 | + $model = new ProductVariant(); | ||
74 | + | ||
75 | + if ($model->load(Yii::$app->request->post())) { | ||
76 | + $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); | ||
77 | + | ||
78 | + if ($model->save() && $model->imagesUpload) { | ||
79 | + if ( ($images = $model->imagesUpload()) !== FALSE) { | ||
80 | + foreach ($images as $image) { | ||
81 | + $imageModel = new ProductImage(); | ||
82 | + $imageModel->product_id = $model->product_id; | ||
83 | + $imageModel->product_variant_id = $model->product_variant_id; | ||
84 | + $imageModel->image = $image; | ||
85 | + $imageModel->save(); | ||
86 | + } | ||
87 | + } | ||
88 | + | ||
89 | + return $this->redirect(['view', 'id' => $model->product_variant_id]); | ||
90 | + } | ||
91 | + } else { | ||
92 | + return $this->render('create', [ | ||
93 | + 'model' => $model, | ||
94 | + ]); | ||
95 | + } | ||
96 | + } | ||
97 | + | ||
98 | + /** | ||
99 | + * Updates an existing ProductVariant model. | ||
100 | + * If update is successful, the browser will be redirected to the 'view' page. | ||
101 | + * @param integer $id | ||
102 | + * @return mixed | ||
103 | + */ | ||
104 | + public function actionUpdate($id) | ||
105 | + { | ||
106 | + $model = $this->findModel($id); | ||
107 | + if ($model->load(Yii::$app->request->post())) { | ||
108 | + $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload'); | ||
109 | + if ($model->save()) { | ||
110 | + if ( ($images = $model->imagesUpload()) !== FALSE) { | ||
111 | + foreach ($images as $image) { | ||
112 | + $imageModel = new ProductImage(); | ||
113 | + $imageModel->product_id = $model->product_id; | ||
114 | + $imageModel->product_variant_id = $model->product_variant_id; | ||
115 | + $imageModel->image = $image; | ||
116 | + $imageModel->save(); | ||
117 | + } | ||
118 | + } | ||
119 | + | ||
120 | + return $this->redirect(['view', 'id' => $model->product_variant_id]); | ||
121 | + } | ||
122 | + } else { | ||
123 | + $groups = $model->category->getTaxGroups(); | ||
124 | + | ||
125 | + return $this->render('update', [ | ||
126 | + 'model' => $model, | ||
127 | + 'groups' => $groups, | ||
128 | + ]); | ||
129 | + } | ||
130 | + } | ||
131 | + | ||
132 | + /** | ||
133 | + * Deletes an existing ProductVariant model. | ||
134 | + * If deletion is successful, the browser will be redirected to the 'index' page. | ||
135 | + * @param integer $id | ||
136 | + * @return mixed | ||
137 | + */ | ||
138 | + public function actionDelete($id) | ||
139 | + { | ||
140 | + $this->findModel($id)->delete(); | ||
141 | + | ||
142 | + return $this->redirect(['index']); | ||
143 | + } | ||
144 | + | ||
145 | + public function actionDelimg($id) | ||
146 | + { | ||
147 | + $image = ProductImage::findOne($id); | ||
148 | + | ||
149 | + if ($image) { | ||
150 | + $image->delete(); | ||
151 | + } | ||
152 | + | ||
153 | + print '1'; | ||
154 | + exit; | ||
155 | + } | ||
156 | + | ||
157 | + /** | ||
158 | + * Finds the ProductVariant model based on its primary key value. | ||
159 | + * If the model is not found, a 404 HTTP exception will be thrown. | ||
160 | + * @param integer $id | ||
161 | + * @return ProductVariant the loaded model | ||
162 | + * @throws NotFoundHttpException if the model cannot be found | ||
163 | + */ | ||
164 | + protected function findModel($id) | ||
165 | + { | ||
166 | + if (($model = ProductVariant::findOne($id)) !== null) { | ||
167 | + return $model; | ||
168 | + } else { | ||
169 | + throw new NotFoundHttpException('The requested page does not exist.'); | ||
170 | + } | ||
171 | + } | ||
172 | +} |
common/modules/product/helpers/ProductHelper.php
@@ -140,4 +140,63 @@ class ProductHelper extends Object { | @@ -140,4 +140,63 @@ class ProductHelper extends Object { | ||
140 | } | 140 | } |
141 | return $products; | 141 | return $products; |
142 | } | 142 | } |
143 | + | ||
144 | + public static function _setQueryParams(&$query, $params, $setPriceLimits = true) { | ||
145 | + if (!empty($params['keywords'])) { | ||
146 | + if (!is_array($params['keywords'])) { | ||
147 | + $params['keywords'] = [$params['keywords']]; | ||
148 | + } | ||
149 | + foreach ($params['keywords'] as $keyword) { | ||
150 | + $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]); | ||
151 | + $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]); | ||
152 | + $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]); | ||
153 | + } | ||
154 | + } | ||
155 | + if (!empty($params['special'])) { | ||
156 | + foreach($params['special'] as $key => $value) { | ||
157 | + $query->orFilterWhere([Product::tableName() .'.'. $key => $value]); | ||
158 | + } | ||
159 | + } | ||
160 | + if (!empty($params['brands'])) { | ||
161 | + $query->andFilterWhere([Product::tableName() .'.brand_id' => $params['brands']]); | ||
162 | + } | ||
163 | + if (!empty($params['options'])) { | ||
164 | + foreach ($params['options'] as $group => $options) { | ||
165 | + foreach ($options as &$option) { | ||
166 | + $option = "'$option'"; | ||
167 | + } | ||
168 | + $query->andWhere( | ||
169 | + 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) . '))' | ||
170 | + ); | ||
171 | + } | ||
172 | + } | ||
173 | + | ||
174 | + if ($setPriceLimits && !empty($params['prices'])) { | ||
175 | + if ($params['prices']['min'] > 0) { | ||
176 | + $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]); | ||
177 | + } | ||
178 | + if ($params['prices']['max'] > 0) { | ||
179 | + $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); | ||
180 | + } | ||
181 | + } | ||
182 | + } | ||
183 | + | ||
184 | + public static function productCountQuery($category = null, $params, $excludeKeys = []) { | ||
185 | + $p = []; | ||
186 | + foreach ($params as $key => $param) { | ||
187 | + if (in_array($key, $excludeKeys)) { | ||
188 | + $p[$key] = $param; | ||
189 | + } | ||
190 | + } | ||
191 | + /** @var ActiveQuery $query */ | ||
192 | + if (!empty($category)) { | ||
193 | + $query = $category->getProducts(); | ||
194 | + } else { | ||
195 | + $query = Product::find(); | ||
196 | + } | ||
197 | + ProductHelper::_setQueryParams($query, $params); | ||
198 | + $query->select(['COUNT(product.product_id)']); | ||
199 | + | ||
200 | + return $query; | ||
201 | + } | ||
143 | } | 202 | } |
144 | \ No newline at end of file | 203 | \ No newline at end of file |
common/modules/product/models/BrandSearch.php
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | 2 | ||
3 | namespace common\modules\product\models; | 3 | namespace common\modules\product\models; |
4 | 4 | ||
5 | +use common\modules\product\helpers\ProductHelper; | ||
6 | +use common\modules\rubrication\models\TaxOption; | ||
5 | use Yii; | 7 | use Yii; |
6 | use yii\base\Model; | 8 | use yii\base\Model; |
7 | use yii\data\ActiveDataProvider; | 9 | use yii\data\ActiveDataProvider; |
@@ -88,15 +90,57 @@ class BrandSearch extends Brand | @@ -88,15 +90,57 @@ class BrandSearch extends Brand | ||
88 | return $dataProvider; | 90 | return $dataProvider; |
89 | } | 91 | } |
90 | 92 | ||
91 | - public function getBrands($category = null, $params = []) { | 93 | + public function getBrands($category = null, $params = [], $productQuery = null) { |
94 | +// $queryCount = ProductHelper::productCountQuery($category, $params, ['brands']); | ||
95 | + | ||
96 | + /*if (!empty($params['prices'])) { | ||
97 | + if ($params['prices']['min'] > 0) { | ||
98 | + $queryCount->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]); | ||
99 | + } | ||
100 | + if ($params['prices']['max'] > 0) { | ||
101 | + $queryCount->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); | ||
102 | + } | ||
103 | + }*/ | ||
104 | +// if (!empty($params['options'])) { | ||
105 | +// $queryCount->innerJoin(TaxOption::tableName(), TaxOption::tableName()) | ||
106 | +// } | ||
107 | + | ||
92 | $query = Brand::find() | 108 | $query = Brand::find() |
93 | ->select([ | 109 | ->select([ |
94 | - Brand::tableName() .'.*', | ||
95 | - 'COUNT('. ProductCategory::tableName() .'.product_id) AS _items_count' | 110 | + Brand::tableName() .'.*' |
96 | ]) | 111 | ]) |
97 | ->innerJoin(Product::tableName(), Product::tableName() .'.brand_id='. Brand::tableName() .'.brand_id') | 112 | ->innerJoin(Product::tableName(), Product::tableName() .'.brand_id='. Brand::tableName() .'.brand_id') |
98 | ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. Product::tableName() .'.product_id') | 113 | ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. Product::tableName() .'.product_id') |
99 | ->with(['brandName']); | 114 | ->with(['brandName']); |
115 | + | ||
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 | + } | ||
136 | + $query->addSelect(['_items_count' => $queryCount]); | ||
137 | + | ||
138 | +// if ($productQuery) { | ||
139 | +// $productQuery->select(['COUNT(product.product_id)']); | ||
140 | +// $query->addSelect(['_items_count' => $productQuery]); | ||
141 | +// } | ||
142 | + | ||
143 | + | ||
100 | $query->innerJoin('product_variant', 'product_variant.product_id = '. Product::tableName() .'.product_id'); | 144 | $query->innerJoin('product_variant', 'product_variant.product_id = '. Product::tableName() .'.product_id'); |
101 | $query->where(['!=', 'product_variant.stock', 0]); | 145 | $query->where(['!=', 'product_variant.stock', 0]); |
102 | $query->groupBy(Product::tableName() .'.product_id'); | 146 | $query->groupBy(Product::tableName() .'.product_id'); |
@@ -106,20 +150,6 @@ class BrandSearch extends Brand | @@ -106,20 +150,6 @@ class BrandSearch extends Brand | ||
106 | ]); | 150 | ]); |
107 | } | 151 | } |
108 | $query->groupBy(Brand::tableName() .'.brand_id'); | 152 | $query->groupBy(Brand::tableName() .'.brand_id'); |
109 | - if (isset($params['options'])) { | ||
110 | - unset($params['options']); | ||
111 | - } | ||
112 | - if (!empty($params['prices'])) { | ||
113 | - if ($params['prices']['min'] > 0 || $params['prices']['max'] > 0) { | ||
114 | - $query->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id='. Product::tableName() .'.product_id'); | ||
115 | - } | ||
116 | - if ($params['prices']['min'] > 0) { | ||
117 | - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]); | ||
118 | - } | ||
119 | - if ($params['prices']['max'] > 0) { | ||
120 | - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); | ||
121 | - } | ||
122 | - } | ||
123 | 153 | ||
124 | return $query; | 154 | return $query; |
125 | } | 155 | } |
common/modules/product/models/Product.php
@@ -38,7 +38,7 @@ class Product extends \yii\db\ActiveRecord | @@ -38,7 +38,7 @@ class Product extends \yii\db\ActiveRecord | ||
38 | 38 | ||
39 | /** @var array $_images */ | 39 | /** @var array $_images */ |
40 | public $imagesUpload = []; | 40 | public $imagesUpload = []; |
41 | - public $variantImagesUpload = []; | 41 | + |
42 | /** | 42 | /** |
43 | * @inheritdoc | 43 | * @inheritdoc |
44 | */ | 44 | */ |
@@ -318,27 +318,6 @@ class Product extends \yii\db\ActiveRecord | @@ -318,27 +318,6 @@ class Product extends \yii\db\ActiveRecord | ||
318 | ProductVariant::deleteAll(['product_id' => $this->product_id]); | 318 | ProductVariant::deleteAll(['product_id' => $this->product_id]); |
319 | } | 319 | } |
320 | 320 | ||
321 | - public function variantImagesUpload() | ||
322 | - { | ||
323 | - if ($this->validate()) { | ||
324 | - $images = []; | ||
325 | - foreach ($this->variantImagesUpload as $product_variant_id => $image) { | ||
326 | - $imageName = $image->baseName .'.'. $image->extension; | ||
327 | - $i = 0; | ||
328 | - while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) { | ||
329 | - $i++; | ||
330 | - $imageName = $image->baseName .'_'. $i .'.'. $image->extension; | ||
331 | - } | ||
332 | - | ||
333 | - $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName)); | ||
334 | - $images[$product_variant_id] = $imageName; | ||
335 | - } | ||
336 | - return $images; | ||
337 | - } else { | ||
338 | - return false; | ||
339 | - } | ||
340 | - } | ||
341 | - | ||
342 | public function imagesUpload() | 321 | public function imagesUpload() |
343 | { | 322 | { |
344 | if ($this->validate()) { | 323 | if ($this->validate()) { |
common/modules/product/models/ProductVariant.php
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | 2 | ||
3 | namespace common\modules\product\models; | 3 | namespace common\modules\product\models; |
4 | 4 | ||
5 | +use common\modules\relation\relationBehavior; | ||
6 | +use common\modules\rubrication\models\TaxOption; | ||
5 | use Yii; | 7 | use Yii; |
6 | use yii\helpers\ArrayHelper; | 8 | use yii\helpers\ArrayHelper; |
7 | 9 | ||
@@ -37,7 +39,23 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -37,7 +39,23 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
37 | public $stocks; | 39 | public $stocks; |
38 | 40 | ||
39 | /** @var array $_images */ | 41 | /** @var array $_images */ |
40 | -// public $imagesUpload = []; | 42 | + public $imagesUpload = []; |
43 | + | ||
44 | + /** | ||
45 | + * @inheritdoc | ||
46 | + */ | ||
47 | + public function behaviors() | ||
48 | + { | ||
49 | + return [ | ||
50 | + [ | ||
51 | + 'class' => relationBehavior::className(), | ||
52 | + 'relations' => [ | ||
53 | + 'product_variant_option' => 'entity1' // Product variant options | ||
54 | + ] | ||
55 | + ] | ||
56 | + ]; | ||
57 | + } | ||
58 | + | ||
41 | /** | 59 | /** |
42 | * @inheritdoc | 60 | * @inheritdoc |
43 | */ | 61 | */ |
@@ -57,6 +75,7 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -57,6 +75,7 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
57 | [['price', 'price_old', 'stock'], 'number'], | 75 | [['price', 'price_old', 'stock'], 'number'], |
58 | [['name', 'sku'], 'string', 'max' => 255], | 76 | [['name', 'sku'], 'string', 'max' => 255], |
59 | [['remote_id'], 'string', 'max' => 20], | 77 | [['remote_id'], 'string', 'max' => 20], |
78 | + [['options', 'imagesUpload'], 'safe'], | ||
60 | // [['imagesUpload'], 'safe'], | 79 | // [['imagesUpload'], 'safe'], |
61 | // [['imagesUpload'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif', 'maxFiles' => 50], | 80 | // [['imagesUpload'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif', 'maxFiles' => 50], |
62 | [['product_unit_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductUnit::className(), 'targetAttribute' => ['product_unit_id' => 'product_unit_id']], | 81 | [['product_unit_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductUnit::className(), 'targetAttribute' => ['product_unit_id' => 'product_unit_id']], |
@@ -144,6 +163,34 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -144,6 +163,34 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
144 | return empty($this->product) ? null : ($this->product->name . (empty($this->name) ? '' : ' '. $this->name)); | 163 | return empty($this->product) ? null : ($this->product->name . (empty($this->name) ? '' : ' '. $this->name)); |
145 | } | 164 | } |
146 | 165 | ||
166 | + public function getImagesHTML() { | ||
167 | + $op = []; | ||
168 | + if ($this->images) { | ||
169 | + foreach ($this->images as $image) { | ||
170 | + $op[] = \common\components\artboximage\ArtboxImageHelper::getImage($image->imageUrl, 'admin_thumb'); | ||
171 | + } | ||
172 | + } | ||
173 | + return $op; | ||
174 | + } | ||
175 | + | ||
176 | + public function getImagesConfig() { | ||
177 | + $op = []; | ||
178 | + if ($this->images) { | ||
179 | + foreach ($this->images as $image) { | ||
180 | + $op[] = [ | ||
181 | + 'caption' => $image->image, | ||
182 | + 'width' => '120px', | ||
183 | + 'url' => \yii\helpers\Url::to(['/product/manage/delimg', 'id' => $image->product_image_id]), | ||
184 | + 'key' => $image->product_image_id, | ||
185 | + 'extra' => [ | ||
186 | + 'id' => $image->product_image_id, | ||
187 | + ], | ||
188 | + ]; | ||
189 | + } | ||
190 | + } | ||
191 | + return $op; | ||
192 | + } | ||
193 | + | ||
147 | /** | 194 | /** |
148 | * @return \yii\db\ActiveQuery | 195 | * @return \yii\db\ActiveQuery |
149 | */ | 196 | */ |
@@ -152,6 +199,24 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -152,6 +199,24 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
152 | return $this->hasMany(ProductImage::className(), ['product_variant_id' => 'product_variant_id']); | 199 | return $this->hasMany(ProductImage::className(), ['product_variant_id' => 'product_variant_id']); |
153 | } | 200 | } |
154 | 201 | ||
202 | + public function getOptions() { | ||
203 | + return $this->hasMany(TaxOption::className(), ['tax_option_id' => 'option_id'])->viaTable('product_variant_option', ['product_variant_id' => 'product_variant_id']); | ||
204 | + } | ||
205 | + | ||
206 | + public function getProperties() { | ||
207 | + $groups = $options = []; | ||
208 | + foreach ($this->options as $option) { | ||
209 | + $options[$option->tax_group_id][] = $option; | ||
210 | + } | ||
211 | + foreach (TaxGroup::find()->where(['tax_group_id' => array_keys($options)])->all() as $group) { | ||
212 | + if (!empty($options[$group->tax_group_id])) { | ||
213 | + $group->_options = $options[$group->tax_group_id]; | ||
214 | + $groups[] = $group; | ||
215 | + } | ||
216 | + } | ||
217 | + return $groups; | ||
218 | + } | ||
219 | + | ||
155 | /** | 220 | /** |
156 | * @inheritdoc | 221 | * @inheritdoc |
157 | * @return ProductVariantQuery the active query used by this AR class. | 222 | * @return ProductVariantQuery the active query used by this AR class. |
@@ -169,6 +234,10 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -169,6 +234,10 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
169 | $this->stocks = (array) $stocks; | 234 | $this->stocks = (array) $stocks; |
170 | } | 235 | } |
171 | 236 | ||
237 | + public function getCategory() { | ||
238 | + return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); | ||
239 | + } | ||
240 | + | ||
172 | public function afterSave($insert, $changedAttributes) | 241 | public function afterSave($insert, $changedAttributes) |
173 | { | 242 | { |
174 | if (!is_null($this->stocks)) { | 243 | if (!is_null($this->stocks)) { |
@@ -187,4 +256,25 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -187,4 +256,25 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
187 | ProductImage::deleteAll(['product_variant_id' => $this->product_variant_id]); | 256 | ProductImage::deleteAll(['product_variant_id' => $this->product_variant_id]); |
188 | ProductStock::deleteAll(['product_variant_id' => $this->product_variant_id]); | 257 | ProductStock::deleteAll(['product_variant_id' => $this->product_variant_id]); |
189 | } | 258 | } |
259 | + | ||
260 | + public function imagesUpload() | ||
261 | + { | ||
262 | + if ($this->validate()) { | ||
263 | + $images = []; | ||
264 | + foreach ($this->imagesUpload as $image) { | ||
265 | + $imageName = $image->baseName .'.'. $image->extension; | ||
266 | + $i = 0; | ||
267 | + while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) { | ||
268 | + $i++; | ||
269 | + $imageName = $image->baseName .'_'. $i .'.'. $image->extension; | ||
270 | + } | ||
271 | + | ||
272 | + $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName)); | ||
273 | + $images[] = $imageName; | ||
274 | + } | ||
275 | + return $images; | ||
276 | + } else { | ||
277 | + return false; | ||
278 | + } | ||
279 | + } | ||
190 | } | 280 | } |
common/modules/product/models/ProductVariantOption.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +namespace common\modules\product\models; | ||
4 | + | ||
5 | +use Yii; | ||
6 | + | ||
7 | +/** | ||
8 | + * This is the model class for table "product_variant_option". | ||
9 | + * | ||
10 | + * @property integer $product_variant_id | ||
11 | + * @property integer $option_id | ||
12 | + * | ||
13 | + * @property ProductVariant $productVariant | ||
14 | + * @property TaxOption $option | ||
15 | + */ | ||
16 | +class ProductVariantOption extends \yii\db\ActiveRecord | ||
17 | +{ | ||
18 | + /** | ||
19 | + * @inheritdoc | ||
20 | + */ | ||
21 | + public static function tableName() | ||
22 | + { | ||
23 | + return 'product_variant_option'; | ||
24 | + } | ||
25 | + | ||
26 | + /** | ||
27 | + * @inheritdoc | ||
28 | + */ | ||
29 | + public function rules() | ||
30 | + { | ||
31 | + return [ | ||
32 | + [['product_variant_id', 'option_id'], 'required'], | ||
33 | + [['product_variant_id', 'option_id'], 'integer'], | ||
34 | + [['product_variant_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductVariant::className(), 'targetAttribute' => ['product_variant_id' => 'product_variant_id']], | ||
35 | + [['option_id'], 'exist', 'skipOnError' => true, 'targetClass' => TaxOption::className(), 'targetAttribute' => ['option_id' => 'tax_option_id']], | ||
36 | + ]; | ||
37 | + } | ||
38 | + | ||
39 | + /** | ||
40 | + * @inheritdoc | ||
41 | + */ | ||
42 | + public function attributeLabels() | ||
43 | + { | ||
44 | + return [ | ||
45 | + 'product_variant_id' => 'Product Variant ID', | ||
46 | + 'option_id' => 'Option ID', | ||
47 | + ]; | ||
48 | + } | ||
49 | + | ||
50 | + /** | ||
51 | + * @return \yii\db\ActiveQuery | ||
52 | + */ | ||
53 | + public function getProductVariant() | ||
54 | + { | ||
55 | + return $this->hasOne(ProductVariant::className(), ['product_variant_id' => 'product_variant_id']); | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * @return \yii\db\ActiveQuery | ||
60 | + */ | ||
61 | + public function getOption() | ||
62 | + { | ||
63 | + return $this->hasOne(TaxOption::className(), ['tax_option_id' => 'option_id']); | ||
64 | + } | ||
65 | +} |
common/modules/product/models/ProductVariantSearch.php
@@ -24,7 +24,7 @@ class ProductVariantSearch extends ProductVariant | @@ -24,7 +24,7 @@ class ProductVariantSearch extends ProductVariant | ||
24 | public function rules() | 24 | public function rules() |
25 | { | 25 | { |
26 | return [ | 26 | return [ |
27 | - [['name', 'fullname', 'sku', 'price', 'price_old', 'stock', 'fullname', 'brand_name', 'category_name'], 'safe'], | 27 | + [['name', 'fullname', 'sku', 'price', 'price_old', 'stock', 'brand_name', 'category_name'], 'safe'], |
28 | [['product_variant_id', 'product_id'], 'integer'], | 28 | [['product_variant_id', 'product_id'], 'integer'], |
29 | [['is_top', 'is_new', 'akciya'], 'boolean'], | 29 | [['is_top', 'is_new', 'akciya'], 'boolean'], |
30 | ]; | 30 | ]; |
@@ -48,7 +48,7 @@ class ProductVariantSearch extends ProductVariant | @@ -48,7 +48,7 @@ class ProductVariantSearch extends ProductVariant | ||
48 | */ | 48 | */ |
49 | public function search($params) | 49 | public function search($params) |
50 | { | 50 | { |
51 | - $query = Product::find(); | 51 | + $query = ProductVariant::find(); |
52 | 52 | ||
53 | // add conditions that should always apply here | 53 | // add conditions that should always apply here |
54 | 54 | ||
@@ -58,6 +58,10 @@ class ProductVariantSearch extends ProductVariant | @@ -58,6 +58,10 @@ class ProductVariantSearch extends ProductVariant | ||
58 | 58 | ||
59 | $this->load($params); | 59 | $this->load($params); |
60 | 60 | ||
61 | + if (!empty($params['product_id'])) { | ||
62 | + $this->product_id = $params['product_id']; | ||
63 | + } | ||
64 | + | ||
61 | if (!$this->validate()) { | 65 | if (!$this->validate()) { |
62 | // uncomment the following line if you do not want to return any records when validation fails | 66 | // uncomment the following line if you do not want to return any records when validation fails |
63 | // $query->where('0=1'); | 67 | // $query->where('0=1'); |
@@ -66,7 +70,12 @@ class ProductVariantSearch extends ProductVariant | @@ -66,7 +70,12 @@ class ProductVariantSearch extends ProductVariant | ||
66 | 70 | ||
67 | $dataProvider->setSort([ | 71 | $dataProvider->setSort([ |
68 | 'attributes' => [ | 72 | 'attributes' => [ |
69 | - 'name', | 73 | + 'name' => [ |
74 | + 'asc' => ['product_variant.name' => SORT_ASC], | ||
75 | + 'desc' => ['product_variant.value' => SORT_DESC], | ||
76 | + 'default' => SORT_DESC, | ||
77 | + 'label' => 'Variant name', | ||
78 | + ], | ||
70 | 'brand_name' => [ | 79 | 'brand_name' => [ |
71 | 'asc' => ['brand_name.value' => SORT_ASC], | 80 | 'asc' => ['brand_name.value' => SORT_ASC], |
72 | 'desc' => ['brand_name.value' => SORT_DESC], | 81 | 'desc' => ['brand_name.value' => SORT_DESC], |
@@ -98,12 +107,12 @@ class ProductVariantSearch extends ProductVariant | @@ -98,12 +107,12 @@ class ProductVariantSearch extends ProductVariant | ||
98 | 107 | ||
99 | // grid filtering conditions | 108 | // grid filtering conditions |
100 | $query->andFilterWhere([ | 109 | $query->andFilterWhere([ |
101 | - 'product.product_id' => $this->product_id, | 110 | + 'product_variant.product_id' => $this->product_id, |
102 | 'product_variant_id' => $this->product_variant_id, | 111 | 'product_variant_id' => $this->product_variant_id, |
103 | ]); | 112 | ]); |
104 | 113 | ||
105 | if (!empty($this->fullname)) { | 114 | if (!empty($this->fullname)) { |
106 | - $query->orFilterWhere(['like', 'name', $this->fullname]); | 115 | + $query->orFilterWhere(['like', 'product_variant.name', $this->fullname]); |
107 | $query->orFilterWhere(['ilike', 'product.name', $this->fullname]); | 116 | $query->orFilterWhere(['ilike', 'product.name', $this->fullname]); |
108 | } | 117 | } |
109 | $query->andFilterWhere(['ilike', 'product.brand_name.value', $this->brand_name]); | 118 | $query->andFilterWhere(['ilike', 'product.brand_name.value', $this->brand_name]); |
@@ -111,7 +120,7 @@ class ProductVariantSearch extends ProductVariant | @@ -111,7 +120,7 @@ class ProductVariantSearch extends ProductVariant | ||
111 | $query->andFilterWhere(['ilike', 'sku', $this->sku]); | 120 | $query->andFilterWhere(['ilike', 'sku', $this->sku]); |
112 | 121 | ||
113 | $query->groupBy(['product_variant_id']); | 122 | $query->groupBy(['product_variant_id']); |
114 | - $query->orderBy('product.product_id', 'DESC'); | 123 | + $query->orderBy('product_variant.product_id', 'ASC'); |
115 | 124 | ||
116 | return $dataProvider; | 125 | return $dataProvider; |
117 | } | 126 | } |
common/modules/product/views/manage/_form.php
@@ -69,7 +69,7 @@ use kartik\select2\Select2; | @@ -69,7 +69,7 @@ use kartik\select2\Select2; | ||
69 | ], | 69 | ], |
70 | ]); ?> | 70 | ]); ?> |
71 | 71 | ||
72 | - <?= $form->field($model, 'variants')->widget(MultipleInput::className(), [ | 72 | + <?php /*= $form->field($model, 'variants')->widget(MultipleInput::className(), [ |
73 | 'columns' => [ | 73 | 'columns' => [ |
74 | [ | 74 | [ |
75 | 'name' => 'product_variant_id', | 75 | 'name' => 'product_variant_id', |
@@ -119,7 +119,7 @@ use kartik\select2\Select2; | @@ -119,7 +119,7 @@ use kartik\select2\Select2; | ||
119 | ], | 119 | ], |
120 | ], | 120 | ], |
121 | ]); | 121 | ]); |
122 | - ?> | 122 | + */ ?> |
123 | 123 | ||
124 | <?php if(isset($groups)) :?> | 124 | <?php if(isset($groups)) :?> |
125 | <?php foreach($groups->all() as $group) :?> | 125 | <?php foreach($groups->all() as $group) :?> |
common/modules/product/views/manage/index.php
@@ -27,7 +27,6 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -27,7 +27,6 @@ $this->params['breadcrumbs'][] = $this->title; | ||
27 | 'filterModel' => $searchModel, | 27 | 'filterModel' => $searchModel, |
28 | 'columns' => [ | 28 | 'columns' => [ |
29 | ['class' => 'yii\grid\SerialColumn'], | 29 | ['class' => 'yii\grid\SerialColumn'], |
30 | -// 'product_id', | ||
31 | 'name', | 30 | 'name', |
32 | [ | 31 | [ |
33 | 'label' => Yii::t('product', 'Brand'), | 32 | 'label' => Yii::t('product', 'Brand'), |
@@ -87,7 +86,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -87,7 +86,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
87 | ], | 86 | ], |
88 | [ | 87 | [ |
89 | 'class' => 'yii\grid\ActionColumn', | 88 | 'class' => 'yii\grid\ActionColumn', |
90 | - 'template' => '{view} |{is_top} {is_new} {akciya} | {update} {delete}', | 89 | + 'template' => '{items} {view} |{is_top} {is_new} {akciya} | {update} {delete}', |
91 | 'buttons' => [ | 90 | 'buttons' => [ |
92 | 'is_top' => function ($url, $model) { | 91 | 'is_top' => function ($url, $model) { |
93 | return Html::a('<span class="glyphicon glyphicon-star' . ($model->is_top ? '' : '-empty') . '"></span>', $url, [ | 92 | return Html::a('<span class="glyphicon glyphicon-star' . ($model->is_top ? '' : '-empty') . '"></span>', $url, [ |
@@ -104,9 +103,18 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -104,9 +103,18 @@ $this->params['breadcrumbs'][] = $this->title; | ||
104 | 'title' => Yii::t('product', ($model->akciya ? 'Set not is promotion' : 'Set is promotion')), | 103 | 'title' => Yii::t('product', ($model->akciya ? 'Set not is promotion' : 'Set is promotion')), |
105 | ]); | 104 | ]); |
106 | }, | 105 | }, |
106 | + 'items' => function ($url, $model) { | ||
107 | + return Html::a('<span class="glyphicon glyphicon-th-list"></span>', $url, [ | ||
108 | + 'title' => Yii::t('product', 'Variants'), | ||
109 | + ]); | ||
110 | + }, | ||
111 | + | ||
107 | ], | 112 | ], |
108 | 'urlCreator' => function ($action, $model, $key, $index) { | 113 | 'urlCreator' => function ($action, $model, $key, $index) { |
109 | switch ($action) { | 114 | switch ($action) { |
115 | + case 'items': | ||
116 | + return \yii\helpers\Url::to(['/product/variant', 'product_id' => $model->product_id]); | ||
117 | + break; | ||
110 | case 'is_top': | 118 | case 'is_top': |
111 | return \yii\helpers\Url::to(['manage/is_top', 'id' => $model->product_id]); | 119 | return \yii\helpers\Url::to(['manage/is_top', 'id' => $model->product_id]); |
112 | break; | 120 | break; |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\widgets\ActiveForm; | ||
5 | +use yii\helpers\ArrayHelper; | ||
6 | +use common\components\artboxtree\ArtboxTreeHelper; | ||
7 | +use common\modules\product\helpers\ProductHelper; | ||
8 | +use kartik\file\FileInput; | ||
9 | +use unclead\widgets\MultipleInput; | ||
10 | +use unclead\widgets\MultipleInputColumn; | ||
11 | +use kartik\select2\Select2; | ||
12 | + | ||
13 | +/* @var $this yii\web\View */ | ||
14 | +/* @var $model common\modules\product\models\Product */ | ||
15 | +/* @var $form yii\widgets\ActiveForm */ | ||
16 | +?> | ||
17 | + | ||
18 | +<div class="product-form"> | ||
19 | + | ||
20 | + <?php $form = ActiveForm::begin([ | ||
21 | + 'options' => ['enctype' => 'multipart/form-data'] | ||
22 | + ]); ?> | ||
23 | + | ||
24 | + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | ||
25 | + | ||
26 | + <?= $form->field($model, 'product_id')->hiddenInput()->label(''); ?> | ||
27 | + | ||
28 | + <?= $form->field($model, 'sku')->textarea(); ?> | ||
29 | + <?= $form->field($model, 'price')->textarea(); ?> | ||
30 | + <?= $form->field($model, 'price_old')->textarea(); ?> | ||
31 | + | ||
32 | + <?= $form->field($model, 'imagesUpload[]')->widget(\kartik\file\FileInput::classname(), [ | ||
33 | + 'language' => 'ru', | ||
34 | + 'options' => [ | ||
35 | + 'accept' => 'image/*', | ||
36 | + 'multiple' => true, | ||
37 | + ], | ||
38 | + 'pluginOptions' => [ | ||
39 | + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], | ||
40 | + 'initialPreview' => !empty($model->imagesHTML) ? $model->imagesHTML : [], | ||
41 | + 'initialPreviewConfig' => $model->imagesConfig, | ||
42 | + 'overwriteInitial' => false, | ||
43 | + 'showRemove' => false, | ||
44 | + 'showUpload' => false, | ||
45 | +// 'uploadUrl' => empty($model->product_id) ? null : \yii\helpers\Url::to(['/product/manage/uploadImage']), | ||
46 | + 'uploadAsync' => !empty($model->product_id), | ||
47 | + 'previewFileType' => 'image', | ||
48 | + ], | ||
49 | + ]); ?> | ||
50 | + | ||
51 | + <?php /*= $form->field($model, 'variants')->widget(MultipleInput::className(), [ | ||
52 | + 'columns' => [ | ||
53 | + [ | ||
54 | + 'name' => 'product_variant_id', | ||
55 | + 'type' => MultipleInputColumn::TYPE_HIDDEN_INPUT, | ||
56 | + ], | ||
57 | + [ | ||
58 | + 'name' => 'name', | ||
59 | + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | ||
60 | + 'title' => Yii::t('product', 'Name'), | ||
61 | + ], | ||
62 | + [ | ||
63 | + 'name' => 'sku', | ||
64 | + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | ||
65 | + 'title' => Yii::t('product', 'SKU'), | ||
66 | + ], | ||
67 | + [ | ||
68 | + 'name' => 'price', | ||
69 | + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | ||
70 | + 'title' => Yii::t('product', 'Price'), | ||
71 | + ], | ||
72 | + [ | ||
73 | + 'name' => 'price_old', | ||
74 | + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | ||
75 | + 'title' => Yii::t('product', 'Old Price'), | ||
76 | + ], | ||
77 | + [ | ||
78 | + 'name' => 'product_unit_id', | ||
79 | + 'type' => MultipleInputColumn::TYPE_DROPDOWN, | ||
80 | + 'title' => Yii::t('product', 'Unit'), | ||
81 | + 'items' => ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), | ||
82 | + ], | ||
83 | + [ | ||
84 | + 'name' => 'stock', | ||
85 | + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | ||
86 | + 'title' => Yii::t('product', 'Stock'), | ||
87 | + 'options' => [ | ||
88 | + 'placeholder' => '∞' | ||
89 | + ], | ||
90 | + ], | ||
91 | + [ | ||
92 | + 'name' => 'image', | ||
93 | + 'type' => 'fileInput', | ||
94 | + 'title' => Yii::t('product', 'Image'), | ||
95 | + 'options' => [ | ||
96 | + 'multiple' => false | ||
97 | + ], | ||
98 | + ], | ||
99 | + ], | ||
100 | + ]); | ||
101 | + */ ?> | ||
102 | + | ||
103 | + <?php if(isset($groups)) :?> | ||
104 | + <?php foreach($groups->all() as $group) :?> | ||
105 | + <?= $form->field($model, 'options')->checkboxList( | ||
106 | + ArrayHelper::map($group->options, 'tax_option_id', 'ValueRenderFlash'), | ||
107 | + [ | ||
108 | + 'multiple' => true, | ||
109 | + 'unselect' => null, | ||
110 | + ] | ||
111 | + )->label($group->name);?> | ||
112 | + <?php endforeach?> | ||
113 | + <?php endif?> | ||
114 | + | ||
115 | + <div class="form-group"> | ||
116 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
117 | + </div> | ||
118 | + | ||
119 | + <?php ActiveForm::end(); ?> | ||
120 | + | ||
121 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\widgets\ActiveForm; | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model common\modules\product\models\ProductSearch */ | ||
8 | +/* @var $form yii\widgets\ActiveForm */ | ||
9 | +?> | ||
10 | + | ||
11 | +<div class="product-search"> | ||
12 | + | ||
13 | + <?php $form = ActiveForm::begin([ | ||
14 | + 'action' => ['index'], | ||
15 | + 'method' => 'get', | ||
16 | + ]); ?> | ||
17 | + | ||
18 | + <?= $form->field($model, 'name') ?> | ||
19 | + | ||
20 | + <?= $form->field($model, 'brand_id') ?> | ||
21 | + | ||
22 | + <?= $form->field($model, 'product_id') ?> | ||
23 | + | ||
24 | + <div class="form-group"> | ||
25 | + <?= Html::submitButton(Yii::t('product', 'Search'), ['class' => 'btn btn-primary']) ?> | ||
26 | + <?= Html::resetButton(Yii::t('product', 'Reset'), ['class' => 'btn btn-default']) ?> | ||
27 | + </div> | ||
28 | + | ||
29 | + <?php ActiveForm::end(); ?> | ||
30 | + | ||
31 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model common\modules\product\models\Product */ | ||
8 | + | ||
9 | +$this->title = Yii::t('product', 'Create Product'); | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = $this->title; | ||
12 | +?> | ||
13 | +<div class="product-create"> | ||
14 | + | ||
15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
16 | + | ||
17 | + <?= $this->render('_form', [ | ||
18 | + 'model' => $model, | ||
19 | + ]) ?> | ||
20 | + | ||
21 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\grid\GridView; | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $searchModel common\modules\product\models\ProductVariantSearch */ | ||
8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
9 | + | ||
10 | +$this->title = Yii::t('product', 'Variants'); | ||
11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['/product/manage']]; | ||
12 | +if (!empty($product)) { | ||
13 | + $this->params['breadcrumbs'] = [ | ||
14 | + ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant']], | ||
15 | + $product->fullname | ||
16 | + ]; | ||
17 | +} else { | ||
18 | + $this->params['breadcrumbs'][] = $this->title; | ||
19 | +} | ||
20 | +?> | ||
21 | +<div class="product-index"> | ||
22 | + | ||
23 | + <h1><?= Html::encode($this->title) ?></h1> | ||
24 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
25 | + | ||
26 | + <p> | ||
27 | + <?= Html::a(Yii::t('product', 'Create Variant'), ['create'], ['class' => 'btn btn-success']) ?> | ||
28 | + </p> | ||
29 | + <?= GridView::widget([ | ||
30 | + 'dataProvider' => $dataProvider, | ||
31 | + 'filterModel' => $searchModel, | ||
32 | + 'columns' => [ | ||
33 | + ['class' => 'yii\grid\SerialColumn'], | ||
34 | + | ||
35 | + [ | ||
36 | + 'attribute' => 'product_id', | ||
37 | + 'value' => 'fullname', | ||
38 | + 'label' => Yii::t('product', 'Name'), | ||
39 | + 'filter' => \kartik\select2\Select2::widget([ | ||
40 | + 'model' => $searchModel, | ||
41 | + 'attribute' => 'product_id', | ||
42 | + 'data' => \yii\helpers\ArrayHelper::map(\common\modules\product\models\Product::find()->orderBy(['name' => 'ASC'])->all(), 'product_id', 'name'), | ||
43 | + 'language' => 'ru', | ||
44 | + 'options' => [ | ||
45 | + 'placeholder' => Yii::t('product', 'Select product'), | ||
46 | + 'multiple' => false, | ||
47 | + ], | ||
48 | + 'pluginOptions' => [ | ||
49 | + 'allowClear' => true | ||
50 | + ], | ||
51 | + ]), | ||
52 | + ], | ||
53 | + 'sku', | ||
54 | + 'price', | ||
55 | + 'price_old', | ||
56 | + 'stock', | ||
57 | + | ||
58 | + ['class' => 'yii\grid\ActionColumn'], | ||
59 | + ], | ||
60 | + ]); ?> | ||
61 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | + | ||
5 | +/* @var $this yii\web\View */ | ||
6 | +/* @var $model common\modules\product\models\Product */ | ||
7 | + | ||
8 | +$this->title = Yii::t('product', 'Update {modelClass}: ', [ | ||
9 | + 'modelClass' => 'Product', | ||
10 | +]) . ' ' . $model->name; | ||
11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']]; | ||
12 | +$this->params['breadcrumbs'][] = ['label' => $model->product->name, 'url' => ['view', 'id' => $model->product->product_id]]; | ||
13 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant?product_id='. $model->product->product_id]]; | ||
14 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->product_variant_id]]; | ||
15 | +$this->params['breadcrumbs'][] = Yii::t('product', 'Update'); | ||
16 | +?> | ||
17 | +<div class="product-update"> | ||
18 | + | ||
19 | + <h1><?= Html::encode($this->title) ?></h1> | ||
20 | + | ||
21 | + <?= $this->render('_form', [ | ||
22 | + 'model' => $model, | ||
23 | + 'groups' => $groups, | ||
24 | + ]) ?> | ||
25 | + | ||
26 | +</div> |
1 | +<?php | ||
2 | + | ||
3 | +use yii\helpers\Html; | ||
4 | +use yii\widgets\DetailView; | ||
5 | + | ||
6 | +/* @var $this yii\web\View */ | ||
7 | +/* @var $model common\modules\product\models\Product */ | ||
8 | + | ||
9 | +$this->title = $model->name; | ||
10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']]; | ||
11 | +$this->params['breadcrumbs'][] = ['label' => $model->product->name, 'url' => ['view', 'id' => $model->product->product_id]]; | ||
12 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant?product_id='. $model->product->product_id]]; | ||
13 | +$this->params['breadcrumbs'][] = $this->title; | ||
14 | +?> | ||
15 | +<div class="product-view"> | ||
16 | + | ||
17 | + <h1><?= Html::encode($this->title) ?></h1> | ||
18 | + | ||
19 | + <p> | ||
20 | + <?= Html::a(Yii::t('product', 'Update'), ['update', 'id' => $model->product_variant_id], ['class' => 'btn btn-primary']) ?> | ||
21 | + <?= Html::a(Yii::t('product', 'Delete'), ['delete', 'id' => $model->product_variant_id], [ | ||
22 | + 'class' => 'btn btn-danger', | ||
23 | + 'data' => [ | ||
24 | + 'confirm' => Yii::t('product', 'Are you sure you want to delete this item?'), | ||
25 | + 'method' => 'post', | ||
26 | + ], | ||
27 | + ]) ?> | ||
28 | + </p> | ||
29 | + | ||
30 | + <?= DetailView::widget([ | ||
31 | + 'model' => $model, | ||
32 | + 'attributes' => [ | ||
33 | + 'product_id', | ||
34 | + 'name', | ||
35 | + 'fullname', | ||
36 | + 'brand.name', | ||
37 | + 'category.name', | ||
38 | + 'image.imageUrl:image' | ||
39 | + ], | ||
40 | + ]) ?> | ||
41 | + | ||
42 | +</div> |
common/translation/ru/product.php
@@ -24,6 +24,8 @@ return [ | @@ -24,6 +24,8 @@ return [ | ||
24 | 'Price Old' => 'Старая Цена', | 24 | 'Price Old' => 'Старая Цена', |
25 | 'Products' => 'Товары', | 25 | 'Products' => 'Товары', |
26 | 'Product' => 'Товар', | 26 | 'Product' => 'Товар', |
27 | + 'Variants' => 'Модифицкации', | ||
28 | + 'Variant' => 'Модифицкация', | ||
27 | 'Create Product' => 'Создать Товар', | 29 | 'Create Product' => 'Создать Товар', |
28 | 'Enable' => 'Доступно', | 30 | 'Enable' => 'Доступно', |
29 | 'Disable' => 'Отсутсвует', | 31 | 'Disable' => 'Отсутсвует', |
frontend/controllers/CatalogController.php
@@ -117,6 +117,7 @@ class CatalogController extends \yii\web\Controller | @@ -117,6 +117,7 @@ class CatalogController extends \yii\web\Controller | ||
117 | } | 117 | } |
118 | 118 | ||
119 | $productModel = new ProductFrontendSearch(); | 119 | $productModel = new ProductFrontendSearch(); |
120 | + $productQuery = $productModel->getSearchQuery($category, $params); | ||
120 | $productProvider = $productModel->search($category, $params); | 121 | $productProvider = $productModel->search($category, $params); |
121 | 122 | ||
122 | $brandModel = new BrandSearch(); | 123 | $brandModel = new BrandSearch(); |
frontend/models/ProductFrontendSearch.php
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | 2 | ||
3 | namespace frontend\models; | 3 | namespace frontend\models; |
4 | 4 | ||
5 | +use common\modules\product\helpers\ProductHelper; | ||
5 | use common\modules\product\models\Brand; | 6 | use common\modules\product\models\Brand; |
6 | use common\modules\product\models\BrandName; | 7 | use common\modules\product\models\BrandName; |
7 | use common\modules\product\models\CategoryName; | 8 | use common\modules\product\models\CategoryName; |
@@ -47,20 +48,10 @@ class ProductFrontendSearch extends Product { | @@ -47,20 +48,10 @@ class ProductFrontendSearch extends Product { | ||
47 | * @return ActiveDataProvider | 48 | * @return ActiveDataProvider |
48 | */ | 49 | */ |
49 | public function search($category = null, $params = []) { | 50 | public function search($category = null, $params = []) { |
50 | - if (!empty($category)) { | ||
51 | - /** @var ActiveQuery $query */ | ||
52 | -// $query = $category->getRelations('product_categories'); | ||
53 | - $query = $category->getProducts(); | ||
54 | - } else { | ||
55 | - $query = Product::find(); | ||
56 | - } | ||
57 | - $query->select(['product.*']); | ||
58 | - $query->joinWith(['variant', 'image', 'brand', 'brand.brandName', 'category', 'category.categoryName']); | ||
59 | 51 | ||
60 | - $query->groupBy(['product.product_id', 'product_variant.price']); | ||
61 | 52 | ||
62 | $dataProvider = new ActiveDataProvider([ | 53 | $dataProvider = new ActiveDataProvider([ |
63 | - 'query' => $query, | 54 | + 'query' => $this->getSearchQuery($category, $params), |
64 | 'pagination' => [ | 55 | 'pagination' => [ |
65 | 'pageSize' => 16, | 56 | 'pageSize' => 16, |
66 | ], | 57 | ], |
@@ -86,50 +77,83 @@ class ProductFrontendSearch extends Product { | @@ -86,50 +77,83 @@ class ProductFrontendSearch extends Product { | ||
86 | return $dataProvider; | 77 | return $dataProvider; |
87 | } | 78 | } |
88 | 79 | ||
89 | - $this->_setParams($query, $params); | ||
90 | 80 | ||
91 | - $query->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]); | ||
92 | 81 | ||
93 | return $dataProvider; | 82 | return $dataProvider; |
94 | } | 83 | } |
95 | 84 | ||
85 | + public function getSearchQuery($category = null, $params = []) { | ||
86 | + if (!empty($category)) { | ||
87 | + /** @var ActiveQuery $query */ | ||
88 | +// $query = $category->getRelations('product_categories'); | ||
89 | + $query = $category->getProducts(); | ||
90 | + } else { | ||
91 | + $query = Product::find(); | ||
92 | + } | ||
93 | + $query->select(['product.*']); | ||
94 | + $query->joinWith(['variant', 'image', 'brand', 'brand.brandName', 'category', 'category.categoryName']); | ||
95 | + | ||
96 | + $query->groupBy(['product.product_id', 'product_variant.price']); | ||
97 | + | ||
98 | + ProductHelper::_setQueryParams($query, $params); | ||
99 | + | ||
100 | + $query->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]); | ||
101 | + | ||
102 | + return $query; | ||
103 | + } | ||
104 | + | ||
96 | public function optionsForCategory($category = null, $params = []) { | 105 | public function optionsForCategory($category = null, $params = []) { |
97 | $query = TaxOption::find() | 106 | $query = TaxOption::find() |
98 | ->select([ | 107 | ->select([ |
99 | TaxOption::tableName() .'.*', | 108 | TaxOption::tableName() .'.*', |
100 | - 'COUNT('. ProductOption::tableName() .'.product_id) AS _items_count' | ||
101 | ]) | 109 | ]) |
102 | - ->innerJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id') | ||
103 | - ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. ProductOption::tableName() .'.product_id') | 110 | + ->leftJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id') |
104 | ->innerJoin(TaxGroup::tableName(), TaxGroup::tableName() .'.tax_group_id='. TaxOption::tableName() .'.tax_group_id') | 111 | ->innerJoin(TaxGroup::tableName(), TaxGroup::tableName() .'.tax_group_id='. TaxOption::tableName() .'.tax_group_id') |
105 | ->where([TaxGroup::tableName() .'.is_filter' => true]); | 112 | ->where([TaxGroup::tableName() .'.is_filter' => true]); |
106 | 113 | ||
107 | - $query->leftJoin('product_variant', 'product_variant.product_id = '. ProductCategory::tableName() .'.product_id'); | 114 | + $query->innerJoin('product_variant', 'product_variant.product_id = '. ProductOption::tableName() .'.product_id'); |
108 | $query->andWhere(['!=', 'product_variant.stock', 0]); | 115 | $query->andWhere(['!=', 'product_variant.stock', 0]); |
109 | $query->groupBy(TaxOption::tableName() .'.tax_option_id'); | 116 | $query->groupBy(TaxOption::tableName() .'.tax_option_id'); |
110 | // $query->having(['>', 'COUNT(product_variant.product_variant_id)', 0]); | 117 | // $query->having(['>', 'COUNT(product_variant.product_variant_id)', 0]); |
111 | 118 | ||
112 | if (!empty($category)) { | 119 | if (!empty($category)) { |
120 | + $query->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. ProductOption::tableName() .'.product_id'); | ||
113 | $query->andWhere([ProductCategory::tableName() .'.category_id' => $category->category_id]); | 121 | $query->andWhere([ProductCategory::tableName() .'.category_id' => $category->category_id]); |
114 | } | 122 | } |
115 | 123 | ||
116 | $query->orderBy(TaxOption::tableName() .'.sort', SORT_ASC); | 124 | $query->orderBy(TaxOption::tableName() .'.sort', SORT_ASC); |
117 | $query->limit(null); | 125 | $query->limit(null); |
118 | - if (!empty($params['prices'])) { | ||
119 | - if ($params['prices']['min'] > 0 || $params['prices']['max'] > 0) { | ||
120 | - $query->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id='. ProductCategory::tableName() .'.product_id'); | 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 | + ]); | ||
121 | } | 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'])) { | ||
122 | if ($params['prices']['min'] > 0) { | 149 | if ($params['prices']['min'] > 0) { |
123 | - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]); | 150 | + $queryCount->andWhere(['>=', 'pv.price', $params['prices']['min']]); |
124 | } | 151 | } |
125 | if ($params['prices']['max'] > 0) { | 152 | if ($params['prices']['max'] > 0) { |
126 | - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); | 153 | + $queryCount->andWhere(['<=', 'pv.price', $params['prices']['max']]); |
127 | } | 154 | } |
128 | } | 155 | } |
129 | - if (!empty($params['brands'])) { | ||
130 | - $query->innerJoin(Product::tableName(), Product::tableName() .'.product_id='. ProductCategory::tableName() .'.product_id'); | ||
131 | - $query->andWhere([Product::tableName() .'.brand_id' => $params['brands']]); | ||
132 | - } | 156 | + $query->addSelect(['_items_count' => $queryCount]); |
133 | 157 | ||
134 | return $query; | 158 | return $query; |
135 | } | 159 | } |
@@ -144,7 +168,7 @@ class ProductFrontendSearch extends Product { | @@ -144,7 +168,7 @@ class ProductFrontendSearch extends Product { | ||
144 | } | 168 | } |
145 | $query->joinWith('variant'); | 169 | $query->joinWith('variant'); |
146 | 170 | ||
147 | - $this->_setParams($query, $params, false); | 171 | + ProductHelper::_setQueryParams($query, $params, false); |
148 | 172 | ||
149 | // $query->select([ | 173 | // $query->select([ |
150 | // 'MIN('. ProductVariant::tableName() .'.price) AS priceMIN', | 174 | // 'MIN('. ProductVariant::tableName() .'.price) AS priceMIN', |
@@ -156,46 +180,4 @@ class ProductFrontendSearch extends Product { | @@ -156,46 +180,4 @@ class ProductFrontendSearch extends Product { | ||
156 | 'max' => $query->max(ProductVariant::tableName() .'.price'), | 180 | 'max' => $query->max(ProductVariant::tableName() .'.price'), |
157 | ]; | 181 | ]; |
158 | } | 182 | } |
159 | - | ||
160 | - protected function _setParams(&$query, $params, $setPriceLimits = true) { | ||
161 | - if (!empty($params['keywords'])) { | ||
162 | - if (!is_array($params['keywords'])) { | ||
163 | - $params['keywords'] = [$params['keywords']]; | ||
164 | - } | ||
165 | - foreach ($params['keywords'] as $keyword) { | ||
166 | - $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]); | ||
167 | - $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]); | ||
168 | - $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]); | ||
169 | - } | ||
170 | - } | ||
171 | - if (!empty($params['special'])) { | ||
172 | - foreach($params['special'] as $key => $value) { | ||
173 | - $query->orFilterWhere([Product::tableName() .'.'. $key => $value]); | ||
174 | - } | ||
175 | - } | ||
176 | - if (!empty($params['brands'])) { | ||
177 | - $query->andFilterWhere([Product::tableName() .'.brand_id' => $params['brands']]); | ||
178 | - } | ||
179 | - if (!empty($params['options'])) { | ||
180 | - foreach ($params['options'] as $group => $options) { | ||
181 | - foreach ($options as &$option) { | ||
182 | - $option = "'$option'"; | ||
183 | - } | ||
184 | - $query->andWhere( | ||
185 | - 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) . '))' | ||
186 | - ); | ||
187 | - } | ||
188 | - } | ||
189 | - | ||
190 | - | ||
191 | - | ||
192 | - if ($setPriceLimits && !empty($params['prices'])) { | ||
193 | - if ($params['prices']['min'] > 0) { | ||
194 | - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]); | ||
195 | - } | ||
196 | - if ($params['prices']['max'] > 0) { | ||
197 | - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]); | ||
198 | - } | ||
199 | - } | ||
200 | - } | ||
201 | } | 183 | } |
202 | \ No newline at end of file | 184 | \ No newline at end of file |
frontend/views/catalog/products.php
@@ -118,9 +118,13 @@ $this->registerJsFile(Yii::getAlias('@web/js/ion.rangeSlider.js'),[ | @@ -118,9 +118,13 @@ $this->registerJsFile(Yii::getAlias('@web/js/ion.rangeSlider.js'),[ | ||
118 | $checked = !empty($filter['brands']) && in_array($brand->alias, $filter['brands']); | 118 | $checked = !empty($filter['brands']) && in_array($brand->alias, $filter['brands']); |
119 | $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'brands', $brand->alias, $checked)]); | 119 | $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'brands', $brand->alias, $checked)]); |
120 | ?> | 120 | ?> |
121 | - <li> | ||
122 | - <input type="checkbox" class="brands-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" /> | 121 | + <li<?= (empty($brand->_items_count) ? ' class="hidden"' : '')?>> |
122 | + <input type="checkbox"<?= (empty($brand->_items_count) ? ' disabled' : ' onchange="document.location=\''. $option_url .'\'"')?> class="brands-option" <?= $checked ? ' checked' : ''?> /> | ||
123 | + <?php if (empty($brand->_items_count)) :?> | ||
124 | + <?= $brand->name?> (<?= $brand->_items_count?>) | ||
125 | + <?php else :?> | ||
123 | <a href="<?= $option_url?>"><?= $brand->name?> (<?= $brand->_items_count?>)</a> | 126 | <a href="<?= $option_url?>"><?= $brand->name?> (<?= $brand->_items_count?>)</a> |
127 | + <?php endif?> | ||
124 | </li> | 128 | </li> |
125 | <?php endforeach?> | 129 | <?php endforeach?> |
126 | </ul> | 130 | </ul> |
@@ -136,9 +140,13 @@ $this->registerJsFile(Yii::getAlias('@web/js/ion.rangeSlider.js'),[ | @@ -136,9 +140,13 @@ $this->registerJsFile(Yii::getAlias('@web/js/ion.rangeSlider.js'),[ | ||
136 | $checked = (isset($filter['options'][$group->alias]) && in_array($option->alias, $filter['options'][$group->alias])); | 140 | $checked = (isset($filter['options'][$group->alias]) && in_array($option->alias, $filter['options'][$group->alias])); |
137 | $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'options', [$option->group->alias => [$option->alias]], $checked)]); | 141 | $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'options', [$option->group->alias => [$option->alias]], $checked)]); |
138 | ?> | 142 | ?> |
139 | - <li> | ||
140 | - <input type="checkbox" class="features-option" onchange="document.location='<?= $option_url?>'" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> /> | 143 | + <li<?= (empty($option->_items_count) ? ' class="hidden"' : '')?>> |
144 | + <input type="checkbox"<?= (empty($option->_items_count) ? ' disabled' : ' onchange="document.location=\''. $option_url .'\'"')?> class="features-option" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> /> | ||
145 | + <?php if (empty($option->_items_count)) :?> | ||
146 | + <?= $option->ValueRenderHTML?> (<?= $option->_items_count?>) | ||
147 | + <?php else :?> | ||
141 | <a href="<?= $option_url?>"><?= $option->ValueRenderHTML?> (<?= $option->_items_count?>)</a> | 148 | <a href="<?= $option_url?>"><?= $option->ValueRenderHTML?> (<?= $option->_items_count?>)</a> |
149 | + <?php endif?> | ||
142 | </li> | 150 | </li> |
143 | <?php endforeach?> | 151 | <?php endforeach?> |
144 | </ul> | 152 | </ul> |
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;margin-top:20px}.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}.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;margin-top:20px}.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%)} | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |