1

Тема: Tag Cloud class для CodeIgniter (php5)

На многих блогах, соц. сетях и порталах используют облако тегов. Так что я решил поделиться с вами своей библиотекой для генерации облака тегов в CI проектах. Все оформление задается в css! По просьбам трудящихся прикрепил скриншот.

Представляю вам библиотеку Tag Cloud v.1.0.

MySQL таблицы:

CREATE TABLE IF NOT EXISTS `articles` (
    `id` int(11) NOT NULL auto_increment,
    `url` varchar(255) NOT NULL default '',
    `date` datetime NOT NULL default '0000-00-00 00:00:00',
    `name` varchar(255) NOT NULL default '',
    `annonce` text NOT NULL,
    `content` mediumtext NOT NULL,
    `title` varchar(255) NOT NULL,
    `keywords` varchar(255) NOT NULL,
    `description` varchar(255) NOT NULL,
    `image` varchar(255) NOT NULL,
    `image_big` varchar(255) NOT NULL,
    `publish` tinyint(1) NOT NULL default '1',
    PRIMARY KEY  (`id`),
    KEY `publish` (`publish`)
) ENGINE=MyISAM AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `tag2art` (
    `art_id` int(10) unsigned NOT NULL default '0',
    `tag_id` int(10) unsigned NOT NULL default '0',
    PRIMARY KEY  (`art_id`,`tag_id`),
    KEY `art_id` (`art_id`),
    KEY `tag_id` (`tag_id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `tags` (
    `tag_id` int(10) unsigned NOT NULL auto_increment,
    `tag` varchar(30) NOT NULL default '',
    `raw_tag` varchar(30) NOT NULL default '',
    PRIMARY KEY  (`tag_id`),
    KEY `raw_tag` (`raw_tag`)
) ENGINE=MyISAM AUTO_INCREMENT=1;

Контроллер:

public function tagcloud()
{
    $this->load->model('tags_model');
    $this->load->library('tag_cloud');
        
    $tags = $this->tags_model->get_tags();
    foreach($tags as $tag){
        $data['tags'][] = array ($tag->quantity, $tag->tag, $tag->raw_tag);
    }
    
    $this->load->view('tags_widget_tpl', $data);
}

Модель:

public function get_tags()
{
    $query = $this->db
        ->select('COUNT(tag2art.tag_id) AS quantity, tags.tag, tags.raw_tag')
        ->from(' tag2art, tags')
        ->where('tag2art.tag_id = tags.tag_id')
        ->group_by('tag2art.tag_id')
        ->get();

    if ($query->num_rows() > 0){
        $rows = $query->result();
        $query->free_result();
        return $rows;
    } else {
        return FALSE;
    }
}

Отображение:

<div class="tagcloud">
    <?php echo $this->tag_cloud->generate($tags); ?>
</div>

Стили:

.tagcloud {
    font:normal 14px/160% Arial, Helvetica, sans-serif;
    text-align:center;
}

.tagcloud a {
    color:#0A026A;
    text-decoration:none;
    white-space:nowrap;
    text-transform:capitalize;
}

.tagcloud a:hover {
    text-decoration:underline;
    color:#DB0000;
}

.tag10 {
    font-size:80%;
}

.tag9 {
    font-size:90%;
}

.tag8 {
    font-size:100%;
}

.tag7 {
    font-size:110%;
}

.tag6 {
    font-size:120%;
}

.tag5 {
    font-size:130%;
}

.tag4 {
    font-size:140%;
}

.tag3 {
    font-size:150%;
}

.tag2 {
    font-size:160%;
}

.tag1 {
    font-size:170%;
}

PS: Файл Tag_Cloud.phps переименуйте в Tag_Cloud.php и скопируйте в папку:
application/libraries/

PPS: Жду комментариев от вас ;)

Post's attachments

Attachment icon screenshot.png 5.93 kb, 132 downloads since 2009-10-09 

Attachment icon Tag_Cloud.phps 3.03 kb, 840 downloads since 2009-10-09 

Thumbs up Thumbs down