Подпишитесь на RSS

Логарифмическое облако тегов

This item was filled under [ Фишки ]

Пишем облако тегов на PHP.
Так называемы теги (ключевые слова статьи) в последнее время приобрелы широкое распространение в блогосфере и новосных порталах..
Давайте попробуем оформить облако.
Теги, которые часто встречаются, будут отображаться большим шрифтом нежели теги с меньшим колличеством вхождений..

<?php
/**
 * Логарифмическое облако тегов
 * автор: Nc_Soft
 * 22.01.09
 */
 
/*
Допустим, имеем теги и частоту их встречаемости
тег1 5
тег2 6
тег3 9
тег4 2
тег5 8
тег6 13
тег7 1
тег8 16
....
*/
 
//эти данные обычно берутся из бд, тут же я проимитирую их массивом
$tags=array(
'тег1'=> 5,
'тег2'=> 6,
'тег3'=> 9,
'тег4'=> 2,
'тег5'=> 8,
'тег6'=> 13,
'тег7'=> 1,
'тег8'=> 16,
);
 
$minSize=10; //минимальный размер шрифта
$maxSize=26; //максимальный размер шрифта
 
$minWeight=min($tags); //минимальный вес тега
$maxWeight=max($tags); //максимальный вес тега
 
$tegi=array();
 
//вычислим размер шрифта тегов
foreach ($tags as $tag=>$tagWeight) {
 
    //шрифт по логарифмическому закону
    $font= floor( (log($tagWeight + 1) - log($minWeight + 1)) / (log($maxWeight + 1) - log($minWeight + 1)) * ($maxSize - $minSize) + $minSize );
 
    //добавим в массив
    $tegi[]='<a href="" style="font-size:'.$font.'px">'.$tag.'</a>';
}
 
//теперрь перетасуем и выведем
shuffle($tegi);
 
echo implode('<br />',$tegi);
 
/*
кому интресно что получилось могут запустить :)
*/
 
?>

Популярность: 8%

Tagged with: [ ]
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Комментарии