Commit 38828295b07deef496f4d4c74e74a890d4fcb6ca
1 parent
1bdd1646
-
Showing
23 changed files
with
214 additions
and
25 deletions
Show diff stats
backend/views/brand/index.php
... | ... | @@ -26,6 +26,13 @@ $this->params['breadcrumbs'][] = $this->title; |
26 | 26 | |
27 | 27 | 'name', |
28 | 28 | 'alias', |
29 | + [ | |
30 | + 'attribute' => 'title', | |
31 | + 'format' => 'html', | |
32 | + 'value' => function($data) { | |
33 | + return Html::img($data->imageUrl, ['width'=>'100']); | |
34 | + }, | |
35 | + ], | |
29 | 36 | |
30 | 37 | ['class' => 'yii\grid\ActionColumn'], |
31 | 38 | ], | ... | ... |
common/config/main.php
... | ... | @@ -90,6 +90,20 @@ return [ |
90 | 90 | 'master' => null |
91 | 91 | ], |
92 | 92 | ], |
93 | + 'product_basket' => [ | |
94 | + 'resize' => [ | |
95 | + 'width' => 100, | |
96 | + 'height' => 200, | |
97 | + 'master' => null | |
98 | + ], | |
99 | + ], | |
100 | + 'iam' => [ | |
101 | + 'resize' => [ | |
102 | + 'width' => 120, | |
103 | + 'height' => 240, | |
104 | + 'master' => null | |
105 | + ], | |
106 | + ], | |
93 | 107 | 'slider' => [ |
94 | 108 | 'resize' => [ |
95 | 109 | 'width' => 720, |
... | ... | @@ -104,6 +118,18 @@ return [ |
104 | 118 | 'master' => null |
105 | 119 | ], |
106 | 120 | ], |
121 | + 'brand_item' => [ | |
122 | + 'resize' => [ | |
123 | + 'width' => 150, | |
124 | + 'height' => 150, | |
125 | + 'master' => null | |
126 | + ], | |
127 | + 'crop' => [ | |
128 | + 'width' => 150, | |
129 | + 'height' => 150, | |
130 | + 'master' => null | |
131 | + ], | |
132 | + ], | |
107 | 133 | 'mainmenu' => [ |
108 | 134 | 'resize' => [ |
109 | 135 | 'width' => 160, | ... | ... |
common/modules/product/CatalogUrlManager.php
... | ... | @@ -3,6 +3,7 @@ |
3 | 3 | namespace common\modules\product; |
4 | 4 | |
5 | 5 | use common\modules\product\models\Brand; |
6 | +use common\modules\product\models\BrandSearch; | |
6 | 7 | use common\modules\product\models\CategorySearch; |
7 | 8 | use common\modules\product\models\ProductSearch; |
8 | 9 | use common\modules\rubrication\models\TaxOption; |
... | ... | @@ -78,8 +79,15 @@ class CatalogUrlManager implements UrlRuleInterface { |
78 | 79 | $params = [ |
79 | 80 | 'product' => $product, |
80 | 81 | ]; |
81 | - } elseif ($paths[0] == 'brand') { | |
82 | - | |
82 | + } elseif ($paths[0] == 'brands') { | |
83 | + if (empty($paths[1]) || $paths[1] == 'index') { | |
84 | + $route = 'catalog/brands'; | |
85 | + } elseif (($brand = BrandSearch::findByAlias($paths[1]))) { | |
86 | + $route = 'catalog/brands'; | |
87 | + $params['brand'] = $brand; | |
88 | + } else { | |
89 | + // @todo redirect or return FALSE | |
90 | + } | |
83 | 91 | } |
84 | 92 | |
85 | 93 | return [$route, $params]; |
... | ... | @@ -169,6 +177,21 @@ class CatalogUrlManager implements UrlRuleInterface { |
169 | 177 | |
170 | 178 | return $url; |
171 | 179 | break; |
180 | + | |
181 | + case 'catalog/brands': | |
182 | + if (empty($params['brand'])) { | |
183 | + return 'brands'; | |
184 | + } else { | |
185 | + $brand_alias = is_object($params['brand']) ? $params['brand']->alias : strtolower($params['brand']); | |
186 | + } | |
187 | + $url = 'brands/'. $brand_alias; | |
188 | + | |
189 | + if (!empty($params) && ($query = http_build_query($params)) !== '') { | |
190 | + $url .= '?' . $query; | |
191 | + } | |
192 | + | |
193 | + return $url; | |
194 | + break; | |
172 | 195 | } |
173 | 196 | } |
174 | 197 | ... | ... |
common/modules/product/models/BrandSearch.php
... | ... | @@ -81,6 +81,8 @@ class BrandSearch extends Brand |
81 | 81 | ->andFilterWhere(['ilike', 'seo_text', $this->seo_text]) |
82 | 82 | ->andFilterWhere(['ilike', 'brand_name.value', $this->brand_name]); |
83 | 83 | |
84 | + $query->orderBy('brand_id', 'asc'); | |
85 | + | |
84 | 86 | return $dataProvider; |
85 | 87 | } |
86 | 88 | |
... | ... | @@ -121,4 +123,16 @@ class BrandSearch extends Brand |
121 | 123 | |
122 | 124 | return $dataProvider; |
123 | 125 | } |
126 | + | |
127 | + public static function findByAlias($alias) { | |
128 | + /** @var CategoryQuery $query */ | |
129 | + $query = Brand::find() | |
130 | + ->with('brandName') | |
131 | + ->andFilterWhere(['alias' => $alias]); | |
132 | + if (($model = $query->one()) !== null) { | |
133 | + return $model; | |
134 | + } else { | |
135 | + throw new NotFoundHttpException('The requested page does not exist.'); | |
136 | + } | |
137 | + } | |
124 | 138 | } | ... | ... |
common/modules/product/models/Category.php
... | ... | @@ -176,12 +176,12 @@ class Category extends \yii\db\ActiveRecord |
176 | 176 | } |
177 | 177 | |
178 | 178 | public function getImageFile() { |
179 | - return empty($this->image) ? null : Yii::getAlias('@imagesDir/categories/'. $this->image); | |
179 | + return empty($this->image) ? '/images/no_photo.png' : Yii::getAlias('@imagesDir/categories/'. $this->image); | |
180 | 180 | } |
181 | 181 | |
182 | 182 | public function getImageUrl() |
183 | 183 | { |
184 | - return empty($this->image) ? null : Yii::getAlias('@imagesUrl/categories/' . $this->image); | |
184 | + return empty($this->image) ? '/images/no_photo.png' : Yii::getAlias('@imagesUrl/categories/' . $this->image); | |
185 | 185 | } |
186 | 186 | |
187 | 187 | public function beforeSave($insert) | ... | ... |
common/modules/product/models/CategorySearch.php
... | ... | @@ -82,7 +82,7 @@ class CategorySearch extends Category |
82 | 82 | |
83 | 83 | $query->andFilterWhere(['like', 'alias', $this->alias]); |
84 | 84 | |
85 | - $query->orderBy(['path' => SORT_ASC, 'depth' => SORT_ASC]); | |
85 | + $query->orderBy(['path' => SORT_ASC, 'depth' => SORT_ASC, 'category_id' => SORT_ASC]); | |
86 | 86 | |
87 | 87 | return $dataProvider; |
88 | 88 | } | ... | ... |
common/modules/product/models/Product.php
... | ... | @@ -221,7 +221,7 @@ class Product extends \yii\db\ActiveRecord |
221 | 221 | if (!is_array($_variant)) { |
222 | 222 | return; |
223 | 223 | } |
224 | - if (!empty($_variant['product_variant_id'])) { | |
224 | + if (!empty($_variant['product_variant_id'])) { | |
225 | 225 | unset($todel[$_variant['product_variant_id']]); |
226 | 226 | $model = ProductVariant::findOne($_variant['product_variant_id']); |
227 | 227 | } else { | ... | ... |
common/modules/product/models/ProductSearch.php
... | ... | @@ -15,6 +15,7 @@ class ProductSearch extends Product |
15 | 15 | { |
16 | 16 | public $brand_name; |
17 | 17 | public $category_name; |
18 | + public $variant_sku; | |
18 | 19 | |
19 | 20 | /** |
20 | 21 | * @inheritdoc |
... | ... | @@ -22,9 +23,9 @@ class ProductSearch extends Product |
22 | 23 | public function rules() |
23 | 24 | { |
24 | 25 | return [ |
25 | - [['name', 'brand_name', 'category_name'], 'safe'], | |
26 | + [['name', 'brand_name', 'category_name', 'variant_sku'], 'safe'], | |
26 | 27 | [['tax_brand_id', 'product_id'], 'integer'], |
27 | - [['is_top', 'is_new'], 'boolean'], | |
28 | + [['is_top', 'is_new', 'akciya'], 'boolean'], | |
28 | 29 | ]; |
29 | 30 | } |
30 | 31 | |
... | ... | @@ -65,12 +66,18 @@ class ProductSearch extends Product |
65 | 66 | $dataProvider->setSort([ |
66 | 67 | 'attributes' => [ |
67 | 68 | 'name', |
68 | - 'brand_name', | |
69 | - 'category_name' | |
69 | + 'brand_name' => [ | |
70 | + 'asc' => ['brand_name.value' => SORT_ASC], | |
71 | + 'desc' => ['brand_name.value' => SORT_DESC], | |
72 | + 'default' => SORT_DESC, | |
73 | + 'label' => 'Brand name', | |
74 | + ], | |
75 | + 'category_name', | |
76 | + 'variant_sku', | |
70 | 77 | ] |
71 | 78 | ]); |
72 | 79 | |
73 | - $query->joinWith(['brand', 'brand.brandNames', 'categories', 'categories.categoryNames']); | |
80 | + $query->joinWith(['brand', 'brand.brandNames', 'categories', 'categories.categoryNames', 'variant']); | |
74 | 81 | |
75 | 82 | if (isset($this->is_top)) { |
76 | 83 | $query->andFilterWhere([ |
... | ... | @@ -95,7 +102,9 @@ class ProductSearch extends Product |
95 | 102 | $query->andFilterWhere(['ilike', 'name', $this->name]); |
96 | 103 | $query->andFilterWhere(['ilike', 'brand_name.value', $this->brand_name]); |
97 | 104 | $query->andFilterWhere(['ilike', 'category_name.value', $this->category_name]); |
105 | + $query->andFilterWhere(['ilike', 'product_variant.sku', $this->variant_sku]); | |
98 | 106 | |
107 | + $query->groupBy(['product.product_id']); | |
99 | 108 | $query->orderBy('product.product_id', 'DESC'); |
100 | 109 | |
101 | 110 | return $dataProvider; | ... | ... |
common/modules/product/models/ProductVariant.php
... | ... | @@ -132,6 +132,10 @@ class ProductVariant extends \yii\db\ActiveRecord |
132 | 132 | return !empty($this->image) ? $this->image->imageUrl : '/images/no_photo.png'; |
133 | 133 | } |
134 | 134 | |
135 | + public function getFullname() { | |
136 | + return empty($this->product) ? null : ($this->product->name . (empty($this->name) ? '' : ' '. $this->name)); | |
137 | + } | |
138 | + | |
135 | 139 | /** |
136 | 140 | * @return \yii\db\ActiveQuery |
137 | 141 | */ | ... | ... |
common/modules/product/models/ProductVariantSearch.php
... | ... | @@ -12,14 +12,21 @@ use yii\web\NotFoundHttpException; |
12 | 12 | */ |
13 | 13 | class ProductVariantSearch extends ProductVariant |
14 | 14 | { |
15 | + public $brand_name; | |
16 | + public $category_name; | |
17 | + public $tax_group_id; | |
18 | + public $is_top; | |
19 | + public $is_new; | |
20 | + public $akciya; | |
15 | 21 | /** |
16 | 22 | * @inheritdoc |
17 | 23 | */ |
18 | 24 | public function rules() |
19 | 25 | { |
20 | 26 | return [ |
21 | - [['name', 'sku', 'price', 'price_old', 'stock'], 'safe'], | |
27 | + [['name', 'fullname', 'sku', 'price', 'price_old', 'stock', 'fullname', 'brand_name', 'category_name'], 'safe'], | |
22 | 28 | [['product_variant_id', 'product_id'], 'integer'], |
29 | + [['is_top', 'is_new', 'akciya'], 'boolean'], | |
23 | 30 | ]; |
24 | 31 | } |
25 | 32 | |
... | ... | @@ -57,14 +64,54 @@ class ProductVariantSearch extends ProductVariant |
57 | 64 | return $dataProvider; |
58 | 65 | } |
59 | 66 | |
67 | + $dataProvider->setSort([ | |
68 | + 'attributes' => [ | |
69 | + 'name', | |
70 | + 'brand_name' => [ | |
71 | + 'asc' => ['brand_name.value' => SORT_ASC], | |
72 | + 'desc' => ['brand_name.value' => SORT_DESC], | |
73 | + 'default' => SORT_DESC, | |
74 | + 'label' => 'Brand name', | |
75 | + ], | |
76 | + 'category_name', | |
77 | + 'sku', | |
78 | + ] | |
79 | + ]); | |
80 | + | |
81 | + $query->joinWith(['product', 'product.brand.brandNames', 'product.categories', 'product.categories.categoryNames']); | |
82 | + | |
83 | + if (isset($this->is_top)) { | |
84 | + $query->andFilterWhere([ | |
85 | + 'product.is_top' => (bool)$this->is_top, | |
86 | + ]); | |
87 | + } | |
88 | + if (isset($this->is_new)) { | |
89 | + $query->andFilterWhere([ | |
90 | + 'product.is_new' => (bool)$this->is_new, | |
91 | + ]); | |
92 | + } | |
93 | + if (isset($this->akciya)) { | |
94 | + $query->andFilterWhere([ | |
95 | + 'product.akciya' => (bool)$this->akciya, | |
96 | + ]); | |
97 | + } | |
98 | + | |
60 | 99 | // grid filtering conditions |
61 | 100 | $query->andFilterWhere([ |
101 | + 'product.product_id' => $this->product_id, | |
62 | 102 | 'product_variant_id' => $this->product_variant_id, |
63 | - 'product_id' => $this->product_id, | |
64 | 103 | ]); |
65 | 104 | |
66 | - $query->andFilterWhere(['like', 'name', $this->name]) | |
67 | - ->andFilterWhere(['like', 'sku', $this->sku]); | |
105 | + if (!empty($this->fullname)) { | |
106 | + $query->orFilterWhere(['like', 'name', $this->fullname]); | |
107 | + $query->orFilterWhere(['ilike', 'product.name', $this->fullname]); | |
108 | + } | |
109 | + $query->andFilterWhere(['ilike', 'product.brand_name.value', $this->brand_name]); | |
110 | + $query->andFilterWhere(['ilike', 'product.category_name.value', $this->category_name]); | |
111 | + $query->andFilterWhere(['ilike', 'sku', $this->sku]); | |
112 | + | |
113 | + $query->groupBy(['product_variant_id']); | |
114 | + $query->orderBy('product.product_id', 'DESC'); | |
68 | 115 | |
69 | 116 | return $dataProvider; |
70 | 117 | } | ... | ... |
common/modules/product/views/manage/index.php
... | ... | @@ -34,6 +34,11 @@ $this->params['breadcrumbs'][] = $this->title; |
34 | 34 | 'attribute' => 'category_name', |
35 | 35 | 'value' => 'category.name', |
36 | 36 | ], |
37 | + [ | |
38 | + 'label' => Yii::t('product', 'SKU'), | |
39 | + 'attribute' => 'variant_sku', | |
40 | + 'value' => 'variant.sku', | |
41 | + ], | |
37 | 42 | 'variant.price', |
38 | 43 | 'variant.stock_caption', |
39 | 44 | ... | ... |
common/modules/rubrication/models/TaxGroup.php
... | ... | @@ -15,7 +15,7 @@ use Yii; |
15 | 15 | * @property string $module |
16 | 16 | * @property boolean $hierarchical |
17 | 17 | * @property string $settings |
18 | - * @property boolean is_filter | |
18 | + * @property boolean $is_filter | |
19 | 19 | * |
20 | 20 | * @property TaxGroupToGroup[] $taxGroupToGroups |
21 | 21 | * @property TaxGroupToGroup[] $taxGroupToGroups0 |
... | ... | @@ -62,7 +62,7 @@ class TaxGroup extends \yii\db\ActiveRecord |
62 | 62 | return [ |
63 | 63 | [['name', 'module'], 'required'], |
64 | 64 | [['description', 'settings'], 'string'], |
65 | - [['hierarchical'], 'boolean'], | |
65 | + [['hierarchical', 'is_filter'], 'boolean'], | |
66 | 66 | [['alias', 'module'], 'string', 'max' => 50], |
67 | 67 | [['name'], 'string', 'max' => 255], |
68 | 68 | [['group_to_category'], 'safe'] | ... | ... |
common/modules/rubrication/views/tax-group/index.php
common/modules/rubrication/views/tax-group/view.php
common/translation/ru/product.php
frontend/config/main.php
frontend/controllers/CatalogController.php
... | ... | @@ -191,7 +191,16 @@ class CatalogController extends \yii\web\Controller |
191 | 191 | |
192 | 192 | public function actionBrands() |
193 | 193 | { |
194 | - return 'actionBrands'; | |
194 | + $dataProvider = new ActiveDataProvider([ | |
195 | + 'query' => Brand::find()->joinWith('brandName')->orderBy('brand_name.value'), | |
196 | + 'pagination' => [ | |
197 | + 'pageSize' => -1, | |
198 | + ] | |
199 | + ]); | |
200 | + | |
201 | + return $this->render('brands', [ | |
202 | + 'dataProvider' => $dataProvider, | |
203 | + ]); | |
195 | 204 | } |
196 | 205 | |
197 | 206 | public function actionBrand($alias) | ... | ... |
frontend/views/basket/ajax_items.php
... | ... | @@ -7,7 +7,9 @@ use yii\helpers\Html; |
7 | 7 | <div class="basket_item"> |
8 | 8 | <?php echo $form->field($item,'['.$i.']id')->hiddenInput()->label(false); ?> |
9 | 9 | <div style="display: table-cell;vertical-align: middle;"><a href="#" data-id="<?=$item->id?>" class="delete_button" style="margin-right:20px;"></a></div> |
10 | - <div style="width:100px;height:100px;display: table-cell;vertical-align: middle; border:1px solid #d2d2d2;text-align:center;margin-left:10px;margin-right:10px;"><img src="<?=Yii::$app->request->baseUrl.'/upload/products/ico/'.$item->image->image?>" style="margin:0;" width="100"></div> | |
10 | + <div style="width:100px;height:100px;display: table-cell;vertical-align: middle; border:1px solid #d2d2d2;text-align:center;margin-left:10px;margin-right:10px;"> | |
11 | + <?= \common\components\artboximage\ArtboxImageHelper::getImage($item->imageUrl, 'product_basket')?> | |
12 | + </div> | |
11 | 13 | <div style="display: table-cell;vertical-align: middle; font-size:15px;width:210px; font-weight:normal;padding-left:15px;"> |
12 | 14 | <div><?=$item->product_name?></div> |
13 | 15 | <div style="text-transform:none; margin-top:20px; font-weight:bold;"> | ... | ... |
frontend/views/basket/index.php
... | ... | @@ -77,7 +77,9 @@ $('#order-delivery input[type=\"radio\"]').click(function(){ |
77 | 77 | |
78 | 78 | <?php foreach($basket_mods as $i=>$item):?> |
79 | 79 | <div class="basket_item"> |
80 | - <a href="<?=Url::to(['products/show','translit_rubric'=>$item->translit_rubric,'translit'=>$item->translit,'id'=>$item->product_id])?>"><img src="<?=Yii::$app->request->baseUrl.'/upload/products/ico/'.$item->image->image?>" border="0" width="90" height="120" align="left" /></a> | |
80 | + <a href="<?=Url::to(['products/show','translit_rubric'=>$item->translit_rubric,'translit'=>$item->translit,'id'=>$item->product_id])?>"> | |
81 | + <?= \common\components\artboximage\ArtboxImageHelper::getImage($item->imageUrl, 'product_basket')?> | |
82 | + </a> | |
81 | 83 | <div class="info"> |
82 | 84 | <a href="<?=Url::to(['products/show','translit_rubric'=>$item->translit_rubric,'translit'=>$item->translit,'id'=>$item->product_id])?>" class="link2"><?=$item->product_name?></a> |
83 | 85 | <p>Код: <?=$item->sku?>, цвет: <?=$item->name?></p> | ... | ... |
1 | +<?php | |
2 | +use yii\widgets\Breadcrumbs; | |
3 | +use yii\grid\GridView; | |
4 | + | |
5 | +$this->params['breadcrumbs'][] = Yii::t('product', 'Brands'); | |
6 | + | |
7 | +$this->params['seo']['seo_text'] = 'Brands SEO-text'; | |
8 | +$this->params['seo']['h1'] = Yii::t('product', 'Brands'); | |
9 | +$this->params['seo']['description'] = 'Brands DESCRIPTION'; | |
10 | +$this->params['seo']['fields']['name'] = 'Brands NAME FROM FIELD'; | |
11 | +$this->params['seo']['key']= 'brands'; | |
12 | +?> | |
13 | + | |
14 | +<nav class="bread-crumbs"> | |
15 | + <?= Breadcrumbs::widget ([ | |
16 | + 'links' => $this->params['breadcrumbs'], | |
17 | +]) | |
18 | + ?> | |
19 | +<div class="both"></div> | |
20 | +</nav> | |
21 | + | |
22 | +<div class="loyout"> | |
23 | + <h1><?= $this->params['seo']['h1']?></h1> | |
24 | + <ul class="brends_list"> | |
25 | + <?php foreach($dataProvider->models as $brand) :?> | |
26 | + <li> | |
27 | + <a href="<?= \yii\helpers\Url::to(['catalog/brands', 'brand' => $brand])?>"><?= \common\components\artboximage\ArtboxImageHelper::getImage($brand->imageUrl, 'brand_item')?></a> | |
28 | + <br> | |
29 | + <a href="<?= \yii\helpers\Url::to(['catalog/brands', 'brand' => $brand])?>" class="name"><?= $brand->name?></a> | |
30 | + </li> | |
31 | + <?php endforeach?> | |
32 | + </ul> | |
33 | + <div class="both"></div> | |
34 | +</div> | |
0 | 35 | \ No newline at end of file | ... | ... |
frontend/views/iam/share.php
... | ... | @@ -55,7 +55,9 @@ $this->registerJs(" |
55 | 55 | <?foreach($item->shareList as $item_p):if(!empty($item_p->product)):?> |
56 | 56 | <div class="order"> |
57 | 57 | <div><a href="<?=Url::to(['iam/share','deleteID'=>$item_p->id])?>" class="delete_button"></a></div> |
58 | - <div class="pixbox"><a href="<?=Url::to(['products/show','translit_rubric'=>$item_p->product->catalog->translit,'translit'=>$item_p->product->translit,'id'=>$item_p->product->id])?>"><img width="120" src="<?=Yii::$app->request->baseUrl.'/upload/products/ico/'.$item_p->product->imageAvator?>"></a></div> | |
58 | + <div class="pixbox"><a href="<?=Url::to(['products/show','translit_rubric'=>$item_p->product->catalog->translit,'translit'=>$item_p->product->translit,'id'=>$item_p->product->id])?>"> | |
59 | + <?= \common\components\artboximage\ArtboxImageHelper::getImage($item_p->product->imageUrl, 'iam')?> | |
60 | + </div> | |
59 | 61 | <div class="order_title"><a href="<?=Url::to(['products/show','translit_rubric'=>$item_p->product->catalog->translit,'translit'=>$item_p->product->translit,'id'=>$item_p->product->id])?>" class="name"><?=$item_p->product->name?></a></div> |
60 | 62 | <?if(!empty($item_p->product->cost->cost)):?><div class="order_price"><span><?=$item_p->product->cost->cost?></span> грн.</div><?endif;?> |
61 | 63 | <p class="note"></p> | ... | ... |
frontend/views/layouts/main-menu.php
... | ... | @@ -7,6 +7,6 @@ use yii\helpers\Url; |
7 | 7 | <div class="fr"> |
8 | 8 | <ul> |
9 | 9 | <li class="akciya"><a href="<?= Url::to (['event/index',]) ?>">Акции</a></li> |
10 | - <li class="brands"><a href="<?= Url::to (['brand/index']) ?>">Бренды</a></li> | |
10 | + <li class="brands"><a href="<?= Url::to (['catalog/brands']) ?>">Бренды</a></li> | |
11 | 11 | </ul> |
12 | 12 | </div> | ... | ... |
frontend/web/css/style.css
... | ... | @@ -244,11 +244,13 @@ ul.product_colors li img{border:1px solid #d2d2d2;} |
244 | 244 | } |
245 | 245 | .help-block{color:red;font-size:12px;margin-bottom:5px;} |
246 | 246 | |
247 | -.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;} | |
247 | +.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;clear: both} | |
248 | 248 | .basket_item img{margin-right:20px;} |
249 | 249 | .basket_item .count{margin:20px 0px;} |
250 | 250 | .basket_item .fr{margin-top:5px;} |
251 | 251 | .basket_item .info{overflow:hidden;} |
252 | +.basket_item > a{display: block; | |
253 | + float: left;} | |
252 | 254 | 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;} |
253 | 255 | a.del:hover{color:#a52828;text-decoration: underline;} |
254 | 256 | ... | ... |