Инструкция
1
Для начала сгенерируйте список пар вида: тег – количество вхождений. Для этого используйте следующий код:
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. ?>
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. ?>
2
Работайте с этим кодом примерно таким образом:
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. ?>
На месте цифр ставьте нужные вам теги!
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. ?>
На месте цифр ставьте нужные вам теги!
3
Чтобы вывести облако тегов с учётом релевантности, сделайте следующее. В настройках задайте минимальный размер шрифта, который будет соответствовать минимальному числу вхождений (то есть, одно вхождение). Используйте поле font_size_min.
4
Задайте остальным тегам размер шрифта по следующей схеме: каждое вхождение увеличивает шрифт на один пиксель. Для этого воспользуйтесь полем font_size_step.
5
Если вы хотите усовершенствовать своё облако тегов, прикрутите его к js-скрипту.
Удачи вам в создании собственных облаков!
Удачи вам в создании собственных облаков!