본문 바로가기

Yii Framework/블로그 만들기

17. 태그 클라우드 포틀릿 생성

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/portlet.tags



태그 클라우드 포틀릿 생성 

  1. TagCloud 클래스 만들기
  2. TagCloud 포틀릿 사용

태그 클라우드 는 각 태그의 인기가 높음을 시사하는 시각적 효과와 함께 기사의 태그 목록을 표시하는 것입니다.

1. 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 태그를 포함하고 있기 때문입다.

각 태그는 문서의 인덱스 페이지에 대한 하이퍼 링크 (해당 태그를 매개 변수로가집니다)로 표시됩니다. 각 태그 링크의 글꼴 크기는 다른 태그와의 상대적 가중치에 따라 조정됩니다. 만일 태그가 더 자주 기사에 나타나는 경우, 그 글꼴 크기는 더 커집니다.

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>
......