# Tag_Cloud_v1.0

Dodany dnia 08.02.2009 przez waXain

Ostatnio poszukiwałem dobrej klasy która byłaby w stanie na podstawie przekazanej tablicy tagów wygenerować mi nową tablicę z wartościami przygotowanymi do wyświetlenia w "chmurze tagów". Miałem kilka wymagań, których niestety nie spełniały żadne znalezione w Internecie klasy. Idąc w myśl "zrób to sam" - popełniłem ów klasę :) Napisałem ją od 0, jedynie przy generowaniu gradientu posłużyłem się gotową funkcją znalezioną w necie, którą nieco zmodyfikowałem.
W kilku słowach o tym co ona potrafi...
  • kofigurowalna minimalna i maksymalna wielkość czcionki,
  • automatycznie wylicza maksymalną i minimalną wielkość czcionki (w zależności od liczebności tagu - jego popularności) którą w wyniku podaje liczbowo i procentowo,
  • konfigurowalna "czułość" (case sensitive) wielkości czcionki,
  • 6 różnych metod sortowania oraz możliwość nie sortowania (tagi są ułożone w kolejności przekazanej do klasy),
  • metoda sortowania "wypukłego", umieszczająca najliczniejsze tagi w środku, najmniej liczne na brzegach (w praktyce: 1 1 1 2 2 3 2 2 1 1 1),
  • automatyczne tworzenie gradientu dla wyliczonych wielkości czcionek na podstawie podanych parametrów "od - do" kolorów,
  • domyślnego ustawienia czcionki oraz koloru w przypadku gdy liczebność wszystkich tagów jest taka sama,
  • zliczanie liczebności każdego z tagów,
  • zdefiniowanie maksymalnej ilości tagów jakie mają zostać zwrócne w "chmurze" (zachowując te które są najliczniejsze)
Przykład utworzenia chmury tagów:
$aTagi = array('tag1','tag2','tag3');

$Tag_Cloud = new Tag_Cloud($aTagi);
$Tag_Cloud->setOptions(array(
	'min_font_size'=>12,
	'max_font_size'=>24,
	'sort_method'=>1
));

$aChmuraTagow = $Tag_Cloud->getTagCloud();
Dodam, iż wykorzystuję ją na tym blogu, tak więc można zobaczyć jak działa w praktyce.
Co jeszcze by się przydało w tej klasie:
  • zoptymalizowanie sortownia SORT_CONVEX (wypukłego) - jest to dość skomplikowany sposób sortowania (o ile wogóle sortowaniem można to nazwać) i przyznam, że chwilę nad tym musiałem przysiąść, cel został osgiągnięty, przy czym zrobiłem to "na szybko" (6 pętli) i jestem świadom tego iż da się to jeszcze dość znacznie przyspieszyć (notabene szukałem w necie jakiś pomocnych algorytmów) - w swoim czasie zrobi się :)
  • dodanie możliwości automatycznego wyrenderowania HTML-a z chmurą - teraz mamy tylko tablicę przygotowaną do "wstrzyknięcia" w odpowiedni szablon chmury html (pętla +odpowiedni css),
  • dodanie metody sortowania gdzie najliczniejsze tagi będą na brzegach a najmniej liczne w środku (w praktyce: 3 2 2 1 1 1 1 1 1 2 2) - taki bajer, ale fajnie by była odwrotność metody SORT_CONVEX.
Poza tym, na pewno kilka pomysłów jeszcze mi wskoczy do głowy, ewentualnie może ktoś coś jeszcze ciekawego podsunie :)

pobierz Tag_Cloud_v1.0

Tagi: tagi tags chmura cloud chmura tagów tag cloud klasa php

# komentarze

Dodany dnia 15.02.2009 przez: Paweł

W tej samej klasie jest link do BSD na wikipedii, więc chciałem mieć pewność co autor miał na myśli ;-)

Dodany dnia 15.02.2009 przez: waXain | www: http://www.waxain.pl

Informacja o licencji jest dodana do klasy. GNU General Public License :)

Dodany dnia 15.02.2009 przez: Paweł

Fajna rzecz, bo oszczędza trochę czasu :) Pytanie tylko na jakiej licencji to jest wydane? Komentarze na ten temat podzielone.
 

x
  •  
* - pola wymagane