findModel($id); 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(); } # список цен для микроданных $prices=[]; foreach ($model->prices as $kry=>$price) { foreach ($price as $key2=>$val2){ if($key2=='price')$prices[]=$price[$key2]; } } $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', ] ]; if (count($model->prices) <= 1 && isset($prices)) { if (!empty($prices)) $layoutMicrodata['offers']['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', [ 'model' => $model, 'others'=> $others, 'microdata'=>$pageMicrodata ]); } public function findModel($id){ $model = Service::find() ->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)){ throw new NotFoundHttpException('Model not found'); } return $model; } }