标签云显示帖子标签列表,并使用视觉装饰来暗示每个标签的流行程度。
TagCloud
类 ¶我们在文件/wwwroot/blog/protected/components/TagCloud.php
中创建TagCloud
类。该文件内容如下
Yii::import('zii.widgets.CPortlet');
class TagCloud extends CPortlet
{
public $title='Tags';
public $maxTags=20;
protected function renderContent()
{
$tags=Tag::model()->findTagWeights($this->maxTags);
foreach($tags as $tag=>$weight)
{
$link=CHtml::link(CHtml::encode($tag), array('post/index','tag'=>$tag));
echo CHtml::tag('span', array(
'class'=>'tag',
'style'=>"font-size:{$weight}pt",
), $link)."\n";
}
}
}
与UserMenu
portlet不同,TagCloud
portlet不使用视图。相反,它的呈现是在renderContent()
方法中完成的。这是因为呈现不包含很多HTML标签。
我们将每个标签显示为指向帖子索引页面的超链接,并带有相应的标签参数。每个标签链接的字体大小根据它们在其他标签中的相对权重进行调整。如果某个标签的频率值高于其他标签,则其字体大小会更大。
TagCloud
Portlet ¶TagCloud
portlet的使用非常简单。我们修改布局文件/wwwroot/blog/protected/views/layouts/column2.php
如下所示,
...... <div id="sidebar"> if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); $this->widget('TagCloud', array( 'maxTags'=>Yii::app()->params['tagCloudCount'], )); </div> ......
发现错别字或您认为此页面需要改进?
在github上编辑它 !
什么是tagCloudCount?
您需要修改您的config/main.php并在
.'params'
下添加一行,即什么是getTagWeigths?
我找不到函数getTagWeigths,所以我写了一个
希望这有帮助。
findTagWeights
findTagWeights可以在/wwwroot/yii/demos/blog/protected/models/Tag.php中找到
注册或登录以发表评论。