kwLogではiddyのprofileの表示をサイドバーに表示していますが、これはphpの出力をJavaScriptにするという少々強引なドリブルでした。iddy本家の方でMovable Typeプラグインが公開されたのでまっとうなやり方に移行します。
iddy Movable Typeプラグイン
http://iddy.jp/blog/log/2007/04/000060.php
が、残念ながらphpダイナミックパブリッシングするとまたもや表示されません。眠い目をこすりながらphp用のpluginをつくってみました。
面倒だったのはTagごとにSmartyのファイルを作成しないといけなかったのと、’plugins/iddyMyProfile/data/data.cgi’のパスの指定。このファイル、Tagの出力を行うたびにWebAPIを呼び出すのはトラフィックの無駄なので、WebAPI呼び出しの結果をこのdata.cgiファイルに保存して使いまわすようになっています。(ちなみ使い回し期限は3分)
で、このファイルのパスの取得なんですが、perlのplug-inだと
my $path = $ENV{'SCRIPT_FILENAME'}; $path =~ s/mt\.cgi//g; $path =~ s/\s//g; my $file_data = $path.'plugins/iddyMyProfile/data/data.cgi';
と、なっていてmt.cgiからの相対パスになっちゃってます。。。
phpダイナミックパブリッシングしている場合は$_SERVER[‘SCRIPT_FILENAME’]はmtview.phpで階層的にいうと
mt本体/ -mt.cgi <--Perlのときの'SCRIPT_FILENAME'はここ -plugins/ --iddyMyProfile/ ---data/ ----data.cgi -php/ --plugins/ ---Smartyのプラグイン weblog出力先/ -mtview.php <-- phpのときの'SCRIPT_FILENAME'はここ
こんな感じ。
mt本体のディレクトリ名はユーザによって変更可能だから決めうちもできないし。しばし考えました。さすがにmt本体へのパスはあるだろうと思いつhttp://www.sixapart.jp/movabletype/manual/object_reference/archives/mt.html を見てました。
なんだ $mt->mt_dir でいけんじゃん。と思いつつ指定したところhttp://で始まるURIが返ってきて、ファイルの読み込みはできるがhttp指定でファイルの書き込みはできないので万事休す。ほしいのは/usr/local/www/…みたいなlocalhost上のファイルパスなんです。
でも、絶対にあるはずだ。と思い
mt本体/php/mt.phpを見ていたところ下記コードを発見。
// path to MT directory $cfg['MTDir'] = realpath(dirname($file));
これだ!
<?php // Get iddy profile function get_iddy($ctx) { $path = $ctx->mt->config['MTDir']; if (!preg_match('!/$!', $path)) $path .= '/'; $file_data = $path.'plugins/iddyMyProfile/data/data.cgi'; $lines_content = @file($file_data); list($date_data,$accountname) = split(",", $lines_content[0], 2); $date_chk = strftime("%Y%m%d%H%M%S",time()-60*3); $blog = $ctx->stash('blog'); $iddy_config = iddy_config($ctx); $an = ($iddy_config!=null) ? $iddy_config['id_usrname'] : ""; if (($date_data < $date_chk) or ($accountname != $an)) { $url = 'http://iddy.jp/api/user/?apikey=2f81a9d399752350434f8df139c5652a36a14beb&type=all&accountname='.$an; $content_in = @file_get_contents($url); $date_now = strftime("%Y%m%d%H%M%S",time()); $content_in = "$date_now,$an\n".$content_in; @file_put_contents($file_data,$content_in); } $content = @file_get_contents($file_data); $content = ereg_replace("\r|\n","",$content); return array($content,$an); }
なんとかdata.cgiへの入出力ができました。
data.cgiへのアクセスをベースに各タグのファイルを以下にまとめました。とりあえずversion 1.01用patchです。解凍して普通にmt本体/phpへ上書きしちゃってください。
mt-iddyMyProfile-Plugin patch
plug-inのおかげでwidgetのtemplateの編集が直感的になりました。
<div class="module-iddy module"> <h2 class="module-header">PROFILE by <a href="http://iddy.jp/" target="_blank">iddy</a></h2> <div class="module-content"> <a href="<$MTIddyProfileurl$>" target="_blank"><img src="<$MTIddyImageurl$>" id="iddy-imageurl" alt="<$MTIddyAccountname$>'s Profile by iddy"/></a> <div id="iddy-account"><a href="<$MTIddyProfileurl$>" target="_blank" title="<$MTIddyAccountname$>'s Profile by iddy"><$MTIddyAccountname$></a></div> <p id="iddy-profile"><$MTIddyProfile$></p> </div> </div>