如何在Yii中替换元标记?

时间:2013-02-19 07:14:13

标签: yii meta-tags

我知道我可以在Yii中注册一个新的元标记,我知道该怎么做,但我需要

替换我设置的默认标记,因为当我在文章上时,我想插入

元标记中文章的简短描述;

如何管理元标记?

3 个答案:

答案 0 :(得分:9)

如果您使用的是最新版本,则可以为元标记提供ID。

->registerMetaTag('example', 'description', null, array(), 'mytagid');

再次使用相同的id调用registerMetaTag将覆盖它。

http://www.yiiframework.com/doc/api/1.1/CClientScript#registerMetaTag-detail

答案 1 :(得分:7)

您可以使用以下方式为每页设置元标记:

Yii::app()->clientScript->registerMetaTag("This is my meta description", 'description');
Yii::app()->clientScript->registerMetaTag("These, are, my, keywords", 'keywords');

这可以在控制器或视图中设置,显然取决于您查询文章的方式,您可以使内容部分动态如此(假设$model是您选择的文章而{{1} }是存储元描述的模型属性:

meta_description

Yii site can be found here

上的文档

答案 2 :(得分:2)

你可以试试这个:

1)在'components / 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')是我的默认值取自DB。