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 |