Для создания облака, сначало нужно определится с тем, к какому ГД мы
его применим. Допустим в моем случает это Новости. В разделе ГД -
Новости создаем два поля: count - счетчик посещений и tags - выводимы
тег для облака.
Вообще суть облака такова, что счетчик считает посещения и чем их
больше тем выше размер шрифта у тега.
Итак, сначала со счетчиком. Ставим на страницу с новостью такой PHP
код в блок PRE:
<?
global $ctx, $_wchome, $_host, $_libdir;
$db = $ctx->_getDB();
$id = $ctx->getParam('article');
$db->query("UPDATE dshybrid_12 SET f_count=f_count+1 WHERE id='$id'");
?>
Где dshybrid_12 - наш ГД с новостями.
f_count - это поле count
ТАк, теперь у нас на странице смчитаются посещения. Это самый
примитивный счетчик, но для начала хватит.
Теперь можно приступить к выводу облака тегов. Для начала нам надо
заполнить поля tags. Вписываем туда какие либо слова и сохраняем.
Теперь пришло время писать PHP код:
<?
function get_tag_data()
{
global $ctx;
$db = $ctx->_getDB();
$result = $db->query("SELECT * FROM dshybrid_12 GROUP BY f_tags
ORDER BY f_date DESC");
while($row = mysql_fetch_array($result))
{
$tags[$row['f_tags']] = $row['f_count'];
$id[$row['f_tags']] = $row['id'];
}
$min_font_size = 10; //минимальный размер тега в px
$max_font_size = 30; //максимальный размер тега в px
$cloud_html = '';
$cloud_tags = array();
$maximum_count = max(array_values($tags));
$minimum_count = min(array_values($tags));
$spread = $maximum_count - $minimum_count;
foreach ($tags as $tag => $count)
{
$size = $min_font_size + ($count - $minimum_count) *
($max_font_size - $min_font_size) / $spread;
$cloud_tags[] = '<a style="font-size: '. floor($size) . 'px' . '"
href="
http://www.butsch.ru/news/index.php/article/.' . $id[$tag] . '"
title="\'' . $tag . '\' хитов ' . $count . '">'
. htmlspecialchars(stripslashes($tag)) . '</a> ';
}
$cloud_html = join("\n", $cloud_tags) . "\n";
return $cloud_html;
}
$ctx->setParam('tagcloud',get_tag_data());
?>
Теперь что к чему $result = $db->query("SELECT * FROM dshybrid_12
GROUP BY f_tags ORDER BY f_date DESC");
Выбираем из ГД dshybrid_12 все поля и сортируем по дате добавления.
$cloud_tags[] = '<a style="font-size: '. floor($size) . 'px' . '"
href="
http://www.butsch.ru/news/index.php/article/.' . $id[$tag] . '"
title="\'' . $tag . '\' хитов ' . $count . '">'
. htmlspecialchars(stripslashes($tag)) . '</a> ';
Указываем ссылку куда будет вести тег облака. В моем случает это
новость
$ctx->setParam('tagcloud',get_tag_data()); - для вывода в блоке.
Мы присваиваем tagcloud - функцию get_tag_data()
Ставим этот PHP код на страницах где хотим выводить облако тегов в
блок PRE
И на этих же страницах ставим объект - разное - Включение шаблона с
кодом в нужный нам блок.
{if $header}<h1>{$header}</h1>{/if}
<div class="tagsblock" >{$ctx->getParam('tagcloud')}</div>
{$ctx->getParam('tagcloud')} - выводим присвоенную функцию
Если все сделали правильно, то должно в блоке с включеным шаблоном
вывестись облако.
Прмиер у меня на сайте
http://www.butsch.ru/