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 | 14 | use yii\web\Controller; |
| 15 | 15 | use yii\web\NotFoundHttpException; |
| 16 | 16 | use frontend\microdata\MicrodataFabric; |
| 17 | - | |
| 17 | + | |
| 18 | 18 | class ServiceController extends Controller |
| 19 | 19 | { |
| 20 | - public function actionView($id){ | |
| 20 | + public function actionView($id) | |
| 21 | + { | |
| 21 | 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 | 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 | 164 | throw new NotFoundHttpException('Model not found'); |
| 95 | 165 | } |
| 96 | 166 | return $model; | ... | ... |
frontend/views/blog/view.php
| ... | ... | @@ -63,7 +63,7 @@ |
| 63 | 63 | <?=ImageHelper::set(($model->image) ? $model->image->getPath() : null) |
| 64 | 64 | ->cropResize(555, 370) |
| 65 | 65 | ->quality(84) |
| 66 | - ->renderImage(['alt'=>$alt,'title'=>$title])?> | |
| 66 | + ->renderImage(['alt'=>$alt,'title'=>$title, 'class' => 'blog-view-img'])?> | |
| 67 | 67 | <div class="blog-view-date-all"> |
| 68 | 68 | <span class="blog-view-date"><?=date('d.m.Y', $model->created_at)?></span> |
| 69 | 69 | <span class="blog-view-comments-ico"><?=count($model->comments)?></span> | ... | ... |