- Начало
- Начальное прототипирование
- Управление записями
- Управление комментариями
- Портлеты
- Последние штрихи
Создание портлета облака тегов
Облако тегов отображает список тегов записей с визуальным оформлением, показывающим популярность каждого тега.
Создание класса 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"; } } }
Портлет TagCloud, в отличие от портлета UserMenu, не использует отображение.
Вместо этого его внешний вид формирует метод renderContent() так как нет
необходимости выводить большое количество HTML.
Мы отображаем каждый тег как ссылку на список записей, содержащих его. Размер шрифта каждой такой ссылки изменяется в зависимости от относительного веса тега по отношению к остальным. Чем более часто используется тег, тем больший используется размер шрифта.
Использование портлета 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> …
