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> | ... | ... |