MT5エントリー内の絶対URLを相対URLに変更しる

仕事でやったので忘れないように書いときます。
用途はテスト環境と本番環境のURLが違うってサイト。
まずは、MTTruncateURLプラグインを導入。これ必須。
http://code.google.com/p/ogawa/wiki/MTTruncateURL_Plugin?wl=ja
これでアーカイブとかサイト内のリンクは相対化完了。
だけど、一番の問題なのは画像のポップアップリンク
ここはjavascriptでonclick="window.open(〜)"でURL指定してるので。
src、href、actionを引っ張り出してhttp://から始まって最初の/までを消してくれる仕組みのMTTruncateURLだと消せないみたい。(perl詳しくわからんのです・・・。)
んで、MTTruncateURLを改造するより画像ソースを差し込むImage.pmをいじった方が早いのでそっちを改造することにします。
場所は、

/mtos/lib/MT/Asset/Image.pm

いじるのは323行目

q|<a href="%s" onclick="window.open('%s','popup','width=%d,height=%d,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">%s</a>|,

%sと%dってのは配列っぽい。%dを%sに置き換えても同じモノが出てきたから全部%sに。
ところで、MTって要らない配列情報捨てるとかそういう処理しないのね。特に317行目見るとこんなやり方するのかよって思いますよ。
MTって高い金取ってる割には・・・って思っちゃうなぁ。MTOS使ってるんですけどね。

さて、配列の5つある%sを順番に追っていくと

  1. ポップアップ先htmlのurl
  2. ポップアップ先htmlのurl
  3. 元画像横幅
  4. 元画像縦幅
  5. imgタグ

となる。

これを活用して323行目のwindow.openを<a href="" target="_blank">に差し替え。

q|<a href="%s" target="_blank" %s %s %s>%s</a>|,

これで完了。
再構築後のhtmlソース見ると、むき身で3つ並んだ%sが掃き出したゴミがaタグ内に残ってしまうけど、表示に問題はないみたいなので良しとする。というか消す方法ないもんかねぇ。

あと忘れちゃいけないのが、MTのテンプレ管理から「ポップアップ画像」を開いてmttruncateurlタグを挿入すること。
以上、おわり。