いつもタグクラウド作るのにHTML::TagCloudとかHTML::TagCloud::Extendedを使っていたのだが、WWW::CloudCreatorというモジュールを教えてもらったのでいじってみた。
おおまかな違いはHTML::TagCloudはhtml(とcss)をそのまま吐くのに対し、WWW::CloudCreatorはタグ名とカウントとスタイル要素を戻してくる。
だから、TTと組み合わせるにはWWW::CloudCreatorのほうが良い感じ。
ただし、配列で戻してくるのでTTが
[% FOREACH tag = tagcloud %] <span style="[% tag.2 %]"> <a href="[% Catalyst.uri_for('/bookmarks/') %]/[% tag.0 %]"> [% tag.0 %]([% tag.1 %]) </a> </span> [% END %]
となってちょっとわかりにくい気が。
あと、WWW::CloudCreatorはサイズだけじゃなくて色も変化させることができるんだが、こっちはちょっとバグってた。
81行目あたりをhexdecでレンジを揃えて82行目でdechex二度がけ。
my $ihex = hexdec($coldarray[$i]) + ($colorstep[$i] * $fraction); my $decihex = dechex(dechex( $ihex ));
dechex関数も直す。負の方向にグラデーションがかかる場合にa-fがdechexに渡ったら無視するように。
sub dechex { if($_[0] =~ /\d+/){ return sprintf '%x', $_[0]; } else { return $_[0]; } }
これでうまくいってるような気がするけど。
色のグラデーションはタグの頻度ではなくて、タグ間の関連性とかの違う軸ででかけるようにしたいなぁ。