public function beforeRender(ViewEvent $event) { if (Yii::$app->request->isAjax && !Yii::$app->request->isPjax) { return; } if (Yii::$app->controller->module->id == 'seoToolbar') { return; } $url = Yii::$app->request->url; if (!isset(self::$_seoPage)) { self::$_seoPage = Page::findByUrl($url); } if (self::$_seoPage) { $params = $event->params; foreach ($params as $key => $param) { if ($param instanceof Model && $param->hasMethod('getSeoPrefix')) { self::$_seoPage->addModel($param, $key); } } } if (Yii::$app->getModule('seoToolbar')->checkAccess(Yii::$app)) { if (self::$_seoPage) { Yii::$app->session->set('seoAttributes:' . $url, self::$_seoPage->getReplaceData()); } } }
public static function createByUrl($url) { $model = new self(); $model->_page = Page::findByUrl($url); if (!$model->_page) { $model->_page = new Page(['pattern' => $url]); $model->isNewRecord = true; } $model->ogTags = Json::decode($model->_page->ogTags); if (!is_array($model->ogTags)) { $model->ogTags = []; } $model->pattern = $model->_page->pattern; $model->title = $model->_page->title; $model->keywords = $model->_page->keywords; $model->description = $model->_page->description; return $model; }