Как сделать облако тегов?

3 ноября 2014 г. Просмотров: 651
Наверняка на многих сайтах и блогах вы встречались с такой забавной вещью, как облако тегов. Если вы хотите создать такое облако на своём сайте или блоге, то в данной статье вы сможете найти инструкцию по его генерации. Облако тегов представляет собой набор ярлыков или категорий, наиболее часто встречающихся в поиске, ссылках и упоминаний каких-либо слов. И чем чаще встречается то или иное слово или понятие, тем больше становится изображение, содержащее гиперссылку на эти понятия и слова.

Инструкция

  • Для начала сгенерируйте список пар вида: тег – количество вхождений. Для этого используйте следующий код:1. 2. class TagsCloud {
  • 3.

    4. private $tags;

    5.

    6. private $font_size_min = 14;

    7. private $font_size_step = 5;

    8.

    9. function __construct($tags) {

    10.

    11. shuffle($tags);

    12. $this->tags = $tags;

    13.

    14. }

    15.

    16. private function get_tag_count($tag_name, $tags) {

    17.

    18. $count = 0;

    19.

    20. foreach ($tags as $tag) {

    21. if ($tag == $tag_name) {

    22. $count++;

    23. }

    24. }

    25.

    26. return $count;

    27.

    28. }

    29.

    30. private function tagscloud($tags) {

    31.

    32. $tags_list = array();

    33.

    34. foreach ($tags as $tag) {

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

    36. }

    37.

    38. return $tags_list;

    39.

    40. }

    41.

    42. private function get_min_count($tags_list) {

    43.

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

    45.

    46. foreach ($tags_list as $tag_count) {

    47.

    48. if ($tag_count < $min) $min = $tag_count;

    49.

    50. }

    51.

    52. return $min;

    53.

    54. }

    55.

    56. public function get_cloud() {

    57.

    58. $cloud = Array();

    59.

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

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

    62.

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

    64.

    65. $font_steps = $count - $min_count;

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

    67.

    68. $cloud[] = "".$tag."";

    69. }

    70.

    71. return $cloud;

    72.

    73. }

    74. }

    75. ?>

  • Работайте с этим кодом примерно таким образом:
  • 01. 02.

    03. $tags = array(

    04. '1111', '2222', '333', '444',

    05. '5555', '666', '777', '777',

    06. '333', '8888', '6666', '333',

    07. '888', '000’, '989', '45455',

    08. '5555', '63636', '54545', '55656'

    09. );

    10.

    11. $mycloud = new TagsCloud($tags);

    12. $tags_list = $mycloud->get_cloud();

    13.

    14. foreach ($tags_list as $tag) {

    15. echo $tag.' ';

    16. }

    17.

    18. ?> На месте цифр ставьте нужные вам теги!

  • Чтобы вывести облако тегов с учётом релевантности, сделайте следующее. В настройках задайте минимальный размер шрифта, который будет соответствовать минимальному числу вхождений (то есть, одно вхождение). Используйте поле font_size_min.
  • Задайте остальным тегам размер шрифта по следующей схеме: каждое вхождение увеличивает шрифт на один пиксель. Для этого воспользуйтесь полем font_size_step.
  • Если вы хотите усовершенствовать своё облако тегов, прикрутите его к js-скрипту.Удачи вам в создании собственных облаков!
  • Оцените статью!