5

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

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

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

如何管理元标记?

4

3 回答 3

9

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

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

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

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

于 2013-02-19T11:36:13.440 回答
7

您可以使用以下方法设置每页的 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 网站上的文档可以在这里找到

于 2013-02-19T08:07:07.353 回答
2

你可以试试这个:

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') 是我从数据库中获取的默认值。

于 2013-09-18T09:57:05.443 回答