Commit 4ef97d76a87096ae33e243a7437710465380a781

Authored by Administrator
1 parent 7a686bc3

big commti

backend/controllers/ArticlesController.php
@@ -81,18 +81,7 @@ class ArticlesController extends Controller @@ -81,18 +81,7 @@ class ArticlesController extends Controller
81 81
82 if ($model->load(Yii::$app->request->post())) { 82 if ($model->load(Yii::$app->request->post())) {
83 83
84 - if ( ($image = UploadedFile::getInstance($model, 'image')) ) {  
85 - $model->image = $image->name;  
86 - }  
87 -  
88 - $imgDir = Yii::getAlias('@storage/articles/');  
89 -  
90 - if(!is_dir($imgDir)) {  
91 - mkdir($imgDir, 0755, true);  
92 - }  
93 - if ($model->save() && $image) {  
94 - $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name));  
95 - } 84 + $model->save();
96 85
97 return $this->redirect(['view', 'id' => $model->id]); 86 return $this->redirect(['view', 'id' => $model->id]);
98 } else { 87 } else {
@@ -113,18 +102,7 @@ class ArticlesController extends Controller @@ -113,18 +102,7 @@ class ArticlesController extends Controller
113 $model = $this->findModel($id); 102 $model = $this->findModel($id);
114 103
115 if ($model->load(Yii::$app->request->post())) { 104 if ($model->load(Yii::$app->request->post())) {
116 - if ( ($image = UploadedFile::getInstance($model, 'image')) ) {  
117 - $model->image = $image->name;  
118 - }  
119 -  
120 - $imgDir = Yii::getAlias('@storage/articles/');  
121 -  
122 - if(!is_dir($imgDir)) {  
123 - mkdir($imgDir, 0755, true);  
124 - }  
125 - if ($model->save() && $image) {  
126 - $image->saveAs(Yii::getAlias('@storage/articles/' . $image->name));  
127 - } 105 + $model->save();
128 106
129 return $this->redirect(['view', 'id' => $model->id]); 107 return $this->redirect(['view', 'id' => $model->id]);
130 } else { 108 } else {
backend/controllers/SliderImageController.php
@@ -85,19 +85,7 @@ class SliderImageController extends Controller @@ -85,19 +85,7 @@ class SliderImageController extends Controller
85 85
86 if ($model->load(Yii::$app->request->post())) { 86 if ($model->load(Yii::$app->request->post())) {
87 $model->slider_id = $slider_id; 87 $model->slider_id = $slider_id;
88 - if ( ($image = UploadedFile::getInstance($model, 'image')) ) {  
89 - $model->image = $image->name;  
90 - }  
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 -  
99 - $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));  
100 - } 88 + $model->save();
101 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); 89 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
102 } else { 90 } else {
103 91
@@ -126,23 +114,7 @@ class SliderImageController extends Controller @@ -126,23 +114,7 @@ class SliderImageController extends Controller
126 114
127 115
128 116
129 - if ( ($image = UploadedFile::getInstance($model, 'image')) ) {  
130 - $model->image = $image->name;  
131 - }  
132 -  
133 - if(!$model->image){  
134 - $model->image = $model->getOldAttribute('image');  
135 - }  
136 -  
137 - if ($model->save() && $image) {  
138 - $imgDir = Yii::getAlias('@storage/slider/');  
139 -  
140 - if(!is_dir($imgDir)) {  
141 - mkdir($imgDir, 0755, true);  
142 - }  
143 -  
144 - $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));  
145 - } 117 + $model->save();
146 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); 118 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
147 } else { 119 } else {
148 120
backend/views/banner/_form.php
@@ -12,7 +12,10 @@ use yii\widgets\ActiveForm; @@ -12,7 +12,10 @@ use yii\widgets\ActiveForm;
12 12
13 <div class="banner-form"> 13 <div class="banner-form">
14 14
15 - <?php $form = ActiveForm::begin(); ?> 15 + <?php $form = ActiveForm::begin([
  16 + 'enableClientValidation' => false,
  17 + 'options' => ['enctype' => 'multipart/form-data']
  18 + ]); ?>
16 19
17 20
18 <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?> 21 <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?>
@@ -31,27 +34,24 @@ use yii\widgets\ActiveForm; @@ -31,27 +34,24 @@ use yii\widgets\ActiveForm;
31 ] 34 ]
32 ])) ?> 35 ])) ?>
33 36
34 - <?= $form->field($model, 'width')->textInput(['maxlength' => true]) ?>  
35 -  
36 - <?= $form->field($model, 'height')->textInput(['maxlength' => true]) ?>  
37 -  
38 - <p id="save_image_widget_settings" class = "btn btn-primary" >Применить настройки</p>  
39 37
40 <div id="image_widget_block"> 38 <div id="image_widget_block">
41 - <?php if(!empty($model->image)){  
42 - echo ImageUploader::widget([  
43 - 'model'=> $model,  
44 - 'field'=>'image',  
45 - 'size' => [  
46 - [  
47 - 'width'=>$model->width,  
48 - 'height'=>$model->height,  
49 - ],  
50 - ],  
51 - 'gallery' =>$model->image,  
52 - 'name' => "Загрузить баннер"  
53 - ]);  
54 - }?> 39 +
  40 + <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
  41 + 'language' => 'ru',
  42 + 'options' => [
  43 + 'accept' => 'image/*',
  44 + 'multiple' => false,
  45 + ],
  46 + 'pluginOptions' => [
  47 + 'allowedFileExtensions' => ['jpg', 'gif', 'png'],
  48 + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '',
  49 + 'overwriteInitial' => true,
  50 + 'showRemove' => false,
  51 + 'showUpload' => false,
  52 + 'previewFileType' => 'image',
  53 + ],
  54 + ]); ?>
55 </div> 55 </div>
56 56
57 <div class="form-group"> 57 <div class="form-group">
backend/views/bg/_form.php
@@ -10,13 +10,30 @@ use yii\widgets\ActiveForm; @@ -10,13 +10,30 @@ use yii\widgets\ActiveForm;
10 10
11 <div class="bg-form"> 11 <div class="bg-form">
12 12
13 - <?php $form = ActiveForm::begin(); ?> 13 + <?php $form = ActiveForm::begin([
  14 + 'enableClientValidation' => false,
  15 + 'options' => ['enctype' => 'multipart/form-data']
  16 + ]); ?>
14 17
15 <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> 18 <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
16 19
17 <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?> 20 <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?>
18 21
19 - <?= $form->field($model, 'image')->textInput(['maxlength' => true]) ?> 22 + <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
  23 + 'language' => 'ru',
  24 + 'options' => [
  25 + 'accept' => 'image/*',
  26 + 'multiple' => false,
  27 + ],
  28 + 'pluginOptions' => [
  29 + 'allowedFileExtensions' => ['jpg', 'gif', 'png'],
  30 + 'initialPreview' => !empty($model->imageUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'list') : '',
  31 + 'overwriteInitial' => true,
  32 + 'showRemove' => false,
  33 + 'showUpload' => false,
  34 + 'previewFileType' => 'image',
  35 + ],
  36 + ]); ?>
20 37
21 <div class="form-group"> 38 <div class="form-group">
22 <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 39 <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
backend/views/brand/_form.php
@@ -43,6 +43,8 @@ use yii\widgets\ActiveForm; @@ -43,6 +43,8 @@ use yii\widgets\ActiveForm;
43 43
44 <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?> 44 <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?>
45 45
  46 + <?= $form->field($model, 'in_menu')->checkbox()?>
  47 +
46 <div class="form-group"> 48 <div class="form-group">
47 <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 49 <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
48 <?php if ($model->isNewRecord) :?> 50 <?php if ($model->isNewRecord) :?>
backend/views/brand/index.php
1 <?php 1 <?php
2 2
  3 +use common\components\artboximage\ArtboxImageHelper;
3 use yii\helpers\Html; 4 use yii\helpers\Html;
4 use yii\grid\GridView; 5 use yii\grid\GridView;
5 6
@@ -27,10 +28,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -27,10 +28,10 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
27 'name', 28 'name',
28 'alias', 29 'alias',
29 [ 30 [
30 - 'attribute' => 'title',  
31 - 'format' => 'html', 31 + 'attribute' => 'image',
  32 + 'format' => 'image',
32 'value' => function($data) { 33 'value' => function($data) {
33 - return Html::img($data->imageUrl, ['width'=>'100']); 34 + return ArtboxImageHelper::getImageSrc($data->imageUrl, 'brand_item');
34 }, 35 },
35 ], 36 ],
36 37
backend/views/customer/_form.php
@@ -12,11 +12,10 @@ use yii\widgets\ActiveForm; @@ -12,11 +12,10 @@ use yii\widgets\ActiveForm;
12 12
13 <?php $form = ActiveForm::begin(); ?> 13 <?php $form = ActiveForm::begin(); ?>
14 14
15 - <?= $form->field($model, 'id')->textInput() ?>  
16 15
17 <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?> 16 <?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
18 17
19 - <?= $form->field($model, 'password')->passwordInput(['maxlength' => true]) ?> 18 +
20 19
21 <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> 20 <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
22 21
@@ -26,8 +25,6 @@ use yii\widgets\ActiveForm; @@ -26,8 +25,6 @@ use yii\widgets\ActiveForm;
26 25
27 <?= $form->field($model, 'date_time')->textInput() ?> 26 <?= $form->field($model, 'date_time')->textInput() ?>
28 27
29 - <?= $form->field($model, 'sex')->textInput(['maxlength' => true]) ?>  
30 -  
31 <?= $form->field($model, 'birth_day')->textInput() ?> 28 <?= $form->field($model, 'birth_day')->textInput() ?>
32 29
33 <?= $form->field($model, 'birth_month')->textInput() ?> 30 <?= $form->field($model, 'birth_month')->textInput() ?>
backend/views/customer/index.php
@@ -26,7 +26,6 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -26,7 +26,6 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
26 26
27 'id', 27 'id',
28 'username', 28 'username',
29 - 'password',  
30 'name', 29 'name',
31 'surname', 30 'surname',
32 // 'phone', 31 // 'phone',
backend/views/slider-image/_form.php
@@ -16,6 +16,7 @@ use yii\widgets\ActiveForm; @@ -16,6 +16,7 @@ use yii\widgets\ActiveForm;
16 16
17 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> 17 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
18 18
  19 +
19 <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ 20 <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
20 'model' => $model, 21 'model' => $model,
21 'attribute' => 'image', 22 'attribute' => 'image',
common/behaviors/SaveImgBehavior.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\behaviors;
  4 +
  5 +use common\modules\comment\models\CommentModel;
  6 +use yii\base\Behavior;
  7 +use yii\db\ActiveRecord;
  8 +use yii\web\UploadedFile;
  9 +/**
  10 + * Class RatingBehavior
  11 + * @property CommentModel $owner
  12 + * @package common\behaviors
  13 + */
  14 +class SaveImgBehavior extends Behavior
  15 +{
  16 +
  17 +
  18 + public $directory;
  19 +
  20 + public function events()
  21 + {
  22 + return [
  23 + ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeUpdate',
  24 + ActiveRecord::EVENT_BEFORE_INSERT => 'beforeInsert',
  25 + ];
  26 + }
  27 +
  28 + public function beforeUpdate($event)
  29 + {
  30 +
  31 +
  32 + if ( ($image = UploadedFile::getInstance($this->owner, 'image')) ) {
  33 + $this->owner->image = $image->name;
  34 + }
  35 +
  36 + if(!$this->owner->image){
  37 + $this->owner->image = $this->owner->getOldAttribute('image');
  38 + }
  39 +
  40 +
  41 + if ($image) {
  42 + $imgDir = \Yii::getAlias('@storage/'.$this->directory.'/');
  43 +
  44 + if(!is_dir($imgDir)) {
  45 + mkdir($imgDir, 0755, true);
  46 + }
  47 +
  48 + $image->saveAs(\Yii::getAlias('@storage/'.$this->directory.'/' . $image->name));
  49 + }
  50 + }
  51 +
  52 +
  53 + public function beforeInsert($event)
  54 + {
  55 +
  56 +
  57 + if ( ($image = UploadedFile::getInstance($this->owner, 'image')) ) {
  58 + $this->owner->image = $image->name;
  59 + }
  60 +
  61 +
  62 +
  63 + if ($image) {
  64 + $imgDir = \Yii::getAlias('@storage/'.$this->directory.'/');
  65 +
  66 + if(!is_dir($imgDir)) {
  67 + mkdir($imgDir, 0755, true);
  68 + }
  69 +
  70 + $image->saveAs(\Yii::getAlias('@storage/'.$this->directory.'/' . $image->name));
  71 + }
  72 + }
  73 +
  74 +
  75 +
  76 + public function getImageFile() {
  77 + return empty($this->owner->image) ? null : '/storage/'.$this->directory.'/'. $this->owner->image;
  78 + }
  79 +
  80 + public function getImageUrl() {
  81 + return empty($this->owner->image) ? null : '/storage/'.$this->directory.'/'. $this->owner->image;
  82 + }
  83 +}
0 \ No newline at end of file 84 \ No newline at end of file
common/config/main.php
@@ -119,15 +119,11 @@ return [ @@ -119,15 +119,11 @@ return [
119 ], 119 ],
120 'brand_item' => [ 120 'brand_item' => [
121 'resize' => [ 121 'resize' => [
122 - 'width' => 150,  
123 - 'height' => 150,  
124 - 'master' => null  
125 - ],  
126 - 'crop' => [  
127 - 'width' => 150,  
128 - 'height' => 150, 122 + 'width' => 125,
  123 + 'height' => 54,
129 'master' => null 124 'master' => null
130 ], 125 ],
  126 +
131 ], 127 ],
132 'mainmenu' => [ 128 'mainmenu' => [
133 'resize' => [ 129 'resize' => [
common/models/Articles.php
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 namespace common\models; 3 namespace common\models;
4 4
5 use common\behaviors\RatingBehavior; 5 use common\behaviors\RatingBehavior;
  6 +use common\behaviors\SaveImgBehavior;
6 use common\modules\comment\models\CommentModel; 7 use common\modules\comment\models\CommentModel;
7 use Yii; 8 use Yii;
8 9
@@ -33,12 +34,18 @@ class Articles extends \yii\db\ActiveRecord @@ -33,12 +34,18 @@ class Articles extends \yii\db\ActiveRecord
33 return 'articles'; 34 return 'articles';
34 } 35 }
35 36
  37 +
  38 +
36 /** 39 /**
37 * @inheritdoc 40 * @inheritdoc
38 */ 41 */
39 public function behaviors() 42 public function behaviors()
40 { 43 {
41 return [ 44 return [
  45 + [
  46 + 'class' => SaveImgBehavior::className(),
  47 + 'directory' => 'articles'
  48 + ],
42 'slug' => [ 49 'slug' => [
43 'class' => 'common\behaviors\Slug', 50 'class' => 'common\behaviors\Slug',
44 'in_attribute' => 'title', 51 'in_attribute' => 'title',
@@ -84,15 +91,6 @@ class Articles extends \yii\db\ActiveRecord @@ -84,15 +91,6 @@ class Articles extends \yii\db\ActiveRecord
84 ]; 91 ];
85 } 92 }
86 93
87 - public function getImageFile() {  
88 - return empty($this->image) ? null : Yii::getAlias('@imagesDir/articles/'. $this->image);  
89 - }  
90 -  
91 - public function getImageUrl()  
92 - {  
93 - return empty($this->image) ? null : Yii::getAlias('@imagesUrl/articles/' . $this->image);  
94 - }  
95 -  
96 public function recalculateRating() { 94 public function recalculateRating() {
97 /** 95 /**
98 * @var ArticleToRating $averageRating 96 * @var ArticleToRating $averageRating
common/models/Banner.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace common\models; 3 namespace common\models;
4 4
  5 +use common\behaviors\SaveImgBehavior;
5 use Yii; 6 use Yii;
6 7
7 /** 8 /**
@@ -26,6 +27,21 @@ class Banner extends \yii\db\ActiveRecord @@ -26,6 +27,21 @@ class Banner extends \yii\db\ActiveRecord
26 return 'banner'; 27 return 'banner';
27 } 28 }
28 29
  30 +
  31 +
  32 + /**
  33 + * @inheritdoc
  34 + */
  35 + public function behaviors()
  36 + {
  37 + return [
  38 + [
  39 + 'class' => SaveImgBehavior::className(),
  40 + 'directory' => 'banner'
  41 + ],
  42 + ];
  43 + }
  44 +
29 /** 45 /**
30 * @inheritdoc 46 * @inheritdoc
31 */ 47 */
common/models/Bg.php
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 2
3 namespace common\models; 3 namespace common\models;
4 4
  5 +use common\behaviors\SaveImgBehavior;
  6 +
5 class Bg extends \yii\db\ActiveRecord 7 class Bg extends \yii\db\ActiveRecord
6 { 8 {
7 public $old_image; 9 public $old_image;
@@ -10,7 +12,20 @@ class Bg extends \yii\db\ActiveRecord @@ -10,7 +12,20 @@ class Bg extends \yii\db\ActiveRecord
10 { 12 {
11 return 'bg'; 13 return 'bg';
12 } 14 }
13 - 15 +
  16 + /**
  17 + * @inheritdoc
  18 + */
  19 + public function behaviors()
  20 + {
  21 + return [
  22 + [
  23 + 'class' => SaveImgBehavior::className(),
  24 + 'directory' => 'bg'
  25 + ],
  26 + ];
  27 + }
  28 +
14 public function rules() 29 public function rules()
15 { 30 {
16 return [ 31 return [
common/models/Customer.php
@@ -88,30 +88,6 @@ class Customer extends User implements \yii\web\IdentityInterface @@ -88,30 +88,6 @@ class Customer extends User implements \yii\web\IdentityInterface
88 /** 88 /**
89 * @return \yii\db\ActiveQuery 89 * @return \yii\db\ActiveQuery
90 */ 90 */
91 - public function getArtboxComments()  
92 - {  
93 - return $this->hasMany(ArtboxComment::className(), ['user_id' => 'id']);  
94 - }  
95 -  
96 - /**  
97 - * @return \yii\db\ActiveQuery  
98 - */  
99 - public function getArtboxCommentRatings()  
100 - {  
101 - return $this->hasMany(ArtboxCommentRating::className(), ['user_id' => 'id']);  
102 - }  
103 -  
104 - /**  
105 - * @return \yii\db\ActiveQuery  
106 - */  
107 - public function getArtboxLikes()  
108 - {  
109 - return $this->hasMany(ArtboxLike::className(), ['user_id' => 'id']);  
110 - }  
111 -  
112 - /**  
113 - * @return \yii\db\ActiveQuery  
114 - */  
115 public function getShares() 91 public function getShares()
116 { 92 {
117 return $this->hasMany(Share::className(), ['user_id' => 'id']); 93 return $this->hasMany(Share::className(), ['user_id' => 'id']);
common/models/CustomerSearch.php
@@ -18,8 +18,12 @@ class CustomerSearch extends Customer @@ -18,8 +18,12 @@ class CustomerSearch extends Customer
18 public function rules() 18 public function rules()
19 { 19 {
20 return [ 20 return [
21 - [['id', 'birth_day', 'birth_month', 'birth_year', 'group_id'], 'integer'],  
22 - [['username', 'password', 'name', 'surname', 'phone', 'date_time', 'sex', 'body'], 'safe'], 21 + [['date_time'], 'safe'],
  22 + [['birth_day', 'birth_month', 'birth_year', 'group_id', 'status', 'created_at', 'updated_at'], 'integer'],
  23 + [['body'], 'string'],
  24 + [['status'],'default', 'value' => '10'],
  25 + [['username', 'name', 'surname', 'phone', 'email', 'password_reset_token','username', 'password_hash'], 'string', 'max' => 255],
  26 + [['gender', 'auth_key'], 'string', 'max' => 32],
23 ]; 27 ];
24 } 28 }
25 29
@@ -68,11 +72,9 @@ class CustomerSearch extends Customer @@ -68,11 +72,9 @@ class CustomerSearch extends Customer
68 ]); 72 ]);
69 73
70 $query->andFilterWhere(['like', 'username', $this->username]) 74 $query->andFilterWhere(['like', 'username', $this->username])
71 - ->andFilterWhere(['like', 'password', $this->password])  
72 ->andFilterWhere(['like', 'name', $this->name]) 75 ->andFilterWhere(['like', 'name', $this->name])
73 ->andFilterWhere(['like', 'surname', $this->surname]) 76 ->andFilterWhere(['like', 'surname', $this->surname])
74 ->andFilterWhere(['like', 'phone', $this->phone]) 77 ->andFilterWhere(['like', 'phone', $this->phone])
75 - ->andFilterWhere(['like', 'sex', $this->sex])  
76 ->andFilterWhere(['like', 'body', $this->body]); 78 ->andFilterWhere(['like', 'body', $this->body]);
77 79
78 return $dataProvider; 80 return $dataProvider;
common/models/SliderImage.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace common\models; 3 namespace common\models;
4 4
  5 +use common\behaviors\SaveImgBehavior;
5 use Yii; 6 use Yii;
6 7
7 /** 8 /**
@@ -20,6 +21,23 @@ use Yii; @@ -20,6 +21,23 @@ use Yii;
20 */ 21 */
21 class SliderImage extends \yii\db\ActiveRecord 22 class SliderImage extends \yii\db\ActiveRecord
22 { 23 {
  24 +
  25 +
  26 +
  27 + /**
  28 + * @inheritdoc
  29 + */
  30 + public function behaviors()
  31 + {
  32 + return [
  33 + [
  34 + 'class' => SaveImgBehavior::className(),
  35 + 'directory' => 'slider'
  36 + ]
  37 + ];
  38 + }
  39 +
  40 +
23 /** 41 /**
24 * @inheritdoc 42 * @inheritdoc
25 */ 43 */
@@ -57,6 +75,8 @@ class SliderImage extends \yii\db\ActiveRecord @@ -57,6 +75,8 @@ class SliderImage extends \yii\db\ActiveRecord
57 ]; 75 ];
58 } 76 }
59 77
  78 +
  79 +
60 /** 80 /**
61 * @return \yii\db\ActiveQuery 81 * @return \yii\db\ActiveQuery
62 */ 82 */
@@ -65,12 +85,6 @@ class SliderImage extends \yii\db\ActiveRecord @@ -65,12 +85,6 @@ class SliderImage extends \yii\db\ActiveRecord
65 return $this->hasOne(Slider::className(), ['slider_id' => 'slider_id']); 85 return $this->hasOne(Slider::className(), ['slider_id' => 'slider_id']);
66 } 86 }
67 87
68 - public function getImageFile() {  
69 - return empty($this->image) ? null : '/storage/slider/'. $this->image;  
70 - }  
71 88
72 - public function getImageUrl() {  
73 - return empty($this->image) ? null : '/storage/slider/'. $this->image;  
74 - }  
75 89
76 } 90 }
common/modules/product/models/Brand.php
@@ -60,6 +60,7 @@ class Brand extends \yii\db\ActiveRecord @@ -60,6 +60,7 @@ class Brand extends \yii\db\ActiveRecord
60 return [ 60 return [
61 [['name'], 'string'], 61 [['name'], 'string'],
62 [['brand_name_id'], 'integer'], 62 [['brand_name_id'], 'integer'],
  63 + [['in_menu'], 'boolean'],
63 [['meta_desc', 'seo_text'], 'string'], 64 [['meta_desc', 'seo_text'], 'string'],
64 [['alias', 'name'], 'string', 'max' => 250], 65 [['alias', 'name'], 'string', 'max' => 250],
65 [['meta_title', 'image'], 'string', 'max' => 255], 66 [['meta_title', 'image'], 'string', 'max' => 255],
@@ -85,6 +86,7 @@ class Brand extends \yii\db\ActiveRecord @@ -85,6 +86,7 @@ class Brand extends \yii\db\ActiveRecord
85 'meta_desc' => Yii::t('product', 'Meta Desc'), 86 'meta_desc' => Yii::t('product', 'Meta Desc'),
86 'meta_robots' => Yii::t('product', 'Meta Robots'), 87 'meta_robots' => Yii::t('product', 'Meta Robots'),
87 'seo_text' => Yii::t('product', 'Seo Text'), 88 'seo_text' => Yii::t('product', 'Seo Text'),
  89 + 'in_menu' => Yii::t('product', 'Выводить в меню'),
88 ]; 90 ];
89 } 91 }
90 92
frontend/controllers/CatalogController.php
@@ -164,19 +164,19 @@ class CatalogController extends \yii\web\Controller @@ -164,19 +164,19 @@ class CatalogController extends \yii\web\Controller
164 ]); 164 ]);
165 } 165 }
166 166
167 - public function actionBrands()  
168 - {  
169 - $dataProvider = new ActiveDataProvider([  
170 - 'query' => Brand::find()->orderBy('name'),  
171 - 'pagination' => [  
172 - 'pageSize' => -1,  
173 - ]  
174 - ]);  
175 -  
176 - return $this->render('brands', [  
177 - 'dataProvider' => $dataProvider,  
178 - ]);  
179 - } 167 +// public function actionBrands()
  168 +// {
  169 +// $dataProvider = new ActiveDataProvider([
  170 +// 'query' => Brand::find()->orderBy('name'),
  171 +// 'pagination' => [
  172 +// 'pageSize' => -1,
  173 +// ]
  174 +// ]);
  175 +//
  176 +// return $this->render('brands', [
  177 +// 'dataProvider' => $dataProvider,
  178 +// ]);
  179 +// }
180 180
181 public function actionBrand($brand) 181 public function actionBrand($brand)
182 { 182 {
frontend/views/catalog/brand.php 0 → 100755
  1 +<?php
  2 +/**
  3 + * @var $productProvider \yii\data\ActiveDataProvider
  4 + * @var View $this
  5 + */
  6 +use frontend\widgets\FilterWidget;
  7 +use frontend\widgets\Seo;
  8 +use yii\helpers\Url;
  9 +use yii\web\View;
  10 +use yii\widgets\ListView;
  11 +$this->params['seo']['title'] = !empty($category->meta_title) ? $category->meta_title : '';
  12 +
  13 +$this->params['seo']['fields']['meta-title'] = $category->meta_title;
  14 +$this->params['seo']['h1'] = !empty($category->h1) ? $category->h1 : $category->name;
  15 +$this->params['seo']['seo_text'] = $category->seo_text;
  16 +$this->params['seo']['description'] = $category->meta_desc;
  17 +$this->params['seo']['meta'] = $category->meta_robots;
  18 +$this->params['seo']['category_name'] = $category->name;
  19 +
  20 +$this->params['breadcrumbs'][] = $category->name;
  21 +?>
  22 +<!-- Табы для слайдера -->
  23 +<div class="bigSlidertabs fixed" style="position:fixed;">
  24 + <div class="block-100">
  25 + <div class="tab1">
  26 + <a href="actionlist.htm">
  27 + <div class="tab_bg_1"></div>
  28 + <p>В данный момент у нас проходит <a href="actionlist.htm">25 акций</p></a>
  29 + </a>
  30 + </div>
  31 + <!--
  32 + <div class="tab2" style="display: none;">
  33 + <div class="tab_bg_2"></div>
  34 + <p>Поступило на продажу <a href="#">10 новинок</a></p>
  35 + </div>
  36 + -->
  37 + </div>
  38 +</div>
  39 +<div class="container">
  40 + <div class="block-25" style="position: relative;">
  41 +
  42 +
  43 +
  44 + <div class="columnLeftInfo">
  45 + <!-- del_columnLeftInfo -->
  46 +
  47 +
  48 +
  49 +
  50 +
  51 + <a href="http://ventolux.ua/"><img src="http://www.linija-svitla.ua/res/custom/images/banner/ventolux1.jpg"></a><br><br>
  52 +
  53 +
  54 + <table border="0" cellspacing="0" cellpadding="0" class="boxGen articleBox">
  55 + <tr class="bxhead">
  56 + <th class="bxhl"></th>
  57 + <th class="bxhc"><div class="h3">
  58 + <a href="view-articles/">Статьи</a>
  59 + </div></th>
  60 +
  61 + <th class="bxhr"></th>
  62 + </tr>
  63 +
  64 + <tr class="bxdelim">
  65 + <td></td>
  66 + <td></td>
  67 + <td></td>
  68 + </tr>
  69 + <tr class="bxmiddle">
  70 + <td class="bxl"></td>
  71 + <td class="bxc"> <div width="100%" class="articlesBox"><!-- cats_table-->
  72 + <div width="100%">
  73 + <div class="articleItem">
  74 + <span class="image">
  75 + </span>
  76 + <span align="left" class="title">
  77 + <a href="liniya-sveta-predstavila-trendovye-modeli-na-interior-mebel-85.htm" >
  78 + Линия света представила трендовые модели на Interior Mebel
  79 + </a>
  80 + </span>
  81 +
  82 + <div align="left" class="desc">
  83 + <p>В Киеве прошла выставка Interior Mebel, которая уже традиционно собирает лучшие образцы дизайна интерьера. На...
  84 + <a href="liniya-sveta-predstavila-trendovye-modeli-na-interior-mebel-85.htm" >
  85 + подробнее
  86 + </a>
  87 + </div>
  88 +
  89 + </div>
  90 +
  91 +
  92 + <div class="articleItem">
  93 + <span class="image">
  94 + </span>
  95 + <span align="left" class="title">
  96 + <a href="svetodiodnoe-osveschenie-light-topps-svetodiodnye-lampochki-lampy-colon-kupit-dlya-doma-ceny-v-ukraine-84.htm" >
  97 + Светодиодное освещение Light Topps | Светодиодные...
  98 + </a>
  99 + </span>
  100 +
  101 + <div align="left" class="desc">
  102 + О светодиодных лампах и светильниках, в которых используются светодиодные модули, написано немало и наверняка уже...
  103 + <a href="svetodiodnoe-osveschenie-light-topps-svetodiodnye-lampochki-lampy-colon-kupit-dlya-doma-ceny-v-ukraine-84.htm" >
  104 + подробнее
  105 + </a>
  106 + </div>
  107 +
  108 + </div>
  109 +
  110 +
  111 + <div class="articleItem">
  112 + <span class="image">
  113 + </span>
  114 + <span align="left" class="title">
  115 + <a href="lyustry-potolochnye-novye-vozmojnosti-upravleniya-svetom-82.htm" >
  116 + Люстры потолочные. Новые возможности управления светом
  117 + </a>
  118 + </span>
  119 +
  120 + <div align="left" class="desc">
  121 + Люстры потолочные оснащенные пультом дистанционного управления, позволяют включать/выключать, а также регулировать...
  122 + <a href="lyustry-potolochnye-novye-vozmojnosti-upravleniya-svetom-82.htm" >
  123 + подробнее
  124 + </a>
  125 + </div>
  126 +
  127 + </div>
  128 +
  129 +
  130 +
  131 +
  132 +
  133 +
  134 +
  135 +
  136 +
  137 +
  138 + <div style="clear: left;"></div>
  139 +
  140 +
  141 + </div>
  142 +
  143 +
  144 + </td>
  145 + <td class="bxr"></td>
  146 + </tr>
  147 + <tr class="bxbottom">
  148 + <td class="bxbl"></td>
  149 + <td class="bxbc"></td>
  150 + <td class="bxbr"></td>
  151 + </tr>
  152 + </table>
  153 +
  154 + <div class="clearfix"></div>
  155 +
  156 +
  157 + <!-- del_columnLeftInfo_end -->
  158 + </div>
  159 +
  160 +
  161 + <br />
  162 +
  163 +
  164 +
  165 + </div>
  166 + <div class="block-75" itemscope itemtype="http://schema.org/Product">
  167 +
  168 +
  169 +
  170 +
  171 + <script>
  172 +
  173 +
  174 + </script>
  175 +
  176 +
  177 +
  178 + <h1 class="title"><?= Seo::widget([ 'row'=>'h1'])?></h1>
  179 +
  180 +
  181 + <div class="list_filters_links">
  182 + <div class="sort_block">
  183 + <span>Сортировка:</span>
  184 + <?= \yii\widgets\LinkSorter::widget([
  185 + 'sort' => $productProvider->sort,
  186 + 'attributes' => [
  187 + 'price',
  188 + ]
  189 + ]);
  190 + ?>
  191 + </div>
  192 + <div class="clearfix"></div>
  193 + </div>
  194 +
  195 +
  196 +
  197 + <div class="clearfix"></div>
  198 +
  199 +
  200 + <div class="catalog_product_list view_table">
  201 +
  202 +
  203 + <?= ListView::widget([
  204 + 'dataProvider' => $productProvider,
  205 + 'itemView' => function ($model, $key, $index, $widget) use($category) {
  206 + return $this->render('_product_item',[
  207 + 'model' => $model,
  208 + 'category' => $category
  209 + ]);
  210 + },
  211 + 'layout' => "{items}<div class=\"clearfix\"></div>{pager}",
  212 + ])
  213 +
  214 + ?>
  215 +
  216 +
  217 +
  218 +
  219 + <div class="clearfix"></div>
  220 + </div>
  221 +
  222 + <br>
  223 +
  224 +
  225 +
  226 +
  227 +
  228 +
  229 +
  230 + <div class="clearfix"></div>
  231 +
  232 +
  233 +
  234 +
  235 + <div class="clearfix"></div>
  236 +
  237 +
  238 + </div>
  239 +</div>
  240 +
  241 +
frontend/views/catalog/products.php
@@ -36,324 +36,104 @@ use yii\helpers\Url; @@ -36,324 +36,104 @@ use yii\helpers\Url;
36 --> 36 -->
37 </div> 37 </div>
38 </div> 38 </div>
  39 + <div class="container">
  40 + <div class="block-25" style="position: relative;">
  41 + <?= FilterWidget::widget([
  42 + 'category'=>$category,
  43 + 'groups'=> $groups,
  44 + 'filter'=> $filter,
  45 + 'brands' => $brands
  46 + ])?>
39 47
  48 + <div class="clearfix"></div>
40 49
41 50
42 51
43 52
  53 + <div class="columnLeftInfo">
  54 + <!-- del_columnLeftInfo -->
44 55
45 56
46 -  
47 -  
48 -  
49 -  
50 -  
51 -  
52 -  
53 -  
54 -  
55 -  
56 -  
57 -  
58 -  
59 -  
60 -  
61 -  
62 -  
63 -  
64 - <div class="container">  
65 - <div class="block-25" style="position: relative;">  
66 - <?= FilterWidget::widget([  
67 - 'category'=>$category,  
68 - 'groups'=> $groups,  
69 - 'filter'=> $filter,  
70 - 'brands' => $brands  
71 - ])?>  
72 -  
73 <div class="clearfix"></div> 57 <div class="clearfix"></div>
74 58
75 59
  60 + <!-- del_columnLeftInfo_end -->
  61 + </div>
76 62
77 63
78 - <div class="columnLeftInfo">  
79 - <!-- del_columnLeftInfo -->  
80 -  
81 -  
82 -  
83 -  
84 -  
85 - <a href="http://ventolux.ua/"><img src="http://www.linija-svitla.ua/res/custom/images/banner/ventolux1.jpg"></a><br><br>  
86 -  
87 -  
88 - <table border="0" cellspacing="0" cellpadding="0" class="boxGen articleBox">  
89 - <tr class="bxhead">  
90 - <th class="bxhl"></th>  
91 - <th class="bxhc"><div class="h3">  
92 - <a href="view-articles/">Статьи</a>  
93 - </div></th>  
94 -  
95 - <th class="bxhr"></th>  
96 - </tr>  
97 -  
98 - <tr class="bxdelim">  
99 - <td></td>  
100 - <td></td>  
101 - <td></td>  
102 - </tr>  
103 - <tr class="bxmiddle">  
104 - <td class="bxl"></td>  
105 - <td class="bxc"> <div width="100%" class="articlesBox"><!-- cats_table-->  
106 - <div width="100%">  
107 - <div class="articleItem">  
108 - <span class="image">  
109 - </span>  
110 - <span align="left" class="title">  
111 - <a href="liniya-sveta-predstavila-trendovye-modeli-na-interior-mebel-85.htm" >  
112 - Линия света представила трендовые модели на Interior Mebel  
113 - </a>  
114 - </span>  
115 -  
116 - <div align="left" class="desc">  
117 - <p>В Киеве прошла выставка Interior Mebel, которая уже традиционно собирает лучшие образцы дизайна интерьера. На...  
118 - <a href="liniya-sveta-predstavila-trendovye-modeli-na-interior-mebel-85.htm" >  
119 - подробнее  
120 - </a>  
121 - </div>  
122 -  
123 - </div>  
124 -  
125 -  
126 - <div class="articleItem">  
127 - <span class="image">  
128 - </span>  
129 - <span align="left" class="title">  
130 - <a href="svetodiodnoe-osveschenie-light-topps-svetodiodnye-lampochki-lampy-colon-kupit-dlya-doma-ceny-v-ukraine-84.htm" >  
131 - Светодиодное освещение Light Topps | Светодиодные...  
132 - </a>  
133 - </span>  
134 -  
135 - <div align="left" class="desc">  
136 - О светодиодных лампах и светильниках, в которых используются светодиодные модули, написано немало и наверняка уже...  
137 - <a href="svetodiodnoe-osveschenie-light-topps-svetodiodnye-lampochki-lampy-colon-kupit-dlya-doma-ceny-v-ukraine-84.htm" >  
138 - подробнее  
139 - </a>  
140 - </div>  
141 -  
142 - </div>  
143 -  
144 -  
145 - <div class="articleItem">  
146 - <span class="image">  
147 - </span>  
148 - <span align="left" class="title">  
149 - <a href="lyustry-potolochnye-novye-vozmojnosti-upravleniya-svetom-82.htm" >  
150 - Люстры потолочные. Новые возможности управления светом  
151 - </a>  
152 - </span>  
153 -  
154 - <div align="left" class="desc">  
155 - Люстры потолочные оснащенные пультом дистанционного управления, позволяют включать/выключать, а также регулировать...  
156 - <a href="lyustry-potolochnye-novye-vozmojnosti-upravleniya-svetom-82.htm" >  
157 - подробнее  
158 - </a>  
159 - </div>  
160 -  
161 - </div>  
162 -  
163 -  
164 - 64 + <br />
165 65
166 66
167 67
  68 + </div>
  69 + <div class="block-75" itemscope itemtype="http://schema.org/Product">
168 70
169 71
170 72
171 73
172 - <div style="clear: left;"></div> 74 + <script>
173 75
174 76
175 - </div> 77 + </script>
176 78
177 79
178 - </td>  
179 - <td class="bxr"></td>  
180 - </tr>  
181 - <tr class="bxbottom">  
182 - <td class="bxbl"></td>  
183 - <td class="bxbc"></td>  
184 - <td class="bxbr"></td>  
185 - </tr>  
186 - </table>  
187 80
188 - <div class="clearfix"></div> 81 + <h1 class="title"><?= Seo::widget([ 'row'=>'h1'])?></h1>
189 82
190 83
191 - <!-- del_columnLeftInfo_end --> 84 + <div class="list_filters_links">
  85 + <div class="sort_block">
  86 + <span>Сортировка:</span>
  87 + <?= \yii\widgets\LinkSorter::widget([
  88 + 'sort' => $productProvider->sort,
  89 + 'attributes' => [
  90 + 'price',
  91 + ]
  92 + ]);
  93 + ?>
192 </div> 94 </div>
193 -  
194 -  
195 - <br />  
196 -  
197 -  
198 - 95 + <div class="clearfix"></div>
199 </div> 96 </div>
200 - <div class="block-75" itemscope itemtype="http://schema.org/Product">  
201 -  
202 97
203 98
204 99
205 - <script>  
206 100
207 101
208 - </script> 102 + <div class="catalog_product_list view_table">
209 103
210 104
211 -  
212 - <h1 class="title"><?= Seo::widget([ 'row'=>'h1'])?></h1>  
213 -  
214 -  
215 - <div class="list_filters_links">  
216 - <ul class="ul pagination">  
217 - <li>Товаров на странице:</li>  
218 - <select name="items_per_page" class="s" style="text-align:center;width:54px;" onChange="window.location='http://www.linija-svitla.ua/lyustry-2.htm?ipp='+this.value+'';" style="margin-right: -2px;">  
219 - <option label="9" value="9">9</option>  
220 - <option label="18" value="18">18</option>  
221 - <option label="36" value="36" selected="selected">36</option>  
222 - <option label="99" value="99">99</option>  
223 -  
224 - </select>  
225 - </ul>  
226 - <ul class="view_type">  
227 - <li class="view_text">Вид списка</li>  
228 - <li class="view_list" onclick="return false;" title="список"><span></span></li>  
229 - <li class="view_table selected" onclick="return false;" title="таблица"><span></span></li>  
230 - <li class="view_mini_table" onclick="return false;" title="миниатюрная таблица"><span></span></li>  
231 - </ul>  
232 - <div class="sort_block">  
233 - <span>Сортировка:</span>  
234 - <?= \yii\widgets\LinkSorter::widget([  
235 - 'sort' => $productProvider->sort,  
236 - 'attributes' => [  
237 - 'price',  
238 - ] 105 + <?= ListView::widget([
  106 + 'dataProvider' => $productProvider,
  107 + 'itemView' => function ($model, $key, $index, $widget) use($category) {
  108 + return $this->render('_product_item',[
  109 + 'model' => $model,
  110 + 'category' => $category
239 ]); 111 ]);
240 - ?>  
241 - </div>  
242 - <div class="clearfix"></div>  
243 - </div>  
244 -  
245 -  
246 -  
247 - <div class="clearfix"></div>  
248 -  
249 -  
250 -  
251 -  
252 -  
253 -  
254 -  
255 - <script language="JavaScript">  
256 - $(document).ready(function(){  
257 - $('.toolbar-list').click(function(event) {  
258 - //alert(1);  
259 - $('.toolbar-list').addClass('selected');  
260 - $('.toolbar-grid').removeClass('selected');  
261 - $('#centrit .prodBox').addClass('list');  
262 - JsHttpRequest.query(  
263 - 'hr_gate.php?test=500&r='+Math.random(),  
264 - {  
265 - 'sp': "prod_list_style"  
266 - ,'style': 1  
267 - },  
268 - function(result, errors) { },  
269 - true //disable caching  
270 - );  
271 - });  
272 - $('.toolbar-grid').click(function(event) {  
273 - $('.toolbar-grid').addClass('selected');  
274 - $('.toolbar-list').removeClass('selected');  
275 - $('#centrit .prodBox').removeClass('list');  
276 - JsHttpRequest.query(  
277 - 'hr_gate.php?test=500&r='+Math.random(),  
278 - {  
279 - 'sp': "prod_list_style"  
280 - ,'style': 2  
281 - },  
282 - function(result, errors) { },  
283 - true //disable caching  
284 - ); 112 + },
  113 + 'layout' => "{items}<div class=\"clearfix\"></div>{pager}",
  114 + ])
285 115
286 - }); 116 + ?>
287 117
288 - });  
289 - </script>  
290 118
291 119
292 120
  121 + <div class="clearfix"></div>
  122 + </div>
293 123
294 - <div class="catalog_product_list view_table">  
295 -  
296 -  
297 - <?= ListView::widget([  
298 - 'dataProvider' => $productProvider,  
299 - 'itemView' => function ($model, $key, $index, $widget) use($category) {  
300 - return $this->render('_product_item',[  
301 - 'model' => $model,  
302 - 'category' => $category  
303 - ]);  
304 - },  
305 - 'layout' => "{items}<div class=\"clearfix\"></div>{pager}",  
306 - ])  
307 -  
308 - ?>  
309 -  
310 -  
311 -  
312 -  
313 - <div class="clearfix"></div>  
314 - </div>  
315 -  
316 - <br>  
317 -  
318 -  
319 - 124 + <br>
320 125
321 126
322 127
323 128
324 - <div class="clearfix"></div>  
325 129
326 130
327 131
  132 + <div class="clearfix"></div>
328 133
329 - <div class="clearfix"></div>  
330 134
331 - <h2>Магазин люстр в Киеве: изделия на любой вкус!</h2>  
332 - <p>Любой интерьер будет смотреться незавершенным, если не выбраны подходящие люстры, светильники (Киев). Посетив салон люстр в Киеве можно подобрать действительно интересные осветительные приборы, внося новые черты в интерьер, расставляя правильные акценты, подчеркивая неповторимость дизайна. А благодаря нашему сайту «Линия света» вы сможете купить люстру в интернете, без труда подбирая подходящую модель и экономя свои средства.</p>  
333 - <h2>Приобрести люстры через интернет-магазин: что предлагается</h2>  
334 - <p>Если вы присматриваете, где можно купить люстру в Украине – заходите на наш сайт, у нас имеется огромный выбор разнообразной продукции. Через наш реализующий люстры в Киеве интернет-магазин можно подобрать любые модели – от популярной классики до ультрасовременных подвесов. При этом купить люстру в интернет-магазине представится возможность по весьма приятным расценкам. Если же вас интересует, как купить люстры, цены которых будут максимально невысокими – присмотритесь к предложениям в разделе «распродажа» на сайте. Вообще же наш демонстрирующий разнообразные люстры каталог (цены различные), включает такие типы продукции, как:</p>  
335 - <ul>  
336 - <li>Классические, подвесные. Продажа люстр этой разновидности ведется наиболее активно – они всегда в моде, хорошо смотрятся во всех интерьерах, отличаются практичностью. На такие люстры в Киеве цена может быть самой различной – но она всегда будет оптимальна качественности и внешней привлекательности присмотренного изделия.</li>  
337 - <li>Более креативные люстры – это разнообразные потолочные светильники. Эти качественные люстры и светильники могут иметь различные дизайны, быть разных размеров. Параметры такой люстры интернет-магазин может подобрать в соответствии с индивидуальными размерами помещения, его дизайном.</li>  
338 - </ul>  
339 - <p>Также вы всегда сможете заказать люстру в интернет-магазине «Linija-svitla» в том стиле, который наиболее подойдет под ваши требования. Наш магазин люстр может предложить изделия в винтажном стиле (достаточно модном сегодня), классические модели, а также ультрасовременные авангардные люстры и товары, относящиеся к стилю хай-тек. На все предлагаемые люстры цена в Украине – одна из наиболее доступных.</p>  
340 - <h2>Люстры он-лайн на сайте «Linija-svitla»: преимущества покупок</h2>  
341 - <p>Планируя купить люстру через интернет – оцените все преимущества сотрудничества с нашим сайтом:</p>  
342 - <ul>  
343 - <li>Наш каталог люстр включает большое количество разнообразных товаров. Поэтому с нами купить люстры в интернете можно быстро и без потери времени.</li>  
344 - <li>У нас можно качественные и красивые люстры купить от надежных производителей. Через наш ресурс, возможно купить люстру в Киеве от бренда Massive – изделия этого производителя красивы, добротно сделаны, отличаются стильным видом и долговечностью. Учитывайте, планируя купить люстру - цены на товары от Massive будут несколько выше, нежели на подделки, которые может предложить отечественный рынок, но эта стоимость оправдывается качественностью электроприборов (на которых, как известно, экономить нельзя).</li>  
345 - <li>Самая демократичная на такой предмет, как люстра, цена. Если вы решили купить люстру, магазин «Линия Света» всегда предоставит возможность приобрести действительно качественный товар по минимальным расценкам.</li>  
346 - </ul>  
347 - <h2>Где купить люстру в Киеве?</h2>  
348 - <p>Вопрос, «где можно купить люстры в Украине» решен – это можно сделать на сайте «Linija-svitla». Если вам требуется хорошие люстры купить - интернет-магазин в Украине «Линия света»  может предложить большой перечень интересных разновидностей товаров данной категории. Задаваясь вопросом «сколько стоит люстра» учитывайте, что осветительные приборы во многом будут отображать ваш статус. А это значит, что как приобретение, так и подключение люстры стоимость не может иметь слишком низкую. Выбирать следует в первую очередь качественную работу, а потом уже доступные расценки. И помочь найти нужный товар смогут наши магазины люстр в Киеве. Для тех же, кто предпочитает делать интернет-заказы существует доставка по городам всей Украины, таким как: Днепропетровск, Харьков, Одесса, Запорожье, Киев, Херсон, Мариуполь, Полтава, Кривой Рог, Винница, Сумы, Черкассы, Николаев, Кременчуг, Хмельницкий, Чернигов, Житомир и др. При этом, цена на все реализуемые  изделия вас наверняка сможет обрадовать.</p>  
349 -  
350 -  
351 - </div>  
352 </div> 135 </div>
  136 + </div>
353 137
354 - <div class="container">  
355 - <p>  
356 - Люстры - одна из основных специализаций нашего каталога светильников в разделе люстры. Эти товары предоставлены у нас по самым лучшим ценам: Люстры Массив 41017/32/10, Люстры Массив 40851/33/10, Люстры Есео 40523/17/13, Люстры Массив 40865/11/10. Рекомендуем вам не сомневаться и позвонить нашему консультанту. Он поможет подобрать красивые люстры именно для вас. </p>  
357 - </div>  
358 138
359 139
frontend/views/layouts/main.php
@@ -21,13 +21,6 @@ AppAsset::register($this); @@ -21,13 +21,6 @@ AppAsset::register($this);
21 <link type="image/ico" href="http://www.linija-svitla.ua/images/icon.ico" rel="SHORTCUT ICON" /> 21 <link type="image/ico" href="http://www.linija-svitla.ua/images/icon.ico" rel="SHORTCUT ICON" />
22 <link rel="icon" href="http://www.linija-svitla.ua/images/icon.ico" type="image/x-icon" /> 22 <link rel="icon" href="http://www.linija-svitla.ua/images/icon.ico" type="image/x-icon" />
23 23
24 - <script language="JavaScript" type="text/JavaScript" src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script><meta name="google-site-verification" content="m60Ax2153voy05Xdtit_bnBVjuZG-fv0Zu14jLjb4Tk" />  
25 -  
26 -  
27 -  
28 - <script language="javascript">  
29 - var ga_exist = false;  
30 - </script>  
31 24
32 25
33 26
@@ -175,45 +168,14 @@ AppAsset::register($this); @@ -175,45 +168,14 @@ AppAsset::register($this);
175 168
176 169
177 <div class="container"> 170 <div class="container">
178 - <ul>  
179 - <li>  
180 - <a href="/feiss.htm"><i class="spritebrand spritebrand-feiss"></i></a>  
181 - </li>  
182 - <li>  
183 - <a href="/flambeau.htm"><i class="spritebrand spritebrand-flambeau"></i></a>  
184 - </li>  
185 - <li>  
186 - <a href="/quoizel.htm"><i class="spritebrand spritebrand-quozel"></i></a>  
187 - </li>  
188 - <li>  
189 - <a href="/hinkley.htm"><i class="spritebrand spritebrand-hinkley"></i></a>  
190 - </li>  
191 - <li>  
192 - <a href="/elstead.htm"><i class="spritebrand spritebrand-elstead"></i></a>  
193 - </li>  
194 - <li>  
195 - <a href="/philips.htm"><i class="spritebrand spritebrand-philips"></i></a>  
196 - </li>  
197 - <li>  
198 - <a href="/massive.htm"><i class="spritebrand spritebrand-massive"></i></a>  
199 - </li>  
200 - <li>  
201 - <a href="/eseo.htm"><i class="spritebrand spritebrand-eseo"></i></a>  
202 - </li>  
203 - <li>  
204 - <a href="/lirio.htm"><i class="spritebrand spritebrand-lirio"></i></a>  
205 - </li>  
206 - <li>  
207 - <a href="/lighttopps.htm"><i class="spritebrand spritebrand-light"></i></a>  
208 - </li>  
209 - </ul> 171 + <?= $this->render('../partial/brand_list')?>
210 </div> 172 </div>
211 </div> 173 </div>
212 174
213 175
214 176
215 177
216 - <?= $this->render('main-menu')?> 178 + <?= $this->render('../partial/main-menu')?>
217 <div class="wrapper white"> 179 <div class="wrapper white">
218 <div class="container"> 180 <div class="container">
219 181
frontend/views/partial/brand_list.php 0 → 100644
  1 +<?php
  2 +use common\modules\product\models\Brand;
  3 +use yii\helpers\Html;
  4 +use common\components\artboximage\ArtboxImageHelper;
  5 +
  6 +$brands = Brand::find()->where(['in_menu' => 1])->all();
  7 +$content = '';
  8 +
  9 +foreach($brands as $brand){
  10 + $content .= Html::tag('li', Html::a(Html::img(ArtboxImageHelper::getImageSrc($brand->imageUrl, 'brand_item')),\yii\helpers\Url::to(['catalog/brand', 'brand' => $brand->alias]) ));
  11 +
  12 +}
  13 +
  14 +
  15 +echo Html::tag('ul',$content);
  16 +
frontend/views/layouts/main-menu.php renamed to frontend/views/partial/main-menu.php