我知道我可以在 Yii 中注册一个新的元标记并且我知道该怎么做,但我需要
替换我设置的默认标签,因为当我在一篇文章上时,我想插入
元标记中文章的简短描述;
如何管理元标记?
如果您使用的是最新版本,则可以为元标记提供一个 ID。
->registerMetaTag('example', 'description', null, array(), 'mytagid');
使用相同的 id 再次调用 registerMetaTag 将覆盖它。
http://www.yiiframework.com/doc/api/1.1/CClientScript#registerMetaTag-detail
您可以使用以下方法设置每页的 Meta 标签:
Yii::app()->clientScript->registerMetaTag("This is my meta description", 'description');
Yii::app()->clientScript->registerMetaTag("These, are, my, keywords", 'keywords');
这可以在控制器或视图中设置,显然取决于您查询文章的方式,您可以像这样使内容部分动态化(假设$model
是您选择的文章并且meta_description
是您的模型属性存储元描述):
Yii::app()->clientScript->registerMetaTag($model->meta_description, 'description');
Yii 网站上的文档可以在这里找到
你可以试试这个:
1)在“组件/Controller.php”中:
public $metaDescription;
public $metaKeywords;
public function getMetaDescription() {
if(!$this->metaDescription)
return Yii::app()->settings->getValue('meta_description'); //return default description
return $this->metaDescription;
}
public function getMetaKeywords() {
if(!$this->metaKeywords)
return Yii::app()->settings->getValue('meta_keywords'); //return default keywords
return $this->metaKeywords;
}
2) 在你的 main.php 布局中:
...
Yii::app()->clientScript->registerMetaTag($this->getMetaDescription(), 'description');
Yii::app()->clientScript->registerMetaTag($this->getMetaKeywords(), 'keywords');
...
3)在您的其他布局中:
...
// If you don't do that, the description and keywords will be default for this page.
$this->metaDescription = 'Your description here';
$this->metaKeywords = 'your, keywords, here';
...
请注意, Yii::app()->settings->getValue('meta_description') 和 Yii::app()->settings->getValue('meta_keywords') 是我从数据库中获取的默认值。