Tag Cloud

Hello i’m here a new guy.

So i have question about tag cloud which a in demo…

I make same Database and same file with ext… but then i whant to display nothing don’t show… any help?

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";

		}

	}

}



models/Tag.php




<?php


class Tag extends CActiveRecord {

	public static function model($className=__CLASS__) {

		return parent::model($className);

	}


	public function tableName() {

		return '{{tag}}';

	}


	public function rules() {

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('name', 'required'),

			array('frequency', 'numerical', 'integerOnly'=>true),

			array('name', 'length', 'max'=>128),

            array('id, name, frequency', 'safe', 'on'=>'search'),


		);

	}


    public function relations() {

        return array(

        );

    }


	public function attributeLabels() {

		return array(

			'id' => 'id',

			'name' => 'name',

			'frequency' => 'frequency',

		);

	}


	public function findTagWeights($limit = 20) {

		$models=$this->findAll(array(

			'order' => 'frequency DESC',

			'limit' => $limit,

		));


		$total = 0;

		foreach($models as $model)

			$total+=$model->frequency;


		$tags = array();

		if($total>0)

		{

			foreach($models as $model)

				$tags[$model->name]=8+(int)(16*$model->frequency/($total+10));

			ksort($tags);

		}

		return $tags;

	}


	public function suggestTags($keyword, $limit = 20) {

		$tags = $this->findAll(array(

			'condition'=>'name LIKE :keyword',

			'order'=>'frequency DESC, name',

			'limit'=>$limit,

			'params'=>array(

				':keyword'=>'%'.strtr($keyword,array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\')).'%',

			),

		));

		$names=array();

		foreach($tags as $tag)

			$names[]=$tag->name;

		return $names;

	}


	public static function string2array($tags)

	{

		return preg_split('/\s*,\s*/',trim($tags),-1,PREG_SPLIT_NO_EMPTY);

	}


	public static function array2string($tags)

	{

		return implode(', ',$tags);

	}


	public function updateFrequency($oldTags, $newTags)

	{

		$oldTags=self::string2array($oldTags);

		$newTags=self::string2array($newTags);

		$this->addTags(array_values(array_diff($newTags,$oldTags)));

		$this->removeTags(array_values(array_diff($oldTags,$newTags)));

	}


	public function addTags($tags)

	{

		$criteria=new CDbCriteria;

		$criteria->addInCondition('name',$tags);

		$this->updateCounters(array('frequency'=>1),$criteria);

		foreach($tags as $name)

		{

			if(!$this->exists('name=:name',array(':name'=>$name)))

			{

				$tag=new Tag;

				$tag->name=$name;

				$tag->frequency=1;

				$tag->save();

			}

		}

	}


	public function removeTags($tags)

	{

		if(empty($tags))

			return;

		$criteria=new CDbCriteria;

		$criteria->addInCondition('name',$tags);

		$this->updateCounters(array('frequency'=>-1),$criteria);

		$this->deleteAll('frequency<=0');

	}

}



And in a view…




            <?php $this->widget('TagCloud', array(

                'maxTags'=>Yii::app()->params['tagCloudCount'],

            )); ?>