Movable Type 備忘録

 MT-Cumulus プラグインで最近のタグを表示

こんばんわ^^

以前、フラッシュを使って 3D 空間に回転するタグクラウドってのをご紹介したことがありました。

しばらくはわたしのサイトでもサンプルとして使ってましたが、1 週間ほどで取り外しました。
というのも、見た目はすっごくいいと思うのですが一覧されるタグクラウドがポピュラーなタグ( 使用回数の多いタグ )が表示されてしまうので、過去に多かったタグなどがずっと表示されるなどわたし的にはちょと気に入らなかった為です。
なので、今回プラグインをカスタマイズして最近の使われたタグを表示できるようにしてみました。( たぶんできてると思う )

ダウンロード

使い方

MT-Cumulus プラグイン 基本的な使い方は今まで通りなので、上記ページを参考にして頂けたらと思います。
ここでは「最近のタグ」を表示するための設定について記しますね ( ̄∇ ̄)b

右図はわたしのサイトで設定してる、MT-Cumulus プラグインの設定内容です。
図を見てもらえば分かるように、下の方にある「Tags Only(Recent Tags)」を選択した場合「最近のタグ」によるタグクラウドが表示されます。

変更したら再構築すれば完了です ( ̄∇ ̄)b カンタンですね。

変更点

オリジナルからの変更点は、plugins/lib/Cumulus.pm ファイルを変更しました。
以下にその内容を抜粋します。

81 ~ 104 行目追加

  1. sub recent_tags {
  2.     my ($blogId, $numberoftags) = @_;
  3.     my $type = MT::Entry->datasource;
  4.     my @tags = MT::Tag->load_by_datasource( $type, { 'is_private' => 0, 'blog_id' => $blogId }, );
  5.     my (@out, @top);
  6.     for my $tag (@tags) {
  7.         my ($e) = MT::Entry->load(undef, {
  8.             sort => 'created_on', direction => 'descend', status => MT::Entry::RELEASE(), limit => 1,
  9.             join => [ 'MT::ObjectTag', 'object_id',
  10.                 { tag_id => $tag->id, blog_id => $blogId, object_datasource => MT::Entry->datasource, },
  11.                 { unique => 1, } ]
  12.         })
  13.         or next;
  14.  
  15.         my $count = MT::Entry->count(
  16.             { blog_id => $blogId, status => MT::Entry::RELEASE() },
  17.             { join => [ 'MT::ObjectTag', 'object_id', { tag_id => $tag->id, object_datasource => $type }], unique => 1 }
  18.         );
  19.  
  20.         push @top, [ $tag->name, $count, $e->created_on ];
  21.     }
  22.     @top = sort { $b->[2] <=> $a->[2] } @top;
  23.     return [ @top[ 0 .. $numberoftags ] ];
  24. }

上記はブログ内のすべてのタグから最近使用されたタグを抽出してソートするコードです。

112 ~ 114 行目変更

  1. my $tagcloudtags = ($cumulusDisplay eq "ptags")
  2.     ? &popular_tags($blogId, $numberoftags)
  3.     : &recent_tags($blogId, $numberoftags);

上記は上記図の設定画面で選択された表示方法に合わせてタグ一覧を作成する関数を振り分けるコードです。

201 行目と 233 行目変更

  1. if ($cumulusDisplay =~ m/.tags/) {

上記は「Popular Tags」または「Recent Tags」のいずれかが選択されたかどうかをチェックするコードです。
同様の修正を 233 行目で行ってます。

378 行目追加

  1. <input type="radio" name="Cumulus_display" id="Cumulus_display" value="ptags" <TMPL_IF NAME=Cumulus_display eq=ptags>checked="checked"</TMPL_IF> /> Tags Only(Popular Tags)<br/>
  2. <input type="radio" name="Cumulus_display" id="Cumulus_display" value="rtags" <TMPL_IF NAME=Cumulus_display eq=rtags>checked="checked"</TMPL_IF> /> Tags Only(Recent Tags)<br/>
  3. <input type="radio" name="Cumulus_display" id="Cumulus_display" value="cats" <TMPL_IF NAME=Cumulus_display eq=cats>checked="checked"</TMPL_IF> /> Categories Only<br/>

上記はプラグイン設定画面で表示する、ラジオボタン表示のコードです。
「Popular Tags」を 'ptags'、「Recent Tags」を 'rtags' という値に変更してます。

以上です。
良かったら使ってみてください。

 Trackback Pings(0)

No trackbacks found.

 Comments(2)

#1: Posted by ソープ @ January 15, 2009 [REPLY]
user-pic

こんにちわ!とってもお久しぶりです!
その節はお世話になりました。

3D なタグクラウドは以前から気になっていまして、
さっそく使わせていただきました!カッコいいです☆

今後もちょくちょく顔を出させていただきますので
またよろしくお願いします!

#2: Posted by Author Profile Page bzbellからソープへの返信 @ January 15, 2009 [REPLY]
user-pic

>>1 ソープ さん

こんばんわ^^

ホントご無沙汰ですねやあ!
気に入っていただけてよかったです。

今後ともどうぞよしなにぺこり

 Post a Comment

 

コメント用フィード