タグクラウドポートレットの作成 ========================== [タグクラウド](http://en.wikipedia.org/wiki/Tag_cloud) は、各タグの人気の高さを示唆する視覚効果とともに、記事のタグの一覧を表示するものです。 `TagCloud`クラスの作成 ------------------------- `TagCloud` クラスを `/wwwroot/blog/protected/components/TagCloud.php` ファイルとして 作成します。このファイルは以下のとおりです。 ~~~ [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` を以下のように修正します。 ~~~ [php] ...... ...... ~~~
$Id$