# Tag_Cloud_v1.0
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...
Co jeszcze by się przydało w tej klasie:
pobierz Tag_Cloud_v1.0
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)
$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.
pobierz Tag_Cloud_v1.0
kategoria: Laboratorium | komentuj | 3 komentarze
