Commit 43a2405958e55842a541140aec4965e763901e87
1 parent
6dd77cde
- servives
- prices - disable artboxmodal css
Showing
9 changed files
with
188 additions
and
15 deletions
Show diff stats
common/models/Service.php
@@ -151,6 +151,14 @@ class Service extends ActiveRecord | @@ -151,6 +151,14 @@ class Service extends ActiveRecord | ||
151 | } | 151 | } |
152 | 152 | ||
153 | public function getPrices(){ | 153 | public function getPrices(){ |
154 | - return$this->hasMany(Price::className(), ['id' => 'service_id']); | 154 | + return $this->hasMany(Price::className(), ['service_id' => 'id']); |
155 | + } | ||
156 | + | ||
157 | + public function getComments(){ | ||
158 | + return $this->hasMany(Comment::className(), ['service_id' => 'id']); | ||
159 | + } | ||
160 | + | ||
161 | + public function getQuestions(){ | ||
162 | + return $this->hasMany(Question::className(), ['service_id' => 'id']); | ||
155 | } | 163 | } |
156 | } | 164 | } |
console/migrations/m180524_152319_create_price_table.php
@@ -16,7 +16,7 @@ class m180524_152319_create_price_table extends Migration | @@ -16,7 +16,7 @@ class m180524_152319_create_price_table extends Migration | ||
16 | 'id' => $this->primaryKey(), | 16 | 'id' => $this->primaryKey(), |
17 | 'service_id' => $this->integer(), | 17 | 'service_id' => $this->integer(), |
18 | 'price' => $this->integer(), | 18 | 'price' => $this->integer(), |
19 | - 'status' => $this->integer(), | 19 | + 'status' => $this->boolean(), |
20 | 'sort' => $this->integer() | 20 | 'sort' => $this->integer() |
21 | ]); | 21 | ]); |
22 | 22 |
frontend/config/main.php
@@ -89,6 +89,11 @@ | @@ -89,6 +89,11 @@ | ||
89 | 'baseUrl' => '@web', | 89 | 'baseUrl' => '@web', |
90 | 'css' => [], | 90 | 'css' => [], |
91 | ], | 91 | ], |
92 | + 'frontend\assets\ArtboxModalAsset' => [ | ||
93 | + 'basePath' => '@webroot', | ||
94 | + 'baseUrl' => '@web', | ||
95 | + 'css' => [], | ||
96 | + ], | ||
92 | ], | 97 | ], |
93 | 'appendTimestamp' => true, | 98 | 'appendTimestamp' => true, |
94 | ], | 99 | ], |
frontend/controllers/ServiceController.php
@@ -9,15 +9,12 @@ | @@ -9,15 +9,12 @@ | ||
9 | namespace frontend\controllers; | 9 | namespace frontend\controllers; |
10 | 10 | ||
11 | use common\models\Service; | 11 | use common\models\Service; |
12 | + use yii\db\ActiveQuery; | ||
12 | use yii\web\Controller; | 13 | use yii\web\Controller; |
13 | use yii\web\NotFoundHttpException; | 14 | use yii\web\NotFoundHttpException; |
14 | 15 | ||
15 | class ServiceController extends Controller | 16 | class ServiceController extends Controller |
16 | { | 17 | { |
17 | - public function actionIndex(){ | ||
18 | - | ||
19 | - } | ||
20 | - | ||
21 | public function actionView($id){ | 18 | public function actionView($id){ |
22 | $model = $this->findModel($id); | 19 | $model = $this->findModel($id); |
23 | if ($model->parent_id == null){ | 20 | if ($model->parent_id == null){ |
@@ -26,6 +23,7 @@ | @@ -26,6 +23,7 @@ | ||
26 | $others = Service::find()->where(['parent_id' => $model->parent_id])->all(); | 23 | $others = Service::find()->where(['parent_id' => $model->parent_id])->all(); |
27 | } | 24 | } |
28 | 25 | ||
26 | + $model->body = str_replace('[[prices]]', $this->renderPartial('_prices', ['prices' => $model->prices]), $model->body); | ||
29 | return $this->render('view', [ | 27 | return $this->render('view', [ |
30 | 'model' => $model, | 28 | 'model' => $model, |
31 | 'others'=> $others | 29 | 'others'=> $others |
@@ -35,7 +33,11 @@ | @@ -35,7 +33,11 @@ | ||
35 | public function findModel($id){ | 33 | public function findModel($id){ |
36 | $model = Service::find() | 34 | $model = Service::find() |
37 | ->where(['id' => $id, 'status' => true]) | 35 | ->where(['id' => $id, 'status' => true]) |
38 | - ->with(['language.alias', 'image', 'prices'])->one(); | 36 | + ->with(['language.alias', 'image', 'prices' => function (ActiveQuery $query){ |
37 | + $query->where(['status' => true])->orderBy('sort'); | ||
38 | + }, 'comments' => function (ActiveQuery $query){ | ||
39 | + $query->where(['status' => true]); | ||
40 | + }])->one(); | ||
39 | if (empty($model)){ | 41 | if (empty($model)){ |
40 | throw new NotFoundHttpException('Model not found'); | 42 | throw new NotFoundHttpException('Model not found'); |
41 | } | 43 | } |
frontend/controllers/SiteController.php
@@ -5,6 +5,7 @@ | @@ -5,6 +5,7 @@ | ||
5 | use common\models\blog\Article; | 5 | use common\models\blog\Article; |
6 | use common\models\Comment; | 6 | use common\models\Comment; |
7 | use common\models\Package; | 7 | use common\models\Package; |
8 | + use common\models\Price; | ||
8 | use common\models\Service; | 9 | use common\models\Service; |
9 | use common\models\Settings; | 10 | use common\models\Settings; |
10 | use common\models\slider\Slide; | 11 | use common\models\slider\Slide; |
@@ -176,6 +177,15 @@ | @@ -176,6 +177,15 @@ | ||
176 | } | 177 | } |
177 | } | 178 | } |
178 | } | 179 | } |
180 | + public function actionPrices(){ | ||
181 | + $services = Service::find()->innerJoinWith(['prices' => function (ActiveQuery $query){ | ||
182 | + $query->where(['price.status' => true]); | ||
183 | + }])->all(); | ||
184 | + | ||
185 | + return $this->render('prices', [ | ||
186 | + 'services' => $services, | ||
187 | + ]); | ||
188 | + } | ||
179 | 189 | ||
180 | 190 | ||
181 | public function actionPage1(){ | 191 | public function actionPage1(){ |
frontend/views/layouts/main.php
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | use artbox\core\models\Feedback; | 15 | use artbox\core\models\Feedback; |
16 | use artbox\core\models\PageCategory; | 16 | use artbox\core\models\PageCategory; |
17 | use artbox\core\models\User; | 17 | use artbox\core\models\User; |
18 | + use artbox\core\seo\widgets\SeoBreadcrumbs; | ||
18 | use common\models\Service; | 19 | use common\models\Service; |
19 | use common\models\Settings; | 20 | use common\models\Settings; |
20 | use frontend\assets\AppAsset; | 21 | use frontend\assets\AppAsset; |
@@ -209,7 +210,7 @@ | @@ -209,7 +210,7 @@ | ||
209 | } | 210 | } |
210 | $itemsMobile[] = [ | 211 | $itemsMobile[] = [ |
211 | 'label' => \Yii::t('app', 'Цены'), | 212 | 'label' => \Yii::t('app', 'Цены'), |
212 | - 'url' => '#', | 213 | + 'url' => Url::to(['site/prices']), |
213 | 'options' => [ | 214 | 'options' => [ |
214 | 'class' => 'active' | 215 | 'class' => 'active' |
215 | ] | 216 | ] |
@@ -253,6 +254,18 @@ | @@ -253,6 +254,18 @@ | ||
253 | <!-- #content должен быть в main.php --> | 254 | <!-- #content должен быть в main.php --> |
254 | <div id="content_" class="section-box-content"> | 255 | <div id="content_" class="section-box-content"> |
255 | <!-- start breadcrumbs --> | 256 | <!-- start breadcrumbs --> |
257 | + <?php if (!empty($this->params['breadcrumbs'])) {?> | ||
258 | + <section class="section-breadcrumb"> | ||
259 | + <div class="container"> | ||
260 | + <div class="row"> | ||
261 | + <div class="col-xs-12 col-sm-12 breadcrumb-wrapp"> | ||
262 | + <?=SeoBreadcrumbs::widget([ | ||
263 | + 'links' => isset($this->params[ 'breadcrumbs' ]) ? $this->params[ 'breadcrumbs' ] : [], | ||
264 | + ])?> | ||
265 | + </div> | ||
266 | + </div> | ||
267 | + </section> | ||
268 | + <?php }?> | ||
256 | <!-- если не главная выводить сюда--> | 269 | <!-- если не главная выводить сюда--> |
257 | <!-- end breadcrumbs --> | 270 | <!-- end breadcrumbs --> |
258 | 271 | ||
@@ -265,17 +278,17 @@ | @@ -265,17 +278,17 @@ | ||
265 | <div class="row"> | 278 | <div class="row"> |
266 | <div class="col-xs-12"> | 279 | <div class="col-xs-12"> |
267 | <div class="map-info-wrapp"> | 280 | <div class="map-info-wrapp"> |
268 | - <div class="marker-img"><img src="images/map/marker-1.png" width="68" height="80" alt=""></div> | 281 | + <div class="marker-img"><img src="/images/map/marker-1.png" width="68" height="80" alt=""></div> |
269 | <div class="map-adress"><?=$settings->address?></div> | 282 | <div class="map-adress"><?=$settings->address?></div> |
270 | <?php if (!empty($settings->phone) or !empty($settings->phone2)){?> | 283 | <?php if (!empty($settings->phone) or !empty($settings->phone2)){?> |
271 | - <div class="ico-map"><img src="images/map/phone-map.svg" alt=""></div> | 284 | + <div class="ico-map"><img src="/images/map/phone-map.svg" alt=""></div> |
272 | <div class="map-phone"> | 285 | <div class="map-phone"> |
273 | <p><?=$settings->phone?></p> | 286 | <p><?=$settings->phone?></p> |
274 | <p><?=$settings->phone2?></p> | 287 | <p><?=$settings->phone2?></p> |
275 | </div> | 288 | </div> |
276 | <?php } ?> | 289 | <?php } ?> |
277 | <?php if (!empty($settings->email)){?> | 290 | <?php if (!empty($settings->email)){?> |
278 | - <div class="ico-map ico-map-mail"><img src="images/map/mail-map.svg" alt=""></div> | 291 | + <div class="ico-map ico-map-mail"><img src="/images/map/mail-map.svg" alt=""></div> |
279 | <div class="map-mail"> | 292 | <div class="map-mail"> |
280 | <a href="mailto:<?=$settings->email?>"><?=$settings->email?></a> | 293 | <a href="mailto:<?=$settings->email?>"><?=$settings->email?></a> |
281 | </div> | 294 | </div> |
@@ -329,9 +342,9 @@ | @@ -329,9 +342,9 @@ | ||
329 | 342 | ||
330 | <div class="col-xs-3 col-sm-3"> | 343 | <div class="col-xs-3 col-sm-3"> |
331 | <ul class="seti-list"> | 344 | <ul class="seti-list"> |
332 | - <li><a target="_blank" href="#"><img src="images/s-1.svg" alt=""></a></li> | ||
333 | - <li><a target="_blank" href="#"><img src="images/s-2.svg" alt=""></a></li> | ||
334 | - <li><a target="_blank" href="#"><img src="images/s-3.svg" alt=""></a></li> | 345 | + <li><a target="_blank" href="#"><img src="/images/s-1.svg" alt=""></a></li> |
346 | + <li><a target="_blank" href="#"><img src="/images/s-2.svg" alt=""></a></li> | ||
347 | + <li><a target="_blank" href="#"><img src="/images/s-3.svg" alt=""></a></li> | ||
335 | </ul> | 348 | </ul> |
336 | </div> | 349 | </div> |
337 | </div> | 350 | </div> |
@@ -367,7 +380,7 @@ | @@ -367,7 +380,7 @@ | ||
367 | <div class="button-call-mob"><a class="call-sms" href="sms:<?= $settings->phone ?>">Отправить SMS</a> | 380 | <div class="button-call-mob"><a class="call-sms" href="sms:<?= $settings->phone ?>">Отправить SMS</a> |
368 | </div> | 381 | </div> |
369 | <div class="button-call-mob"> | 382 | <div class="button-call-mob"> |
370 | - <a class="call-contact" href="contacts/abclinic.vcf">Добавить в контакты</a></div> | 383 | + <a class="call-contact" href="/contacts/abclinic.vcf">Добавить в контакты</a></div> |
371 | </div> | 384 | </div> |
372 | </div> | 385 | </div> |
373 | </div> | 386 | </div> |
1 | +<?php | ||
2 | + /** | ||
3 | + * @var \common\models\Price[] $prices | ||
4 | + */ | ||
5 | + ?> | ||
6 | +<?php if (!empty($prices)){?> | ||
7 | +<table> | ||
8 | + <thead> | ||
9 | + <tr> | ||
10 | + <th>Услуги</th> | ||
11 | + <th>Цена</th> | ||
12 | + </tr> | ||
13 | + </thead> | ||
14 | + <tbody> | ||
15 | + <?php foreach ($prices as $price){?> | ||
16 | + <tr> | ||
17 | + <td><?=$price->title?></td> | ||
18 | + <td><b><?=$price->price?> <span>грн.</span></b></td> | ||
19 | + </tr> | ||
20 | + <?php }?> | ||
21 | + </tbody> | ||
22 | +</table> | ||
23 | +<?php } ?> |
1 | +<?php | ||
2 | + /** | ||
3 | + * @var \common\models\Service $model; | ||
4 | + * @var \common\models\Service[] $others; | ||
5 | + */ | ||
6 | + use artbox\core\helpers\Url; | ||
7 | + | ||
8 | + $this->params[ 'breadcrumbs' ][] = $model->title | ||
9 | + ?> | ||
10 | + <section class="section-service-page"> | ||
11 | + <div class="container"> | ||
12 | + <div class="row"> | ||
13 | + <div class="hidden-xs col-xs-12 col-sm-4 col-md-3"> | ||
14 | + <div class="style service-list-wr"> | ||
15 | + <ul> | ||
16 | + <?php foreach ($others as $service){?> | ||
17 | + <li <?=($model->id == $service->id ? 'class="active"' : '')?>><a href="<?=Url::to(['alias' => $service->alias])?>"><?=$service->title?></a></li> | ||
18 | + <?php }?> | ||
19 | + </ul> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + <div class="col-xs-12 col-sm-8 col-md-9"> | ||
23 | + <div class="row"> | ||
24 | + <div class="col-xs-12"> | ||
25 | + <h1 class="title-pages"><?=$model->title?></h1> | ||
26 | + </div> | ||
27 | + </div> | ||
28 | + <div class="row"> | ||
29 | + <div class="col-xs-12 service-text-table-wrapp editor-text"> | ||
30 | + <?=$model->body?> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + </div> | ||
36 | +</section> | ||
37 | +<?php if (!empty($model->comments) or !empty($model->questions)){?> | ||
38 | +<section class="section-comments-answers fix-map-margin"> | ||
39 | + <div class="container"> | ||
40 | + <div class="row"> | ||
41 | + <?php if (!empty($model->comments)){?> | ||
42 | + <div class="col-xs-12 col-sm-4 col-md-4"> | ||
43 | + <div class="title-c-a">Отзывы</div> | ||
44 | + <div class="service-comments-wr style"> | ||
45 | + <?php foreach ($model->comments as $comment){?> | ||
46 | + <div class="service-comments style"> | ||
47 | + <div class="style comments-h-autor"><?=$comment->name?></div> | ||
48 | + <div class="style comments-h-text"><?=$comment->comment?></div> | ||
49 | + <div class="style comments-h-date"><?=date('d.m.Y', $comment->created_at)?></div> | ||
50 | + </div> | ||
51 | + <?php }?> | ||
52 | + </div> | ||
53 | + | ||
54 | + <div class="service-links-c-a">Все отзывы</div> | ||
55 | + <div class="service-c-a-btns"> | ||
56 | + <span class="btn_">Оставить отзыв</span> | ||
57 | + </div> | ||
58 | + </div> | ||
59 | + <?php }?> | ||
60 | + <div class="hidden-xs col-sm-1"></div> | ||
61 | + <div class="col-xs-12 col-sm-7 col-md-7"> | ||
62 | + <div class="title-c-a">Вопрос-ответ</div> | ||
63 | + </div> | ||
64 | + </div> | ||
65 | + </div> | ||
66 | +</section> | ||
67 | +<?php } ?> | ||
0 | \ No newline at end of file | 68 | \ No newline at end of file |
1 | +<?php | ||
2 | + /** | ||
3 | + * @var \yii\web\View $this; | ||
4 | + * @var \common\models\Service[] $services; | ||
5 | + */ | ||
6 | + $this->params['breadcrumbs'][] = \Yii::t('app', 'Цены'); | ||
7 | + ?> | ||
8 | + | ||
9 | + | ||
10 | +<section class="section-price"> | ||
11 | + <div class="container"> | ||
12 | + <div class="row"> | ||
13 | + <div class="col-xs-12"> | ||
14 | +<!-- <h1 class="title-pages">Цены на услуги медицинской клиники ABClinik</h1>--> | ||
15 | + <div class="title-pages">Цены на услуги медицинской клиники ABClinik</div> | ||
16 | + </div> | ||
17 | + </div> | ||
18 | + <div class="row"> | ||
19 | + <div class="col-xs-12"> | ||
20 | + <div class="price-bl-wrapp acordion-bl-wr"> | ||
21 | + <?php foreach ($services as $service) {?> | ||
22 | + <div class="acordion-wr service-tb-wrapp"> | ||
23 | + <span class="acordion-ico"></span> | ||
24 | + <div class="service-title-wr"> | ||
25 | + <div class="service-title"><?=$service->title?></div> | ||
26 | + </div> | ||
27 | + <table cellpadding="0" cellspacing="0" border="0"> | ||
28 | +<!-- <tr>--> | ||
29 | +<!-- <th colspan="2">Прием специалистов</th>--> | ||
30 | +<!-- </tr>--> | ||
31 | + <?php foreach ($service->prices as $price){?> | ||
32 | + <tr> | ||
33 | + <td><?=$price->title?></td> | ||
34 | + <td><?=$price->price?> <span>грн.</span></td> | ||
35 | + </tr> | ||
36 | + <?php } ?> | ||
37 | + </table> | ||
38 | + </div> | ||
39 | + <?php }?> | ||
40 | + | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | + </div> | ||
45 | +</section> | ||
0 | \ No newline at end of file | 46 | \ No newline at end of file |