aedc35b5
Anastasia
- load scg to logo
|
1
2
3
4
5
6
7
8
9
10
11
|
<?php
/**
* Created by PhpStorm.
* User: stes
* Date: 29.05.18
* Time: 9:51
*/
namespace frontend\controllers;
use common\models\Service;
|
43a24059
Anastasia
- servives
|
12
|
use yii\db\ActiveQuery;
|
2032cb18
Anastasia
- services menu
|
13
|
use yii\db\Query;
|
aedc35b5
Anastasia
- load scg to logo
|
14
15
|
use yii\web\Controller;
use yii\web\NotFoundHttpException;
|
cfb947e6
alex
Микроданные для у...
|
16
|
use frontend\microdata\MicrodataFabric;
|
7f892874
Anastasia
- blog
|
17
|
|
aedc35b5
Anastasia
- load scg to logo
|
18
19
|
class ServiceController extends Controller
{
|
7f892874
Anastasia
- blog
|
20
21
|
public function actionView($id)
{
|
aedc35b5
Anastasia
- load scg to logo
|
22
|
$model = $this->findModel($id);
|
7f892874
Anastasia
- blog
|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
if ($model->parent_id == null) {
$others = Service::find()
->where([ 'parent_id' => $model->id ])
->with(
[
'services.language.alias',
'language.alias',
]
)
->all();
if (empty($others)) {
$others = Service::find()
->where(
[
'parent_id' => null,
'status' => true,
]
)
->with(
[
'services.language.alias',
'language.alias',
]
)
->all();
}
} elseif ($model->level == 1) {
$others = Service::find()
->where([ 'parent_id' => $model->parent_id ])
->with(
[
'services.language.alias',
'language.alias',
]
)
->all();
} else {
$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();
|
aedc35b5
Anastasia
- load scg to logo
|
75
|
}
|
7f892874
Anastasia
- blog
|
76
|
|
3fafe556
alex
Микроразметка для...
|
77
|
# список цен для микроданных
|
7f892874
Anastasia
- blog
|
78
79
80
81
82
83
|
$prices = [];
foreach ($model->prices as $kry => $price) {
foreach ($price as $key2 => $val2) {
if ($key2 == 'price') {
$prices[] = $price[ $key2 ];
}
|
cfb947e6
alex
Микроданные для у...
|
84
|
}
|
7f892874
Anastasia
- blog
|
85
|
|
cfb947e6
alex
Микроданные для у...
|
86
|
}
|
7f892874
Anastasia
- blog
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
$layoutMicrodata = ( count($model->prices) > 1 ) ? [
'@context' => 'http://schema.org/',
'@type' => 'Product',
'name' => "'{$model->language->attributes['title']}'",
'offers' => [
'@type' => 'AggregateOffer',
'lowPrice' => "'" . min($prices) . "'",
'highPrice' => "'" . max($prices) . "'",
'priceCurrency' => 'UAH',
],
] : [
'type' => 'Product',
'name' => "'{$model->language->attributes['title']}'",
'offers' => [
'@type' => 'Offer',
'priceCurrency' => 'UAH',
'Price' => "'" . max($prices) . "'",
],
];
$microdata = new MicrodataFabric();
$pageMicrodata = $microdata::createJsonFromProduct($layoutMicrodata)
->toJson();
$model->body = str_replace(
'[[prices]]',
$this->renderPartial('_prices', [ 'prices' => $model->prices ]),
$model->body
);
return $this->render(
'view',
|
cfb947e6
alex
Микроданные для у...
|
119
|
[
|
7f892874
Anastasia
- blog
|
120
121
122
|
'model' => $model,
'others' => $others,
'microdata' => $pageMicrodata,
|
cfb947e6
alex
Микроданные для у...
|
123
|
]
|
7f892874
Anastasia
- blog
|
124
|
);
|
aedc35b5
Anastasia
- load scg to logo
|
125
126
|
}
|
7f892874
Anastasia
- blog
|
127
128
|
public function findModel($id)
{
|
aedc35b5
Anastasia
- load scg to logo
|
129
|
$model = Service::find()
|
7f892874
Anastasia
- blog
|
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
->where(
[
'id' => $id,
'status' => true,
]
)
->with(
[
'language.alias',
'prices' => function (ActiveQuery $query) {
$query->where([ 'status' => true ])
->with('language')
->orderBy('sort');
},
'comments' => function (ActiveQuery $query) {
$query->where([ 'status' => true ]);
},
'questions' => function (ActiveQuery $query) {
$query->where([ 'status' => true ])
->with('doctor');
},
'packages' => function (ActiveQuery $query) {
$query->with(
[
'image',
'language.alias',
]
)
->where([ 'status' => true ]);
},
]
)
->one();
if (empty($model)) {
|
aedc35b5
Anastasia
- load scg to logo
|
164
165
166
167
168
|
throw new NotFoundHttpException('Model not found');
}
return $model;
}
}
|