Тема: 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: Жду комментариев от вас ;)
