Облако тегов с относительными размерами

Теги:

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

Не буду запудривать вам мозг азами PHP, и уж тем более не буду учить, как это реализуется на MySQL и иже с ним :) Конкретная реализация - личное дело каждого. Например, в Neutrino Atomic Edition, с моей подачи, теги работают без всякой БД, чисто на текстовых файлах, и, что парадоксально, работают быстрее, чем та же реализация с использованием базы данных, будь то MySQL, PostgreSQL, или что-то другое.

Абстрагируясь от конкретной реализации системы тегов, предположим, что имеется массив, содержащий в себе все вхождения тегов(в том числе и с повторениями). Любую реализацию вполне можно привести к этой схеме, и много процессорного времени данная операция у сервера не отнимет. Итак, код в студию:

<?
	//$tags=array('php','html','php','css','javascript','php','html','php');
	$tags=array_count_values($tags);//$tags=array('php'=>4,'html'=>2,'css'=>1,'javascript'=>1);
	$avg=array_sum($tags)/count($tags);//$avg=8/4;$avg=2;
	foreach($tags as $tag => $num)echo '<span style="font-size:'.($num/$avg).'em;"> <a href="/tags/'.urlencode($tag).'/">'.$tag.'</a> </span>';
?>

Всего 3 строчки кода превращают массив $tags в облако тегов на экране. Ясно-понятно, что первая строка в коде дана чисто для демонстрации структуры массива. Тут же возможны варианты, и если синтаксис PHP вам знаком, то разобраться в этих 3х строчках будет просто. В комментариях показано, какие значения принимают переменные.

Если вам кажется, что 1em - маловато для нормального размера тега, можно исправить 4ю строчку, заменив ($num/$avg) на страшнющее уравнение ($num * $a / $avg + $b), где $a - множитель, а $b - количество em, которое следует прибавить к конечному результату. Если кажется, что шрифт крупноват - напоминаю, что $a может быть меньше нуля, а $b может быть меньше 1.

В деле этот код можно посмотреть здесь.

Статьи схожей тематики:

Делаем поиск с подсветкой результатов

Neutrino Atomic Edition 0.8.7

Улучшенная система PHP-хуков

Хуки в PHP

Предлагаю вашему вниманию...

Комментарии(11):

rss-лента

Добавлено: 2008-08-22 12:21:31, Валерий

Если можно ... чайнику и профану .... можно все что тут написано инструкцией...как можно на моём сайте это установить и без мускола ? у меня сайт не подерживает мускул...он на файловых базах... БУДУ даже ОЧЕНЬ благодарен

Добавлено: 2008-08-22 17:37:38, Bolzamo

Все зависит от реализации тегов, их хранения в этих самых файловых базах. Если не лень - можно скачать Neutrino AE по ссылке:
http://neutrino-cms.googlecode.com/files/neutrino-0.8.52.tar.bz2
И посмотреть там файл ext/taglist/index.php

Там все это реализовано на файловых хранилищах.

Добавлено: 2008-08-22 19:21:35, Валерий

Спасибо!!!
Сейчас попробую интегрировать в мой сайт...!!!!

Добавлено: 2008-08-22 19:58:39, Валерий

Пробывал... вроде ставиться все по инструкции , после того как в настройках вношу изменения (что написаны в инструкции ) пользователя и пароль , то после этого как обновляю страницу меня просто выкидывает из скрипта, разбиваеться дизайн... потому в следующем вопросе хочу спросить :
Я ставил скрипт примерно не в сам сайт а в папку сайта http://monrealovka.ca/neutrinoэто не может так влиять на работу движка ? и ещё.... я просил не блог а скрипт Облако Тегов для моего сайта.... я правельно понял что этот двиг что вы мне дали как бы выводит мне эти теги в блоке моего основного сайта, и что бы он работал именно на основной сайт ??? буду признателен если это будет именно работать у меня как МОД.... если можно это как то релизовать буду очень благодарен!!!

Добавлено: 2008-08-22 23:58:44, Bolzamo

Как я уже говорил, все зависит от конкретной реализации тегов в вашем конкретном случае. Универсального скрипта облака тегов никто вслепую не даст, надо смотреть, что к чему. Если интересно, могу оказать услугу в виде написания соответствующего мода.

Добавлено: 2008-08-23 02:11:31, Валерий

Я бы очень хотел и прошу оказать мне помощь и услугу... был бы очень рад !!!
Что для этого надо я постараюсь сразу же ответить ?

Добавлено: 2008-11-25 13:32:57, deggit

Очень занятно. Но ведь есть готовые плагины, Wp-cumulus, скажем, зачем тогда парится?

Добавлено: 2008-11-25 14:47:31, Bolzamo

Не все используют WordPress. Вот и вся разгадка :)

Добавлено: 2008-12-19 09:45:37, Наталья

Замысловато. Я хотела сказать просто и со вкусом. 3 строчки всего.

Добавлено: 2009-01-21 16:44:27, max

Пример крайне приятный, функция array_count_values() сделала свое дело, сократив код до 3 строчек.

Добавлено: 2009-02-09 10:42:25, Виолетта

О какой инструкции говорит Валерий? Я не могу найми. Вижу скрипт, а где взять инструкцию по установке?

Добавить комментарий

Ваше имя:*
Ваш email:*(не публикуется)
Ваш блог:
Ваш комментарий:*

Переносы строк и url-адреса преобразуются автоматически, не забудьте отделить их пробелами. html и bb-коды не поддерживаются.