Jul 2006      <  >

SunMonTueWedThuFriSat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

CATEGORIES

monthly archives

2008
2007
2006
2005

- June 2005 (older diary)

« "Missing Sync for Windows Mobile" | main | "2006 年分エントリ移行完了" »

MT 3.31 画像ポップアップコードの改造

ろそろココログのエントリ移行作業を始めているんですが、なかなかに面倒です.

日記をココログに移行した時に、いちばん便利だと思ったのがポストのやり方でした.
テキストの修飾はボタンひとつ、画像は本体だけ準備すれば、ページに貼り込むためのコードは自動生成、おまけにポップアップの御膳立てまでしてくれる.
基本的には HTML を意識しなくても作業が可能. これは、長続きのためには非常に重要なことかと感じてました.

さて、Movable Type でも基本は同じなのですが、ちょっと手間がかかります.
たくさんのエントリを処理するためには、MT で管理画面と称されている、エントリポストのインターフェースをカスタマイズすることが必要だと分かってきました.

現時点でいちばん面倒なのが、画像ポップアップのためのコード. 7/24 に書いたように Javascript を使うようにしたため、その関数 popupImage を呼ぶためのコードを埋め込まなければいけません.

MT のオリジナルでは、

<a href="img.html" onclick="window.open('img.html', 'popup', 'width=img_width,height=img_height,...'); return false"><img src="img_thum.jpg" width="thumb_width" height="thumb_height"></a>

みたいな感じのコードが出てくるわけですが、これを、

<img src="img_thumb.jpg" width="thumb_width" height="thumb_height" onclick="popupImage('img.jpg', img_width, img_height)">

のように改変する必要があります.

オリジナルのを貼り込んどいて、カット&ペーストで直すのはかなり面倒です. 最初から下のようなコードを吐いてくれれば楽

ということで、改造してみました.

調べると、CMS.pm というファイルをいじれば良いことが判明. パスは、/lib/MT/App/CMS.pm.

エディタで開いて、"window.open" で検索します. 1ヶ所だけ hit するはずです.

その前後の抜きだし.

my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" alt="" />) : q{<MT_TRANS phrase="View image">};
return $app->translate_templatized(<<"HTML");
<a href="$url" onclick="window.open('$url','popup','width=$width,height=$height,〜'); return false">$link</a>

ここで間違いないようです.

$link というのもここにしか出てきません.
my $link = 〜 のところで、$link にサムネイル画像表示のコードを入れているようです.
その下の、<a href=〜>$link</a> のところが、ポップアップまで含んだ最終的なコード.

よって、my $link = 〜 のところに、onclick="popupImage〜 を書き加え、下の部分は a タグを全部消して単に $ link とすればよさそうです.

このようになります.

my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" onclick="popupImage('$url', width, height)" align="left" Hspace="10">) : q{<MT_TRANS phrase="View image">};
return $app->translate_templatized(<<"HTML");
$link

画像表示位置関係も、少し付け加えてます.

改変した CMS.pm をアップロード.

実際に使ってみると、このようにうまくいきました.

実は一点直っていないところがあるのでして、関数 popupImage に渡す URL は画像のものでなくてはならないのですが、上のやり方ですとポップアップ表示用の html ファイルの URL になってしまってます.
画像を同じパスにアップするようにすれば、画像ファイルと html ファイルはパスも一緒拡張子以外のファイル名も一緒になります. よって、吐き出されたコードの該当部分で、拡張子を html から jpg など画像ファイルのものに変更すればよいだけとなり、これくらいなら手作業でも十分でしょう.
これも Perl で書ける処理だとは思いますが、自分には無理なのでこの辺にしときます.

ポスト環境の改善は、まだまだ続ける必要がありそうです.

TrackBack URL of this entry:
http://neuro-nex.net/mt/mt-tb-n3.cgi/63

Post your comment!


ABOUT

Entry "MT 3.31 画像ポップアップコードの改造"

Post: July 31, 2006

Category: Web page making


Prev. entry:
"Missing Sync for Windows Mobile"

Next entry:
"2006 年分エントリ移行完了"