создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Облако тегов в линию на php

Генерация облака тегов. Общие моменты ясны из определения (wiki): "визуальное представление списка ярлыков (или категорий). Частота упоминаний, поисков, ссылок в интернете с определенного сайта неких слов, терминов, имен, отображается на специальной странице в виде изображения этих слов в формате гиперссылок. Размер отображения тега тем больше, чем выше релевантность данного слова (термина, имени)".

Релевантность в нашем случае определяется количеством вхождений каждого тега в их общую массу.
Учитывая все вышесказанное, весь алгоритм построения облака тегов можно разделить на 2 этапа:

  1. Генерация списка пар тег-количество вхождений
  2. Вывод облака с учетом релевантности тегов

1-я задача решается довольно просто с технической точки зрения. 2-я тоже, но здесь возможны вариации.

Ниже - класс, который написан для генерации облака тегов.

<?class TagsCloud{

private $tags;

private $font_size_min=14;

private $font_size_step=5;

function __construct($tags){

shuffle($tags);

$this->tags=$tags;}

private function get_tag_count($tag_name,$tags){

$count=0;

foreach($tags as $tag){

if($tag==$tag_name){

$count++;}}

return $count;}

private function tagscloud($tags){

$tags_list=array();

foreach ($tags as $tag){

$tags_list[$tag]=self::get_tag_count($tag,$tags);}

return $tags_list;}

private function get_min_count($tags_list){

$min=$tags_list[$this->tags[0]];

foreach ($tags_list as$tag_count){

if($tag_count<$min)$min=$tag_count;}

return $min;}

public function get_cloud(){

$cloud=Array();

$tags_list=self::tagscloud($this->tags);

$min_count=self::get_min_count($tags_list);

foreach($tags_list as$tag=>$count){

$font_steps=$count-$min_count;

$font_size=$this->font_size_min+$this->font_size_step*$font_steps;

$cloud[]="<span style='font-size:".$font_size."px'>".$tag."</span>";}

return$cloud;}}?>

Работать с этим классом примерно так:

<?$tags=array('ajax','javascript','php','ajax','jquery','seo','seo','php','blog','ajax','php','html','css','ajax','javascript','css','jquery','php');$mycloud=new TagsCloud($tags);$tags_list=$mycloud->get_cloud();foreach($tags_list as $tag){echo$tag.' ';}?>

2 этап построения облака тегов (вывод облака) заключается в преобразовании показателя релевантности (количество вхождений) в размер шрифта результирующей надписи.

В классе это реализовано следующим образом: в настройках задается минимальный размер шрифта, который соответствует минимальному уровню релевантности (1 вхождение). Все теги с большей релевантностью имеют размер на столько пикселей больше, на сколько больше они имеют вхождений. Шаг изменения можно задавать полем font_size_step, а минимальный размер шрифта полем font_size_min.

Работает только с латиницей по размеру шрифта, и кодировка не помогает (это огромный минус), зависит от индивидуальных настроек сервера хостера (может и не сработать из-за устаревшей версии, что вы тут и наблюдаете).

Скачать скрипт можно тут.

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting