Commit 05f1b3e25d0e180e43f9d310dceffa2979c907f4

Authored by Alexey Boroda
1 parent e67c95f9

-Blog at main

frontend/controllers/SiteController.php
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 use artbox\catalog\models\Category; 6 use artbox\catalog\models\Category;
7 use artbox\catalog\models\Product; 7 use artbox\catalog\models\Product;
8 use artbox\core\models\Feedback; 8 use artbox\core\models\Feedback;
  9 + use artbox\weblog\models\Article;
9 use common\models\LoginForm; 10 use common\models\LoginForm;
10 use common\models\PasswordResetRequestForm; 11 use common\models\PasswordResetRequestForm;
11 use common\models\ResetPasswordForm; 12 use common\models\ResetPasswordForm;
@@ -92,6 +93,17 @@ @@ -92,6 +93,17 @@
92 ->limit(6) 93 ->limit(6)
93 ->with('image') 94 ->with('image')
94 ->all(); 95 ->all();
  96 + $articles = Article::find()
  97 + ->orderBy('sort')
  98 + ->with(
  99 + [
  100 + 'lang',
  101 + 'image',
  102 + 'category.lang',
  103 + ]
  104 + )
  105 + ->limit(4)
  106 + ->all();
95 return $this->render( 107 return $this->render(
96 'index', 108 'index',
97 [ 109 [
@@ -102,6 +114,7 @@ @@ -102,6 +114,7 @@
102 'productCount' => $productCount, 114 'productCount' => $productCount,
103 'brandCount' => $brandCount, 115 'brandCount' => $brandCount,
104 'brands' => $brands, 116 'brands' => $brands,
  117 + 'articles' => $articles,
105 ] 118 ]
106 ); 119 );
107 } 120 }
@@ -185,7 +198,7 @@ @@ -185,7 +198,7 @@
185 if (!\Yii::$app->user->isGuest) { 198 if (!\Yii::$app->user->isGuest) {
186 return $this->redirect([ 'index' ]); 199 return $this->redirect([ 'index' ]);
187 } 200 }
188 - 201 +
189 $loginForm = new LoginForm(); 202 $loginForm = new LoginForm();
190 $signupForm = new SignupForm(); 203 $signupForm = new SignupForm();
191 if ($loginForm->load(\Yii::$app->request->post()) && $loginForm->login()) { 204 if ($loginForm->load(\Yii::$app->request->post()) && $loginForm->login()) {
@@ -216,7 +229,7 @@ @@ -216,7 +229,7 @@
216 public function actionLogout() 229 public function actionLogout()
217 { 230 {
218 \Yii::$app->user->logout(); 231 \Yii::$app->user->logout();
219 - 232 +
220 return $this->redirect([ 'index' ]); 233 return $this->redirect([ 'index' ]);
221 } 234 }
222 235
@@ -231,7 +244,7 @@ @@ -231,7 +244,7 @@
231 if ($model->load(Yii::$app->request->post()) && $model->validate()) { 244 if ($model->load(Yii::$app->request->post()) && $model->validate()) {
232 if ($model->sendEmail()) { 245 if ($model->sendEmail()) {
233 Yii::$app->session->setFlash('success', 'Check your email for further instructions.'); 246 Yii::$app->session->setFlash('success', 'Check your email for further instructions.');
234 - 247 +
235 return $this->redirect([ 'index' ]); 248 return $this->redirect([ 'index' ]);
236 } else { 249 } else {
237 Yii::$app->session->setFlash( 250 Yii::$app->session->setFlash(
@@ -240,7 +253,7 @@ @@ -240,7 +253,7 @@
240 ); 253 );
241 } 254 }
242 } 255 }
243 - 256 +
244 return $this->render( 257 return $this->render(
245 'requestPasswordResetToken', 258 'requestPasswordResetToken',
246 [ 259 [
@@ -264,13 +277,13 @@ @@ -264,13 +277,13 @@
264 } catch (InvalidParamException $e) { 277 } catch (InvalidParamException $e) {
265 throw new BadRequestHttpException($e->getMessage()); 278 throw new BadRequestHttpException($e->getMessage());
266 } 279 }
267 - 280 +
268 if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) { 281 if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
269 Yii::$app->session->setFlash('success', 'New password saved.'); 282 Yii::$app->session->setFlash('success', 'New password saved.');
270 - 283 +
271 return $this->redirect([ 'index' ]); 284 return $this->redirect([ 'index' ]);
272 } 285 }
273 - 286 +
274 return $this->render( 287 return $this->render(
275 'resetPassword', 288 'resetPassword',
276 [ 289 [
frontend/views/site/index.php
@@ -3,7 +3,10 @@ @@ -3,7 +3,10 @@
3 use artbox\catalog\models\Category; 3 use artbox\catalog\models\Category;
4 use artbox\catalog\models\Product; 4 use artbox\catalog\models\Product;
5 use artbox\core\components\SeoComponent; 5 use artbox\core\components\SeoComponent;
  6 + use artbox\core\helpers\ImageHelper;
  7 + use artbox\weblog\models\Article;
6 use yii\bootstrap\Html; 8 use yii\bootstrap\Html;
  9 + use yii\helpers\Url;
7 use yii\web\View; 10 use yii\web\View;
8 11
9 /** 12 /**
@@ -16,387 +19,337 @@ @@ -16,387 +19,337 @@
16 * @var int $productCount 19 * @var int $productCount
17 * @var Brand[] $brands 20 * @var Brand[] $brands
18 * @var SeoComponent $seo 21 * @var SeoComponent $seo
  22 + * @var Article[] $articles
19 */ 23 */
20 $this->title = 'My Yii Application'; 24 $this->title = 'My Yii Application';
21 $seo = Yii::$app->get('seo'); 25 $seo = Yii::$app->get('seo');
22 ?> 26 ?>
23 <section class="category-carousel-box"> 27 <section class="category-carousel-box">
24 - <!-- *** HOMEPAGE CAROUSEL *** 28 + <!-- *** HOMEPAGE CAROUSEL ***
25 _________________________________________________________ --> 29 _________________________________________________________ -->
26 - <div class="container">  
27 -  
28 - <div class="row">  
29 - <div class="col-sm-3">  
30 - <?php  
31 - echo $this->render(  
32 - '@frontend/views/layouts/_category_menu',  
33 - [  
34 - 'isHome' => true,  
35 - ]  
36 - );  
37 - ?> 30 + <div class="container">
  31 +
  32 + <div class="row">
  33 + <div class="col-sm-3">
  34 + <?php
  35 + echo $this->render(
  36 + '@frontend/views/layouts/_category_menu',
  37 + [
  38 + 'isHome' => true,
  39 + ]
  40 + );
  41 + ?>
  42 + </div>
  43 +
  44 + <div class="col-sm-9">
  45 + <div class="home-carousel">
  46 +
  47 + <div class="dark-mask"></div>
  48 +
  49 + <div class="homepage owl-carousel">
  50 + <div class="item">
  51 + <div class="row">
  52 + <div class="col-sm-5">
  53 + <h1>ะะบั†ะธะธ
  54 + <br>ะธ ัะบะธะดะบะธ</h1>
  55 + <p>ะะฐ ะฝะพัƒั‚ะฑัƒะบะธ
  56 + <br>ะธ ะบะพะผะฟัŒัŽั‚ะตั€ั‹
  57 + </p>
  58 + </div>
  59 + <div class="col-sm-7">
  60 + <img class="img-responsive" src="/img/template-homepage.png" alt="">
  61 + </div>
  62 + </div>
38 </div> 63 </div>
39 -  
40 - <div class="col-sm-9">  
41 - <div class="home-carousel">  
42 -  
43 - <div class="dark-mask"></div>  
44 -  
45 - <div class="homepage owl-carousel">  
46 - <div class="item">  
47 - <div class="row">  
48 - <div class="col-sm-5">  
49 - <h1>ะะบั†ะธะธ  
50 - <br>ะธ ัะบะธะดะบะธ</h1>  
51 - <p>ะะฐ ะฝะพัƒั‚ะฑัƒะบะธ  
52 - <br>ะธ ะบะพะผะฟัŒัŽั‚ะตั€ั‹  
53 - </p>  
54 - </div>  
55 - <div class="col-sm-7">  
56 - <img class="img-responsive" src="/img/template-homepage.png" alt="">  
57 - </div>  
58 - </div>  
59 - </div>  
60 - <div class="item">  
61 - <div class="row">  
62 - <div class="col-sm-5">  
63 - <h1>ะะบั†ะธะธ  
64 - <br>ะธ ัะบะธะดะบะธ</h1>  
65 - <p>ะะฐ ะฝะพัƒั‚ะฑัƒะบะธ  
66 - <br>ะธ ะบะพะผะฟัŒัŽั‚ะตั€ั‹  
67 - </p>  
68 - </div>  
69 - <div class="col-sm-7">  
70 - <img class="img-responsive" src="/img/template-homepage.png" alt="">  
71 - </div>  
72 - </div>  
73 - </div>  
74 - </div>  
75 - <!-- /.project owl-slider --> 64 + <div class="item">
  65 + <div class="row">
  66 + <div class="col-sm-5">
  67 + <h1>ะะบั†ะธะธ
  68 + <br>ะธ ัะบะธะดะบะธ</h1>
  69 + <p>ะะฐ ะฝะพัƒั‚ะฑัƒะบะธ
  70 + <br>ะธ ะบะพะผะฟัŒัŽั‚ะตั€ั‹
  71 + </p>
  72 + </div>
  73 + <div class="col-sm-7">
  74 + <img class="img-responsive" src="/img/template-homepage.png" alt="">
76 </div> 75 </div>
  76 + </div>
77 </div> 77 </div>
  78 + </div>
  79 + <!-- /.project owl-slider -->
78 </div> 80 </div>
  81 + </div>
79 </div> 82 </div>
80 - <!-- *** HOMEPAGE CAROUSEL END *** --> 83 + </div>
  84 + <!-- *** HOMEPAGE CAROUSEL END *** -->
81 </section> 85 </section>
82 86
83 87
84 <section> 88 <section>
85 - <div class="container">  
86 - <?php  
87 - if (!empty( $newItems )) {  
88 - ?>  
89 - <div class="heading text-center">  
90 - <h2><?php echo \Yii::t('app', 'ะะพะฒะธะฝะบะธ'); ?></h2>  
91 - </div>  
92 -  
93 - <div class="product-carousel">  
94 - <div class="homepage owl-carousel">  
95 - <?php  
96 - $newItemsArrays = array_chunk($newItems, 4);  
97 - foreach ($newItemsArrays as $newItemsArray) {  
98 - ?>  
99 - <div class="products">  
100 - <?php  
101 - foreach ($newItemsArray as $product) {  
102 - echo $this->render(  
103 - '_slider_product',  
104 - [  
105 - 'product' => $product,  
106 - ]  
107 - );  
108 - }  
109 - ?>  
110 - </div>  
111 - <?php  
112 - }  
113 - ?>  
114 - </div>  
115 - </div>  
116 - <?php  
117 - }  
118 - if (!empty( $saleItems )) {  
119 - ?>  
120 - <div class="heading text-center">  
121 - <h2><?php echo \Yii::t('app', 'ะะบั†ะธะธ'); ?></h2>  
122 - </div>  
123 - <div class="product-carousel">  
124 - <div class="homepage owl-carousel">  
125 - <?php  
126 - $newItemsArrays = array_chunk($saleItems, 4);  
127 - foreach ($newItemsArrays as $newItemsArray) {  
128 - ?>  
129 - <div class="products">  
130 - <?php  
131 - foreach ($newItemsArray as $product) {  
132 - echo $this->render(  
133 - '_slider_product',  
134 - [  
135 - 'product' => $product,  
136 - ]  
137 - );  
138 - }  
139 - ?>  
140 - </div>  
141 - <?php  
142 - }  
143 - ?>  
144 - </div>  
145 - </div>  
146 - <?php  
147 - }  
148 - if (!empty( $topItems )) {  
149 - ?>  
150 - <div class="heading text-center">  
151 - <h2><?php echo \Yii::t('app', 'ะะบั†ะธะธ'); ?></h2>  
152 - </div>  
153 - <div class="product-carousel">  
154 - <div class="homepage owl-carousel">  
155 - <?php  
156 - $newItemsArrays = array_chunk($topItems, 4);  
157 - foreach ($newItemsArrays as $newItemsArray) {  
158 - ?>  
159 - <div class="products">  
160 - <?php  
161 - foreach ($newItemsArray as $product) {  
162 - echo $this->render(  
163 - '_slider_product',  
164 - [  
165 - 'product' => $product,  
166 - ]  
167 - );  
168 - }  
169 - ?>  
170 - </div>  
171 - <?php  
172 - }  
173 - ?>  
174 - </div>  
175 - </div>  
176 - <?php  
177 - }  
178 - ?>  
179 - </div>  
180 -</section>  
181 -  
182 -<section class="bar color-white no-mb">  
183 - <div class="container">  
184 - <div class="row showcase">  
185 - <div class="col-md-4 col-sm-6">  
186 - <div class="item">  
187 - <div class="icon"><i class="fa fa-cubes"></i>  
188 - </div>  
189 - <h4><span class="counter"><?php echo $productCount; ?></span><br>  
190 -  
191 - ะŸะพะทะธั†ะธะน ั‚ะพะฒะฐั€ะพะฒ</h4>  
192 - </div> 89 + <div class="container">
  90 + <?php
  91 + if (!empty($newItems)) {
  92 + ?>
  93 + <div class="heading text-center">
  94 + <h2><?php echo \Yii::t('app', 'ะะพะฒะธะฝะบะธ'); ?></h2>
193 </div> 95 </div>
194 - <div class="col-md-4 col-sm-6">  
195 - <div class="item">  
196 - <div class="icon"><i class="fa fa-tags"></i>  
197 - </div>  
198 - <h4><span class="counter"><?php echo $brandCount; ?></span><br>  
199 -  
200 - ะ‘ั€ะตะฝะดะพะฒ</h4>  
201 - </div> 96 +
  97 + <div class="product-carousel">
  98 + <div class="homepage owl-carousel">
  99 + <?php
  100 + $newItemsArrays = array_chunk($newItems, 4);
  101 + foreach ($newItemsArrays as $newItemsArray) {
  102 + ?>
  103 + <div class="products">
  104 + <?php
  105 + foreach ($newItemsArray as $product) {
  106 + echo $this->render(
  107 + '_slider_product',
  108 + [
  109 + 'product' => $product,
  110 + ]
  111 + );
  112 + }
  113 + ?>
  114 + </div>
  115 + <?php
  116 + }
  117 + ?>
  118 + </div>
202 </div> 119 </div>
203 - <div class="col-md-4 col-sm-6">  
204 - <div class="item">  
205 - <div class="icon"><i class="fa fa-copy"></i>  
206 - </div>  
207 - <h4><span class="counter">12</span> ... <span class="counter">36</span><br>  
208 -  
209 - ะœะตััั†ะตะฒ ะ“ะฐั€ะฐะฝั‚ะธั </h4>  
210 - </div> 120 + <?php
  121 + }
  122 + if (!empty($saleItems)) {
  123 + ?>
  124 + <div class="heading text-center">
  125 + <h2><?php echo \Yii::t('app', 'ะะบั†ะธะธ'); ?></h2>
211 </div> 126 </div>
212 - </div>  
213 - <!-- /.row -->  
214 - </div>  
215 - <!-- /.container -->  
216 -</section>  
217 -<!-- /.bar -->  
218 -<?php  
219 - if (!empty( $brands )) {  
220 - ?>  
221 - <section class="bar background-gray no-mb">  
222 - <div class="container">  
223 - <div class="row">  
224 - <div class="col-md-12">  
225 - <div class="heading text-center">  
226 - <h2><?php echo \Yii::t('app', 'ะ‘ั€ะตะฝะดั‹'); ?></h2> 127 + <div class="product-carousel">
  128 + <div class="homepage owl-carousel">
  129 + <?php
  130 + $newItemsArrays = array_chunk($saleItems, 4);
  131 + foreach ($newItemsArrays as $newItemsArray) {
  132 + ?>
  133 + <div class="products">
  134 + <?php
  135 + foreach ($newItemsArray as $product) {
  136 + echo $this->render(
  137 + '_slider_product',
  138 + [
  139 + 'product' => $product,
  140 + ]
  141 + );
  142 + }
  143 + ?>
227 </div> 144 </div>
228 -  
229 - <ul class="owl-carousel customers"> 145 + <?php
  146 + }
  147 + ?>
  148 + </div>
  149 + </div>
  150 + <?php
  151 + }
  152 + if (!empty($topItems)) {
  153 + ?>
  154 + <div class="heading text-center">
  155 + <h2><?php echo \Yii::t('app', 'ะะบั†ะธะธ'); ?></h2>
  156 + </div>
  157 + <div class="product-carousel">
  158 + <div class="homepage owl-carousel">
  159 + <?php
  160 + $newItemsArrays = array_chunk($topItems, 4);
  161 + foreach ($newItemsArrays as $newItemsArray) {
  162 + ?>
  163 + <div class="products">
230 <?php 164 <?php
231 - foreach ($brands as $brand) {  
232 - echo Html::tag(  
233 - 'div',  
234 - Html::img(  
235 - $brand->image->getUrl(),  
236 - [  
237 - 'class' => 'img-responsive',  
238 - ]  
239 - ), 165 + foreach ($newItemsArray as $product) {
  166 + echo $this->render(
  167 + '_slider_product',
240 [ 168 [
241 - 'class' => 'item', 169 + 'product' => $product,
242 ] 170 ]
243 ); 171 );
244 } 172 }
245 ?> 173 ?>
246 - </ul>  
247 - <!-- /.owl-carousel -->  
248 - </div>  
249 -  
250 - </div> 174 + </div>
  175 + <?php
  176 + }
  177 + ?>
  178 + </div>
  179 + </div>
  180 + <?php
  181 + }
  182 + ?>
  183 + </div>
  184 +</section>
  185 +
  186 +<section class="bar color-white no-mb">
  187 + <div class="container">
  188 + <div class="row showcase">
  189 + <div class="col-md-4 col-sm-6">
  190 + <div class="item">
  191 + <div class="icon"><i class="fa fa-cubes"></i>
  192 + </div>
  193 + <h4><span class="counter"><?php echo $productCount; ?></span><br>
  194 +
  195 + ะŸะพะทะธั†ะธะน ั‚ะพะฒะฐั€ะพะฒ</h4>
  196 + </div>
  197 + </div>
  198 + <div class="col-md-4 col-sm-6">
  199 + <div class="item">
  200 + <div class="icon"><i class="fa fa-tags"></i>
  201 + </div>
  202 + <h4><span class="counter"><?php echo $brandCount; ?></span><br>
  203 +
  204 + ะ‘ั€ะตะฝะดะพะฒ</h4>
  205 + </div>
  206 + </div>
  207 + <div class="col-md-4 col-sm-6">
  208 + <div class="item">
  209 + <div class="icon"><i class="fa fa-copy"></i>
  210 + </div>
  211 + <h4><span class="counter">12</span> ... <span class="counter">36</span><br>
  212 +
  213 + ะœะตััั†ะตะฒ ะ“ะฐั€ะฐะฝั‚ะธั </h4>
  214 + </div>
  215 + </div>
  216 + </div>
  217 + <!-- /.row -->
  218 + </div>
  219 + <!-- /.container -->
  220 +</section>
  221 +<!-- /.bar -->
  222 +<?php
  223 + if (!empty($brands)) {
  224 + ?>
  225 + <section class="bar background-gray no-mb">
  226 + <div class="container">
  227 + <div class="row">
  228 + <div class="col-md-12">
  229 + <div class="heading text-center">
  230 + <h2><?php echo \Yii::t('app', 'ะ‘ั€ะตะฝะดั‹'); ?></h2>
  231 + </div>
  232 +
  233 + <ul class="owl-carousel customers">
  234 + <?php
  235 + foreach ($brands as $brand) {
  236 + echo Html::tag(
  237 + 'div',
  238 + Html::img(
  239 + $brand->image->getUrl(),
  240 + [
  241 + 'class' => 'img-responsive',
  242 + ]
  243 + ),
  244 + [
  245 + 'class' => 'item',
  246 + ]
  247 + );
  248 + }
  249 + ?>
  250 + </ul>
  251 + <!-- /.owl-carousel -->
251 </div> 252 </div>
252 - </section> 253 +
  254 + </div>
  255 + </div>
  256 + </section>
253 <?php 257 <?php
254 } 258 }
255 ?> 259 ?>
256 -<?php  
257 - /* ะŸะพะปะตะทะฝั‹ะต ัั‚ะฐั‚ัŒะธ  
258 <section class="bar background-white no-mb"> 260 <section class="bar background-white no-mb">
259 - <div class="container">  
260 -  
261 - <div class="col-md-12">  
262 - <div class="heading text-center">  
263 - <h2>ะŸะพะปะตะทะฝั‹ะต ัั‚ะฐั‚ัŒะธ</h2>  
264 - </div>  
265 -  
266 - <p class="lead">Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies  
267 - mi vitae est. Mauris placerat eleifend leo. <span class="accent">Check our blog!</span>  
268 - </p>  
269 -  
270 - <!-- *** BLOG HOMEPAGE *** 261 + <div class="container">
  262 +
  263 + <div class="col-md-12">
  264 + <div class="heading text-center">
  265 + <h2>ะŸะพะปะตะทะฝั‹ะต ัั‚ะฐั‚ัŒะธ</h2>
  266 + </div>
  267 +
  268 + <p class="lead">Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies
  269 + mi vitae est. Mauris placerat eleifend leo. <span class="accent">Check our blog!</span>
  270 + </p>
  271 +
  272 + <!-- *** BLOG HOMEPAGE ***
271 _________________________________________________________ --> 273 _________________________________________________________ -->
272 -  
273 - <div class="row">  
274 - <div class="col-md-3 col-sm-6">  
275 - <div class="box-image-text blog">  
276 - <div class="top">  
277 - <div class="image">  
278 - <img src="/img/portfolio-4.jpg" alt="" class="img-responsive">  
279 - </div>  
280 - <div class="bg"></div>  
281 - <div class="text">  
282 - <p class="buttons">  
283 - <a href="blog-post.html" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a>  
284 - </p>  
285 - </div>  
286 - </div>  
287 - <div class="content">  
288 - <h4><a href="blog-post.html">Fashion now</a></h4>  
289 - <p class="author-category">By <a href="#">John Snow</a> in <a href="blog.html">Webdesign</a>  
290 - </p>  
291 - <p class="intro">Fifth abundantly made Give sixth hath. Cattle creature i be don't them behold green moved fowl Moved life us beast good yielding. Have bring.</p>  
292 - <p class="read-more">  
293 - <a href="blog-post.html" class="btn btn-template-main">Continue reading</a>  
294 - </p>  
295 - </div>  
296 - </div>  
297 - <!-- /.box-image-text -->  
298 -  
299 - </div>  
300 -  
301 - <div class="col-md-3 col-sm-6">  
302 - <div class="box-image-text blog">  
303 - <div class="top">  
304 - <div class="image">  
305 - <img src="/img/portfolio-3.jpg" alt="" class="img-responsive">  
306 - </div>  
307 - <div class="bg"></div>  
308 - <div class="text">  
309 - <p class="buttons">  
310 - <a href="blog-post.html" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a>  
311 - </p>  
312 - </div>  
313 - </div>  
314 - <div class="content">  
315 - <h4><a href="blog-post.html">Fashion now</a></h4>  
316 - <p class="author-category">By <a href="#">John Snow</a> in <a href="blog.html">Webdesign</a>  
317 - </p>  
318 - <p class="intro">Fifth abundantly made Give sixth hath. Cattle creature i be don't them behold green moved fowl Moved life us beast good yielding. Have bring.</p>  
319 - <p class="read-more">  
320 - <a href="blog-post.html" class="btn btn-template-main">Continue reading</a>  
321 - </p>  
322 - </div>  
323 - </div>  
324 - <!-- /.box-image-text -->  
325 -  
326 - </div>  
327 -  
328 - <div class="col-md-3 col-sm-6">  
329 - <div class="box-image-text blog">  
330 - <div class="top">  
331 - <div class="image">  
332 - <img src="/img/portfolio-5.jpg" alt="" class="img-responsive">  
333 - </div>  
334 - <div class="bg"></div>  
335 - <div class="text">  
336 - <p class="buttons">  
337 - <a href="blog-post.html" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a>  
338 - </p>  
339 - </div>  
340 - </div>  
341 - <div class="content">  
342 - <h4><a href="blog-post.html">What to do</a></h4>  
343 - <p class="author-category">By <a href="#">John Snow</a> in <a href="blog.html">Webdesign</a>  
344 - </p>  
345 - <p class="intro">Fifth abundantly made Give sixth hath. Cattle creature i be don't them behold green moved fowl Moved life us beast good yielding. Have bring.</p>  
346 - <p class="read-more">  
347 - <a href="blog-post.html" class="btn btn-template-main">Continue reading</a>  
348 - </p>  
349 - </div>  
350 - </div>  
351 - <!-- /.box-image-text -->  
352 - 274 +
  275 + <div class="row">
  276 +
  277 + <?php foreach ($articles as $article) { ?>
  278 + <div class="col-md-3 col-sm-6">
  279 + <div class="box-image-text blog">
  280 + <div class="top">
  281 + <div class="image">
  282 + <?= ImageHelper::set(
  283 + $article->image ? $article->image->getPath() : '@frontend/web/img/no-image.png'
  284 + )
  285 + ->cropResize(255, 192)
  286 + ->renderImage(
  287 + [
  288 + 'class' => 'img-responsive',
  289 + 'alt' => $article->lang->title,
  290 + ]
  291 + ) ?>
  292 + </div>
  293 + <div class="bg"></div>
  294 + <div class="text">
  295 + <p class="buttons">
  296 + <a href="<?= Url::to(
  297 + [
  298 + 'blog/article',
  299 + 'id' => $article->id,
  300 + ]
  301 + ) ?>" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a>
  302 + </p>
  303 + </div>
353 </div> 304 </div>
354 -  
355 - <div class="col-md-3 col-sm-6">  
356 - <div class="box-image-text blog">  
357 - <div class="top">  
358 - <div class="image">  
359 - <img src="/img/portfolio-6.jpg" alt="" class="img-responsive">  
360 - </div>  
361 - <div class="bg"></div>  
362 - <div class="text">  
363 - <p class="buttons">  
364 - <a href="blog-post.html" class="btn btn-template-transparent-primary"><i class="fa fa-link"></i> Read more</a>  
365 - </p>  
366 - </div>  
367 - </div>  
368 - <div class="content">  
369 - <h4><a href="blog-post.html">5 ways to look awesome</a></h4>  
370 - <p class="author-category">By <a href="#">John Snow</a> in <a href="blog.html">Webdesign</a>  
371 - </p>  
372 - <p class="intro">Am terminated it excellence invitation projection as. She graceful shy believed distance use nay. Lively is people.</p>  
373 - <p class="read-more">  
374 - <a href="blog-post.html" class="btn btn-template-main">Continue reading</a>  
375 - </p>  
376 - </div>  
377 - </div>  
378 - <!-- /.box-image-text -->  
379 - 305 + <div class="content">
  306 + <h4><a href="<?= Url::to(
  307 + [
  308 + 'blog/article',
  309 + 'id' => $article->id,
  310 + ]
  311 + ) ?>"><?= $article->lang->title; ?></a></h4>
  312 + <?php if ( !empty($article->category) ) { ?>
  313 + <p class="author-category"><a href="<?= Url::to(
  314 + [
  315 + 'blog/category',
  316 + 'id' => $article->category->id,
  317 + ]
  318 + ) ?>"><?= $article->category->lang->title ?></a>
  319 + <?php } ?>
  320 + </p>
  321 + <p class="intro"><?= $article->lang->body_preview; ?></p>
  322 + <p class="read-more">
  323 + <a href="<?= Url::to(
  324 + [
  325 + 'blog/article',
  326 + 'id' => $article->id,
  327 + ]
  328 + ) ?>" class="btn btn-template-main">Continue reading</a>
  329 + </p>
380 </div> 330 </div>
381 - 331 + </div>
  332 + <!-- /.box-image-text -->
382 </div> 333 </div>
383 - <!-- /.row -->  
384 -  
385 - <!-- *** BLOG HOMEPAGE END *** -->  
386 -  
387 - </div> 334 + <?php } ?>
  335 +
  336 + </div>
  337 + <!-- /.row -->
  338 +
  339 + <!-- *** BLOG HOMEPAGE END *** -->
388 340
389 </div> 341 </div>
390 - <!-- /.container --> 342 +
  343 + </div>
  344 + <!-- /.container -->
391 </section> 345 </section>
392 <!-- /.bar --> 346 <!-- /.bar -->
393 - */  
394 -?> 347 +
395 348
396 <section class="bar background-white no-mb"> 349 <section class="bar background-white no-mb">
397 - <div class="container">  
398 - <div class="col-md-12">  
399 - <?php echo $seo->text; ?>  
400 - </div> 350 + <div class="container">
  351 + <div class="col-md-12">
  352 + <?php echo $seo->text; ?>
401 </div> 353 </div>
  354 + </div>
402 </section> 355 </section>