0 follower

Tworzenie portletu chmurki tagów

Chmurka tagów wyświetla listę tagów wiadomości wraz z wizualnymi ozdobnikami, podpowiadającymi jak bardzo popularny jest każdy z tagów.

1. Tworzenie klasy TagCloud

Tworzymy klasę TagCloud w pliku /wwwroot/blog/protected/components/TagCloud.php. Plik ten ma następującą zawartość:

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

Powyżej wywołaliśmy metodę findTagWeights zdefiniowaną w klasie Tag. Metoda ta
zwraca listę tagów wraz z ich relatywną wagą częstości. Jeśli tag powiązany jest
z większą ilością wiadomości, otrzymuje on wyższą wagę. Będziemy używali tych wag do kontroli sposoby wyświetlania tagów.

2. Tworzenie widoku tagCloud

Widok tagCloud jest zapisany w pliku /wwwroot/blog/protected/components/views/tagCloud.php. Dla każdego tagu zwróconego przez TagCloud::getTagWeights(), wyświetla on hyperlink,
który będzie wiódł do strony wyświetlającej wiadomości zawierające ten tag. Rozmiar czcionki tego linku zależy od wartości wagi tagu. Im większa waga, tym większy rozmiar czcionki.

3. Używanie portletu TagCloud

Używanie portletu chmurki tagów TagCloud jest bardzo proste. Modyfikujemy wplik układu /wwwroot/blog/protected/views/layouts/main.php w następujący sposób:

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