0 follower

Создание портлета облака тегов

Облако тэгов отображает список тэгов записей с визуальным оформлением, показывающим популярность каждого тэга.

1. Создание класса TagCloud

Мы создаем класс TagCloud в файле /wwwroot/blog/protected/components/TagCloud.php. Содержимое файла:

<?php
class TagCloud extends Portlet
{
    public $title='Tags';
 
    public function getTagWeights()
    {
        return Tag::model()->findTagWeights();
    }
 
    protected function renderContent()
    {
        $this->render('tagCloud');
    }
}

В коде выше мы вызываем метод findTagWeights, который определен в классе Tag. Метод возвращает список тэгов с их относительными весами. Если тэг связан с большим количеством записей, он получает более высокий вес. Мы будем использовать веса для управления отображением тэгов.

2. Создание представления tagCloud

Представление tagCloud сохранено в файле /wwwroot/blog/protected/components/views/tagCloud.php. Для каждого тэга, возвращенного методом TagCloud::getTagWeights(), представление отображает гиперссылку, которая ведет к странице записей, относящихся к данному тэгу. Размер шрифта ссылки определен согласно значению веса тэга. Чем выше вес, тем больше размер шрифта.

3. Использование портлета TagCloud

Использовать портлет TagCloud очень просто. Мы изменяем файл макета /wwwroot/blog/protected/views/layouts/main.php следующим образом,

......
<div id="sidebar">
 
<?php $this->widget('UserLogin',array('visible'=>Yii::app()->user->isGuest)); ?>
 
<?php $this->widget('UserMenu',array('visible'=>!Yii::app()->user->isGuest)); ?>
 
<?php $this->widget('TagCloud'); ?>
 
</div>
......