0 フォロワー

タグクラウドポートレットの作成

タグクラウドは、個々のタグの人気度を示す視覚的な装飾を伴う投稿タグのリストを表示します。

1. 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ポートレットとは異なり、TagCloudポートレットはビューを使用しません。代わりに、そのプレゼンテーションはrenderContent()メソッドで行われます。これは、プレゼンテーションに多くのHTMLタグが含まれていないためです。

各タグを、対応するタグパラメーターを持つ投稿インデックスページへのハイパーリンクとして表示します。各タグリンクのフォントサイズは、他のタグの中での相対的な重みに応じて調整されます。タグの頻度値が他のタグよりも高い場合は、フォントサイズが大きくなります。

2. TagCloudポートレットの使用

TagCloudポートレットの使用は非常に簡単です。レイアウトファイル/wwwroot/blog/protected/views/layouts/column2.phpを次のように変更します。

......
<div id="sidebar">
 
    <?php if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); ?>
 
    <?php $this->widget('TagCloud', array(
        'maxTags'=>Yii::app()->params['tagCloudCount'],
    )); ?>
 
</div>
......

誤字を発見しましたか、またはこのページの改善が必要だと思いますか?
githubで編集する !