Aplikacje internetowe

Bełdziowe spojrzenie na aplikacje internetowe

Chmura tagów (TagCloud)

Wraz z rozwojem serwisów WEB 2.0 pojawił się nowy sposób grupowania zasobów. Dotychczas prym wiodło grupowanie wg kategorii. Ów nowym sposobem stało się tagowanie czyli opisywanie treści za pomocą słów kluczowych.
Kohana udostępnia bibliotekę, która w prosty sposób umożliwia wygenerowanie chmury tagów.

Na początku potrzebujemy tablicy, na podstawie której wygenerowana zostanie chmura. Każdy element tej tablicy musi zawierać trzy klucze: title, link oraz count czyli odpowiednio anchor (opis) odnośnika, adres do którego ma prowadzić oraz ilość wystąpień, na podstawie której określana jest popularność słowa.

$array = array( 	0 => array(	'title' => 'XSS',
					'link'  => 'tag/xss',
					'count' => 10 ),
			1 => array( 'title' => 'SQL Injection',
					'link'  => 'tag/sql-injection',
					'count' => 4 ),
			2 => array( 'title' => 'Logowanie',
					'link'  => 'tag/logowanie',
					'count' => 2 ),
			3 => array( 'title' => 'CSRF',
					'link'  => 'tag/csrf',
					'count' => 6 ),
			4 => array( 'title' => 'filtracja',
					'link'  => 'tag/filtracja',
					'count' => 4 ),
			5 => array( 'title' => 'directory traversal',
					'link'  => 'tag/directory-traversal',
					'count' => 1 ) );

Następnym krokiem jest stworzenie obiektu klasy TagCloud. Jak w przypadku wielu klas Kohany możemy to zrobić dwojako – tworząc nowy obiekt:

$tagCloud = new Tagcloud( $array [, 200, 100 ] );

bądź też korzystając z wzorca fabryki:

Tagcloud :: factory( $array [, 200, 100 ] );

W przypadku obu sposobów możemy przekazać dwa opcjonalne parametry określające maksymalny oraz minimalny rozmiar czcionki tagów. Rozmiar ten możemy ustawić także po stworzeniu obiektu modyfikując dwie zmienne:

$tagCloud -> min_size = 100;
$tagCloud -> max_size = 200;

Ostatnią możliwością wpłynięcia na wygląd wygenerowanej chmury to ustalenie kolejności pokazywania tagów. Domyślnie tagi wyświetlane są w kolejności identycznej jak w przekazanej tablicy. Jeśli chcemy by kolejność tagów była losowa wystarczy ustawić zmienną shuffle na true.

$tagCloud -> shuffle = true;

I tu należy się małe wyjaśnienie. W aktualnej wersji biblioteki znajduje się błąd, który uniemożliwia skorzystania z losowania pozycji. Aby ów błąd usunąć należy w pliku system/classes/tagcloud.php zamienić linie 94 z

$this->elements = shuffle($this->elements);

na

shuffle($this->elements);

Ostatnią czynnością jaka nam pozostała jest wygenerowanie chmury tagów. Również tą czynność możemy wykonać na dwa sposoby. Pierwszy z nich to skorzystanie z magicznej funkcji __toString, która zwróci nam wszystkie tagi rozdzielone znakiem nowego wiersza.

echo $tagCloud;

Drugim sposobem jest skorzystanie z funkcji render, której wynikiem jest tablica z tagami.

var_dump( $tagCloud -> render( ) );

Dzięki umożliwieniu wykonania tych samych operacji w dwojaki sposób całość generowania chmury tagów możemy zapisać w jednej linii.

echo Tagcloud :: factory( $array );

Powyższy opis odnosi się biblioteki tagcloud.php rev 3466 dostępnej na SVN, bądź też tu.

Zobacz kontroler z powyższego przykładu.


Tagi: , ,
Kategoria: Kohana, Biblioteki


6 komentarzy

  1. ach ta Kohana. muszę zerknąć, ale chyba nie przebije Symfony (która ma tylko jeden minus – jest dość duża – co nie znaczy że powolna).

  2. jak zawsze świetnie – byłby z Ciebie dobry programista asp.net :P

  3. @ppp w wolnych chwilach uczę się C# / ASP.NET tak więc wszystko przede mną ;-)

  4. witul napisał(a):

    Wstydz sie ;D…dobry programista nie powinien mowic glosno takich rzeczy xD

  5. Tylko czemu dokumentacja Kohana nic nie mówi o swojej bibliotece TagCloud ?

  6. to pytanie należałoby skierować do „kohanej” ekipy :-) ale zapewne dlatego, że bardziej lubią pisać kod niż docsy :-) jakby nie patrzeć docsy zawsze były najsłabszym elementem Kohany

Dodaj komentarz