Movable Type 備忘録
MT-Cumulus プラグインを SWFObject 2.1 に対応する
- Prev Page: ブログ内検索、タグ検索で検索結果の絞込みをやってみる
- Next Page: JCalendarColor プラグイン
こんにちわ^^
MT-Cumulus プラグインを SWFObject 2.1 に対応してみました。
元々 MT-Cumulus プラグインやオリジナルの WP-Cumulus では SWFObject 1.4 が使用されてるのですが、配布元さんではまったく!? 更新する様子もなさそうだし、個人的興味から SWFObject 2.1 を使いたかったのでプラグインをカスタマイズしてみました。
MT-Cumulus プラグインは、FLASH を使ったタグクラウドを表示するプラグインですが、日本語が使えないということで日本ではあまり使われてないのかな。
でも、tagcloud.swf をちょこちょこっと Adobe Flash Professional 体験版 でフォントを変更してあげれば対応可能なようです。
上記記事を参考に tagcloud.swf を日本語対応にしたものを以下のサイトで入手できます。
実際に試したところ、mt/mt-static/plugins/Cumulus/tagcloud.swf を差し替えることで日本語表示することができました (●´∀`●)
日本語タグを使われてる人は試してみるといいのココロ。
SWFObject 2.1 に対応する
さて、本題に戻りまして SWFObject 2.1 では、今までの 1.4 系、1.5 系とは記述が異なります。
なので SWFObject だけを 2.1 に差し替えれば OK みたいにはいきません。
変更するファイルは以下になります。
- mt/plugins/Cumulus/lib/Cumulus.pm
カスタマイズには SWFObject 2.1 マニュアルとジェネレータを使用します。
SWFObject 2.1 に対応するための、MT-Cumulus プラグインのカスタマイズについて以下に記します。
ジェネレータを使って SWFObject 2.1 用コード入手
まずはジェネレータを使って SWFObject 2 用のコードを取得します。
使い方はカンタンなのですが、MT-Cumulus プラグインの SWFObject 2 以前のパラメータに合わせて入力していく必要があります。
右図は MT-Cumulus プラグインで使用してる SWFObject のパラメータを入力した図になります。網掛け部分が変更したところです。一通りパラメータを入力したら、「Generate」ボタンをクリックするとコードが表示されます。
必要な部分を抜粋したコードを以下に記します。SWFObject 2 用コード
<script type="text/javascript">var flashvars = {};flashvars.tcolor = "0xFFFFFF";flashvars.tspeed = "100";flashvars.distr = "true";flashvars.mode = "tags";flashvars.tagcloud = "<tags>AAA</tags>";var params = {};params.quality = "high";params.wmode = "transparent";params.bgcolor = "#333333";params.allowscriptaccess = "always";var attributes = {};swfobject.embedSWF("tagcloud.swf", "mttagcloudflash", "550", "375", "9.0.0", "expressInstall.swf", flashvars, params, attributes);</script>
入手したコードを元に MT-Cumulus プラグインをカスタマイズ
次に入手した SWFObject 2.1 用コードを、MT-Cumulus プラグインに移植します。
Cumulus.pm 内を 'sub CumulusBox' というキーワードで検索します。 そして、180 ~ 218 行目を以下のコードで差し替えます。SWFObject 2 用コード差し替え
$Cumulus = "<div id=\"mttagcloudflash\">" . $tags . $cats ."<br /><a href=\"http://www.adobe.com/go/getflashplayer\"><img src=\"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif\" alt=\"Get Adobe Flash player\" /></a></div>\n";$Cumulus .= "\n<script type=\"text/javascript\">\n";$Cumulus .= "var rnumber = Math.floor(Math.random()*9999999);\n";$Cumulus .= "var flashvars = {};\n";$Cumulus .= "flashvars.tcolor=\"0x" . $cumulusTagColor . "\";\n";$Cumulus .= "flashvars.tspeed=\"" . $cumulusSpeed . "\";\n";if ($cumulusEvenSpacing==1) {$Cumulus .= "flashvars.distr=\"true\";\n";} else {$Cumulus .= "flashvars.distr=\"false\";\n";}if ($cumulusDisplay =~ m/.tags/) {$tags = "<tags>" . $tags . "</tags>";$tags = uri_escape($tags);$Cumulus .= "flashvars.tagcloud=\"" . $tags . "\";\n";} elsif ($cumulusDisplay eq "cats") {$cats = uri_escape($cats);$Cumulus .= "flashvars.categories=\"" . $cats . "\";\n";} else { #display both$tags = "<tags>" . $tags . "</tags>";$tags = uri_escape($tags);$cats = uri_escape($cats);$Cumulus .= "flashvars.tagcloud=\"" . $tags . "\";\n";$Cumulus .= "flashvars.categories=\"" . $cats . "\";\n";}$Cumulus .= "flashvars.mode=\"" . $cumulusDisplay . "\";";$Cumulus .= "var params = {};\n";$Cumulus .= "params.bgcolor=\"#" . $cumulusBgColor . "\";\n";if ($cumulusTransparent==1) {$Cumulus .= "params.quality=\"high\";\n";$Cumulus .= "params.wmode=\"transparent\";\n";}$Cumulus .= "params.allowscriptaccess=\"always\";";$Cumulus .= "swfobject.embedSWF(\"" . $staticUrl . "tagcloud.swf?r=\"+rnumber, \"mttagcloudflash\", \"" . $cumulusWidth . "\", \"" . $cumulusHeight . "\", \"9.0.0\", \"" . $staticUrl . "expressInstall.swf\", flashvars, params);\n";$Cumulus .= "</script>\n";
SWFObject( swfobject.js )の URL 変更
最後に swfobject.js の URL を変更します。
この際なので Google の AJAX Libraries API を使う用に変更します。
具体的には Cumulus.pm 内を 'sub CumulusSWFObject' というキーワードで検索して、以下のコードと差し替えます。swfobject.js URL の変更
sub CumulusSWFObject {# my $ctx = shift;# my $app = MT->instance;# my $staticUrl = $app->static_path . 'plugins/Cumulus/';# my $plugin = MT::Plugin::Cumulus->instance;# my $mtstatic = MT->config->CGIPath . $plugin->envelope . "/mt-static/";# my $swfobject = "<script type=\"text/javascript\" src=\"" . $staticUrl . "swfobject.js\"></script>\n";my $swfobject = "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js\"></script>\n";return $swfobject;}
赤字の部分をコメント( 行頭に # を付加する )にして、青字の行を追加します。
以上で MT-Cumulus プラグインのカスタマイズは完了です。
変更した MT-Cumulus プラグインを保存して元の場所にアップロードします。
そして、サイト全体を再構築してあげれば OK です。
一応わたしのサイトで使ってる MT-Cumulus プラグインの以下に置いておきます。
ただし、わたしのサイトで使ってる MT-Cumulus プラグインは最近のタグ一覧を表示できるようカスタマイズしたものです。
オリジナルの WP-Cumulus では、JavaScript を使用しなくっても表示できる( object 使用 )ようバージョンアップされてます。
でも、それは WordPress が PHP ベースだからできることで、Perl ベースの MT では無理です。( 厳密には対応することは可能ですが、動的に乱数を発生させてまして、MT のプラグインだとその乱数の値が再構築時に固定されてしまう為、MT-Cumulus では JavaScript を使って動的に乱数を発生させてるわけです。)
MT-Cumulus プラグインの PHP 版を作れば可能ですが、そこまでする必要性を感じてないので上記 MT-Cumulus 1.04 では対応してません。
以上です。
Trackback Pings(0)
No trackbacks found.





どうも今日は。
みっちーです。
いろいろがんばってますが、画像一つとっても自動生成なので
非常に難儀しております。
やはり、元のmt.cgiの設定が反映していないのと
sタグやuタグstrongタグemタグの文字タグが使えないのがちょっと困っています。
それと、サイドバーのブログパーツの貼り方が分からないですね。
この辺り、設定可能にして頂けるとありがたいです。
>>1 みっちー さん
こんばんわ^^
> いろいろがんばってますが、画像一つとっても自動生成なので
> 非常に難儀しております。
すいません、よく分かってないのですが、画像!? って何ですか
MT-Cumulus プラグインに画像を使用してる!? ってことでしょうか。
もし、プラグインのカスタマイズでお困りでしたら、記事中にあるわたしがカスタマイズしたプラグインを利用していただければと思います
たとえば、read moreのボタンがありますよね?
単純にgifなのかな・・・と思ったんですが、ベースがあって"read more"がtextだと分かったんですけど、どこをどう改造すればよいのか分からなかったんです。
すごく多機能なのが魅力的で使わせて頂いているだけに、ファイル数が多くて足踏み状態です。
文字タグも、導入前のエントリーは反映されているのですが、導入してからの新しいエントリーは反映されていないんですよね。
>記事中にあるわたしがカスタマイズしたプラグインを利用していただければと思います
使わせて頂いたのですが、使っているサーバーの仕様なのか日本語に反映してくれないので、一旦戻しました。変更した差分を教えて頂ければ、もう一度トライします。
お願いします。
>>3 みっちー さん
テンプレートの話ですね
では、一先ずこのページでのテンプレートのお話はここで終わりにしましょ。
で、以下のページでご相談にのります。
http://bizcaz.com/archives/2009/02/01-044553.php
上記ページにて改めて みっちー さんがテンプレートセットを設置されたブログの URL を教えていただけますか。
わたしの方で確認します。
てか、先日の みっちー さん用テンプレートセットではダメだったということですね!?
ダウンロードのリンクが切れてますよ~(^^)
よろしくお願いします。。。
ご迷惑をおかけしました。
修正しました。
本年もどうぞよしなに
こんにちわ、いつも参考にさせていただいているものです。
今回はMTcumulusをなんとか日本語化して表示させることができたのですが、
タグをクリックすると、
不正な要求です。文字コードUTF-8に含まれない文字データを送信しています。
とエラーが出て、ブラウザのURLのところには
ttp://www.hogehoge.jp/mt/mt-search.cgi?blog_id=1&tag=日本語タグ&limit=20
というようになって、エラーになるんです。ずっと朝からこれで悩んでます・・。
なにか解決策はないものでしょうか??
心当たりがあればよろしくお願いします。
>>7 たけし さん
こんばんわ^^
お返事が遅くなりすいません。
Cumulus の日本語化ですね。
わたしは実際に日本語化して動作させたことがないので現状では何とも言えません。
差し支えなければ、たけし さんのブログに設置されたタグクラウドを見せていただけませんか。
状況を確認したく思います