Commit 7f8928746b5c59458d9a974299dd7037621b8262
1 parent
41fb7b5b
- blog
Showing
2 changed files
with
136 additions
and
66 deletions
Show diff stats
frontend/controllers/ServiceController.php
| @@ -14,83 +14,153 @@ | @@ -14,83 +14,153 @@ | ||
| 14 | use yii\web\Controller; | 14 | use yii\web\Controller; |
| 15 | use yii\web\NotFoundHttpException; | 15 | use yii\web\NotFoundHttpException; |
| 16 | use frontend\microdata\MicrodataFabric; | 16 | use frontend\microdata\MicrodataFabric; |
| 17 | - | 17 | + |
| 18 | class ServiceController extends Controller | 18 | class ServiceController extends Controller |
| 19 | { | 19 | { |
| 20 | - public function actionView($id){ | 20 | + public function actionView($id) |
| 21 | + { | ||
| 21 | $model = $this->findModel($id); | 22 | $model = $this->findModel($id); |
| 22 | - if ($model->parent_id == null){ | ||
| 23 | - $others = Service::find()->where(['parent_id' => $model->id])->with(['services.language.alias', 'language.alias'])->all(); | ||
| 24 | - if (empty($others)){ | ||
| 25 | - $others = Service::find()->where(['parent_id' => null, 'status' => true])->with(['services.language.alias', 'language.alias'])->all(); | ||
| 26 | - } | ||
| 27 | - }elseif ($model->level == 1){ | ||
| 28 | - $others = Service::find()->where(['parent_id' => $model->parent_id])->with(['services.language.alias', 'language.alias'])->all(); | ||
| 29 | - }else{ | ||
| 30 | - $others = Service::find()->where(['parent_id' => (new Query())->select('parent_id')->from('service')->where(['id' => $model->parent_id])])->with(['services.language.alias', 'language.alias'])->all(); | 23 | + if ($model->parent_id == null) { |
| 24 | + $others = Service::find() | ||
| 25 | + ->where([ 'parent_id' => $model->id ]) | ||
| 26 | + ->with( | ||
| 27 | + [ | ||
| 28 | + 'services.language.alias', | ||
| 29 | + 'language.alias', | ||
| 30 | + ] | ||
| 31 | + ) | ||
| 32 | + ->all(); | ||
| 33 | + if (empty($others)) { | ||
| 34 | + $others = Service::find() | ||
| 35 | + ->where( | ||
| 36 | + [ | ||
| 37 | + 'parent_id' => null, | ||
| 38 | + 'status' => true, | ||
| 39 | + ] | ||
| 40 | + ) | ||
| 41 | + ->with( | ||
| 42 | + [ | ||
| 43 | + 'services.language.alias', | ||
| 44 | + 'language.alias', | ||
| 45 | + ] | ||
| 46 | + ) | ||
| 47 | + ->all(); | ||
| 48 | + } | ||
| 49 | + } elseif ($model->level == 1) { | ||
| 50 | + $others = Service::find() | ||
| 51 | + ->where([ 'parent_id' => $model->parent_id ]) | ||
| 52 | + ->with( | ||
| 53 | + [ | ||
| 54 | + 'services.language.alias', | ||
| 55 | + 'language.alias', | ||
| 56 | + ] | ||
| 57 | + ) | ||
| 58 | + ->all(); | ||
| 59 | + } else { | ||
| 60 | + $others = Service::find() | ||
| 61 | + ->where( | ||
| 62 | + [ | ||
| 63 | + 'parent_id' => ( new Query() )->select('parent_id') | ||
| 64 | + ->from('service') | ||
| 65 | + ->where([ 'id' => $model->parent_id ]), | ||
| 66 | + ] | ||
| 67 | + ) | ||
| 68 | + ->with( | ||
| 69 | + [ | ||
| 70 | + 'services.language.alias', | ||
| 71 | + 'language.alias', | ||
| 72 | + ] | ||
| 73 | + ) | ||
| 74 | + ->all(); | ||
| 31 | } | 75 | } |
| 32 | - | ||
| 33 | - | 76 | + |
| 34 | # ัะฟะธัะพะบ ัะตะฝ ะดะปั ะผะธะบัะพะดะฐะฝะฝัั | 77 | # ัะฟะธัะพะบ ัะตะฝ ะดะปั ะผะธะบัะพะดะฐะฝะฝัั |
| 35 | - $prices=[]; | ||
| 36 | - foreach ($model->prices as $kry=>$price) | ||
| 37 | - { | ||
| 38 | - foreach ($price as $key2=>$val2){ | ||
| 39 | - if($key2=='price')$prices[]=$price[$key2]; | 78 | + $prices = []; |
| 79 | + foreach ($model->prices as $kry => $price) { | ||
| 80 | + foreach ($price as $key2 => $val2) { | ||
| 81 | + if ($key2 == 'price') { | ||
| 82 | + $prices[] = $price[ $key2 ]; | ||
| 83 | + } | ||
| 40 | } | 84 | } |
| 41 | - | 85 | + |
| 42 | } | 86 | } |
| 43 | - | ||
| 44 | - $layoutMicrodata=(count($model->prices)>1)? | 87 | + |
| 88 | + $layoutMicrodata = ( count($model->prices) > 1 ) ? [ | ||
| 89 | + '@context' => 'http://schema.org/', | ||
| 90 | + '@type' => 'Product', | ||
| 91 | + 'name' => "'{$model->language->attributes['title']}'", | ||
| 92 | + 'offers' => [ | ||
| 93 | + '@type' => 'AggregateOffer', | ||
| 94 | + 'lowPrice' => "'" . min($prices) . "'", | ||
| 95 | + 'highPrice' => "'" . max($prices) . "'", | ||
| 96 | + 'priceCurrency' => 'UAH', | ||
| 97 | + ], | ||
| 98 | + ] : [ | ||
| 99 | + 'type' => 'Product', | ||
| 100 | + 'name' => "'{$model->language->attributes['title']}'", | ||
| 101 | + 'offers' => [ | ||
| 102 | + '@type' => 'Offer', | ||
| 103 | + 'priceCurrency' => 'UAH', | ||
| 104 | + 'Price' => "'" . max($prices) . "'", | ||
| 105 | + ], | ||
| 106 | + ]; | ||
| 107 | + | ||
| 108 | + $microdata = new MicrodataFabric(); | ||
| 109 | + $pageMicrodata = $microdata::createJsonFromProduct($layoutMicrodata) | ||
| 110 | + ->toJson(); | ||
| 111 | + | ||
| 112 | + $model->body = str_replace( | ||
| 113 | + '[[prices]]', | ||
| 114 | + $this->renderPartial('_prices', [ 'prices' => $model->prices ]), | ||
| 115 | + $model->body | ||
| 116 | + ); | ||
| 117 | + return $this->render( | ||
| 118 | + 'view', | ||
| 45 | [ | 119 | [ |
| 46 | - '@context'=> 'http://schema.org/', | ||
| 47 | - '@type'=> 'Product', | ||
| 48 | - 'name'=> "'{$model->language->attributes['title']}'", | ||
| 49 | - 'offers' => | ||
| 50 | - [ | ||
| 51 | - '@type'=> 'AggregateOffer', | ||
| 52 | - 'lowPrice'=> "'".min($prices)."'", | ||
| 53 | - 'highPrice'=> "'".max($prices)."'", | ||
| 54 | - 'priceCurrency'=> 'UAH' | ||
| 55 | - ] | 120 | + 'model' => $model, |
| 121 | + 'others' => $others, | ||
| 122 | + 'microdata' => $pageMicrodata, | ||
| 56 | ] | 123 | ] |
| 57 | - :[ | ||
| 58 | - 'type'=>'Product', | ||
| 59 | - 'name'=> "'{$model->language->attributes['title']}'", | ||
| 60 | - 'offers'=> [ | ||
| 61 | - '@type'=> 'Offer', | ||
| 62 | - 'priceCurrency'=> 'UAH', | ||
| 63 | - 'Price'=> "'".max($prices)."'", | ||
| 64 | - ] | ||
| 65 | - ]; | ||
| 66 | - | ||
| 67 | - | ||
| 68 | - $microdata=new MicrodataFabric(); | ||
| 69 | - $pageMicrodata=$microdata::createJsonFromProduct($layoutMicrodata)->toJson(); | ||
| 70 | - | ||
| 71 | - | ||
| 72 | - | ||
| 73 | - $model->body = str_replace('[[prices]]', $this->renderPartial('_prices', ['prices' => $model->prices]), $model->body); | ||
| 74 | - return $this->render('view', [ | ||
| 75 | - 'model' => $model, | ||
| 76 | - 'others'=> $others, | ||
| 77 | - 'microdata'=>$pageMicrodata | ||
| 78 | - ]); | 124 | + ); |
| 79 | } | 125 | } |
| 80 | 126 | ||
| 81 | - public function findModel($id){ | 127 | + public function findModel($id) |
| 128 | + { | ||
| 82 | $model = Service::find() | 129 | $model = Service::find() |
| 83 | - ->where(['id' => $id, 'status' => true]) | ||
| 84 | - ->with(['language.alias', 'prices' => function (ActiveQuery $query){ | ||
| 85 | - $query->where(['status' => true])->with('language')->orderBy('sort'); | ||
| 86 | - }, 'comments' => function (ActiveQuery $query){ | ||
| 87 | - $query->where(['status' => true]); | ||
| 88 | - }, 'questions' => function (ActiveQuery $query){ | ||
| 89 | - $query->where(['status' => true])->with('doctor'); | ||
| 90 | - },'packages' => function (ActiveQuery $query){ | ||
| 91 | - $query->with(['image', 'language.alias'])->where(['status' => true]); | ||
| 92 | - }])->one(); | ||
| 93 | - if (empty($model)){ | 130 | + ->where( |
| 131 | + [ | ||
| 132 | + 'id' => $id, | ||
| 133 | + 'status' => true, | ||
| 134 | + ] | ||
| 135 | + ) | ||
| 136 | + ->with( | ||
| 137 | + [ | ||
| 138 | + 'language.alias', | ||
| 139 | + 'prices' => function (ActiveQuery $query) { | ||
| 140 | + $query->where([ 'status' => true ]) | ||
| 141 | + ->with('language') | ||
| 142 | + ->orderBy('sort'); | ||
| 143 | + }, | ||
| 144 | + 'comments' => function (ActiveQuery $query) { | ||
| 145 | + $query->where([ 'status' => true ]); | ||
| 146 | + }, | ||
| 147 | + 'questions' => function (ActiveQuery $query) { | ||
| 148 | + $query->where([ 'status' => true ]) | ||
| 149 | + ->with('doctor'); | ||
| 150 | + }, | ||
| 151 | + 'packages' => function (ActiveQuery $query) { | ||
| 152 | + $query->with( | ||
| 153 | + [ | ||
| 154 | + 'image', | ||
| 155 | + 'language.alias', | ||
| 156 | + ] | ||
| 157 | + ) | ||
| 158 | + ->where([ 'status' => true ]); | ||
| 159 | + }, | ||
| 160 | + ] | ||
| 161 | + ) | ||
| 162 | + ->one(); | ||
| 163 | + if (empty($model)) { | ||
| 94 | throw new NotFoundHttpException('Model not found'); | 164 | throw new NotFoundHttpException('Model not found'); |
| 95 | } | 165 | } |
| 96 | return $model; | 166 | return $model; |
frontend/views/blog/view.php
| @@ -63,7 +63,7 @@ | @@ -63,7 +63,7 @@ | ||
| 63 | <?=ImageHelper::set(($model->image) ? $model->image->getPath() : null) | 63 | <?=ImageHelper::set(($model->image) ? $model->image->getPath() : null) |
| 64 | ->cropResize(555, 370) | 64 | ->cropResize(555, 370) |
| 65 | ->quality(84) | 65 | ->quality(84) |
| 66 | - ->renderImage(['alt'=>$alt,'title'=>$title])?> | 66 | + ->renderImage(['alt'=>$alt,'title'=>$title, 'class' => 'blog-view-img'])?> |
| 67 | <div class="blog-view-date-all"> | 67 | <div class="blog-view-date-all"> |
| 68 | <span class="blog-view-date"><?=date('d.m.Y', $model->created_at)?></span> | 68 | <span class="blog-view-date"><?=date('d.m.Y', $model->created_at)?></span> |
| 69 | <span class="blog-view-comments-ico"><?=count($model->comments)?></span> | 69 | <span class="blog-view-comments-ico"><?=count($model->comments)?></span> |