我想把默认的元数据描述标签作为主模板布局。
在许多情况下,我需要用视图中的自定义数据替换默认的元标记(如description和关键字)。
我试过:
$this->registerMetaTag在视图中,我需要自定义元标记,并且我已经在主布局中使用了这一点。
我想,如果我使用元标签与他们的id或名称,它将被替换,但结果显示重复的元标签,如。
<meta id="main_index" name="Description" content="my default content added by layout.">
<meta id="main_index" name="Description" content="my customized content added by the view"></head>提供默认描述标记的最佳方法是什么,但当我调用$this->registerMetaTag时可以由视图进行自定义
发布于 2015-05-14 07:16:58
我把它变成了我自己,因为我的目标不是在每个动作上重复一个默认的关键字或其他元标记,而是在我想要替换的地方使用registerMetaTag。
发布于 2016-11-09 15:20:53
这里是我的解决方案,它更简单,没有冗余控制器。您所需要的就是在app params中定义默认标记,并在视图中覆盖它们。
config/params.php
<?php
return [
'adminEmail' => 'admin@example.com',
'og_title' => ['property' => 'og:title', 'content' => 'title'],
'og_description' => ['property' => 'og:description', 'content' => 'description'],
'og_url' => ['property' => 'og:url', 'content' => '/'],
'og_image' => ['property' => 'og:image', 'content' => 'image']
];views/layouts/main.php
<?php
$this->registerMetaTag(Yii::$app->params['og_title'], 'og_title');
$this->registerMetaTag(Yii::$app->params['og_description'], 'og_description');
$this->registerMetaTag(Yii::$app->params['og_url'], 'og_url');
$this->registerMetaTag(Yii::$app->params['og_image'], 'og_image');
?>现在,如果需要设置自定义标记,则在我的视图中覆盖params。
views/site/index.php
<?php
Yii::$app->params['og_title']['content'] = 'custom title';
Yii::$app->params['og_description']['content'] = 'custom desc';
Yii::$app->params['og_url']['content'] = '/new/url';
Yii::$app->params['og_image']['content'] = 'image.jpg';
?>发布于 2015-05-11 15:35:09
您可以使用类似的id来管理已注册的元标记。确保使用Yii生成元标记。从您的问题中,您已经生成了一个表标签,这是不可能更换的,因为Yii没有管理它。
public function actionTest1{
$this->registerMetaTag('your example', 'description', null, array(), 'metaDescription');
$this->render('myView');
}
public function actionTest2{
$this->registerMetaTag('your example2', 'description', null, array(), 'metaDescription');
$this->render('myView2');
}https://stackoverflow.com/questions/30171328
复制相似问题