タグクラウドポートレットの作成
各タグに属する記事の一覧を表示する
タグが多く含まれるほどリンクの文字を大きくする
TagCloudクラスの作成
タグを表示処理するための”TagCloud.php”ファイルを作成する
格納先は【/blog/protected/components/】
<?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"
);
}
}
}
あまり多くのHTMLタグを含まないため『UserMenu』ポートレットと異なり 『TagCloud』ポートレットはビューを使用しない代わりに『renderContent()』メソッドで処理する それぞれのタグは、記事のインデックスページへのハイパーリンクとして表示する タグが頻繁に主具現するほどフォントサイズが大きくなる
TagCloudポートレットの使用
“colimn2.php”ファイルを修正する
・・・
<div id="sidebar">
<?php
// "UserMenu"ポートレットを表示
if(!Yii::app()->user->isGuest) $this->widget('UserMenu');
?>
<?php
$this->widget(
'TagCloud',
array(
'maxTags'=>Yii::app()->params['tagCloudCount'],
)
);
?>
</div><!-- sidebar -->
・・・
■実行画面
【http://loaclhost/index.php?r=post/】にアクセス
※URLの書き換えについては次章で解説する
参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/portlet.tags
