タグクラウド は、各タグの人気の高さを示唆する視覚効果とともに、記事のタグの一覧を表示するものです。
TagCloud
クラスの作成 ¶TagCloud
クラスを /wwwroot/blog/protected/components/TagCloud.php
ファイルとして
作成します。このファイルは以下のとおりです。
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
ポートレットと異り、TagCloud
ポートレットはビューを使用しません。
その代わり、その表現は renderContent()
メソッドで行われます。
これは表現が、あまり多くの HTML タグを含まないためです。
それぞれのタグは、記事のインデクスページへのハイパーリンク (対応するタグをパラメータとして持ちます) として表示されます。 各タグのリンクのフォントサイズは、他のタグとの相対的な重みにより調整されます。 もしあるタグがより頻繁に記事に表れるなら、そのフォントサイズはより大きくなります。
TagCloud
ポートレットの使用 ¶TagCloud
ポートレットの使用はとても単純です。
レイアウトファイル /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> ......
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.