タグクラウドの文字の大きさの制御
2007-11-19
2007/11/25 ソースに間違いが見つかりましたので変更させていただきました。
<MTCollateList limit="1" sort="tag_count:#:+">
<MTCollateList limit="1" sort="tag_count:#:-">
タグクラウド、いい!実にいい!!
しかーし、タグクラウドの見せ方なのですが、一つ問題がありまして、文字サイズは出現回数が増えれば増えただけ際限なく大きくなっていってしまいます。
そんな中、Open MagicVox.netさんのTagCloudをJavaScriptでパワーアップという記事に解決策がありました。
タグの使用回数の最大値と最小値を基にして、使用頻度が最も少ないタグのフォントサイズを size_min に、使用頻度が最も多いタグのフォントサイズを size_max に線形補間しています。
とありこれがぴったりなので早速導入する事に、しかしながらこちらはTagwireプラグインを使う事が前提になっていますのでそのままでは使えません。
何がだめかというと、タグの使用回数の最大値、最小値を引っ張り出す事ができません。
これを可能にするにはまた別のプラグインが必要になります。
MTCollateプラグインを使う
MTCollateプラグインを使うと、全てのタグの出現回数を引っ張り出しておいてその中から多い方から1番目まで、少ない方から1番目までという少々回りくどい表現になりますが、そういう形で取り出すことができます。
概念やら使い方はあんちもん2.LabさんのMTCollateのススメが詳しくてよいです。
MTCollateプラグインをインストール後テンプレートを書き換えると最大フォントサイズが決まったタグクラウドが出来上がります。
以下参考ソースとなります。
オリジナル(Ogawa::Memorandaさんのタグクラウドテンプレート)を 改造後(Open MagicVox.netさんのテンプレート(改))に書き換えてご利用ください。
// オリジナル(Ogawa::Memorandaさんのタグクラウドテンプレート)
function calcFontSize (count) {
return count / 6 + 12;
}
// 改造後(Open MagicVox.netさんのテンプレート(改))
<MTCollateCollect>
<MTTags>
<MTCollateRecord>
<MTCollateSetField name="tag_count"><$MTTagCount$></MTCollateSetField>
</MTCollateRecord>
</MTTags>
</MTCollateCollect>
// min count of tag appearance (cf. to retrieve with MTTags)
var count_min = <MTCollateList limit="1" sort="tag_count:#:+"><MTCollateField name="tag_count"></MTCollateList>;
// max count of tag appearance (cf. to retrieve with MTTags)
var count_max = <MTCollateList limit="1" sort="tag_count:#:-"><MTCollateField name="tag_count"></MTCollateList>;
function calcFontSize (count) {
var size_min = 12; // min font size on count_max
var size_max = 60; // max font size on count_min
return (size_max - size_min) * (count - count_min) / (count_max - count_min) + size_min;
}
参考にさせていただきました皆様、ありがとうございました。
URL : http://www.eternalheart.com/cgi/mt/mt-tb.cgi/1064








