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

[Облако тегов](http://ru.wikipedia.org/wiki/Облако_тегов) отображает список
тегов записей с визуальным оформлением, показывающим популярность каждого тега.


Создание класса `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";
		}
	}
}
~~~

Портлет `TagCloud`, в отличие от портлета `UserMenu`, не использует отображение.
Вместо этого его внешний вид формирует метод `renderContent()` так как нет
необходимости выводить большое количество HTML.

Мы отображаем каждый тег как ссылку на список записей, содержащих его. Размер
шрифта каждой такой ссылки изменяется в зависимости от относительного веса
тега по отношению к остальным. Чем более часто используется тег, тем больший
используется размер шрифта.


Использование портлета `TagCloud`
--------------------------------

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

~~~
[php]
…
<div id="sidebar">

	<?php if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); ?>

	<?php $this->widget('TagCloud', array(
		'maxTags'=>Yii::app()->params['tagCloudCount'],
	)); ?>

</div>
…
~~~