bookmarklet を使うと、ping 先を複数の中から選択できること。たとえば、わたしの Main Index page で bookmarklet を使うと、ページ内のエントリーを pull down menu で選択できるのです。便利です。もう知っていました?
というわけで、BOOKMARKLET使うと、簡単にトラックバック出来るなぁ。と、非常に便利に使っていた。
でも、なにか、かゆいところに手が届いていない。TrackBackPingを送る先は選べるようになるんだけど、Entry中のリンク先がMainのURLのままになっている。
気持ち悪い。せっかくping先を選べるんだから、それにあわせてEntry中のURLもpermalinkにしてくれたらいいのに……。
というわけで、改造開始。
<MTDIR>/tmpl/cms/bm_entry.tmplの「function setMenu (f) {」の上あたりに以下を追加
<TMPL_IF NAME=TO_LINK_URL_LOOP> var entry = new Array('<TMPL_VAR NAME=LINK_HREF>', <TMPL_LOOP NAME=TO_LINK_URL_LOOP>'<TMPL_VAR NAME=PERMALINK ESCAPE=HTML>',</TMPL_LOOP>''); var linkto = '<TMPL_VAR NAME=LINK_HREF>'; </TMPL_IF> function replaceEntry( f ){ var i = f.to_ping_urls.selectedIndex; var w = f.text.value; var t = entry[f.to_ping_urls.selectedIndex]; var r = new RegExp(linkto); w = w.replace(r,t); f.text.value = w; linkto = t; }
また、同じファイルの
<select name="to_ping_urls" class="menu-long" >
を
<select name="to_ping_urls" class="menu-long" onchange="replaceEntry(this.form)">
に変更する。
あと、
lib/MT/App/CMS.pmの
$param{to_ping_url_loop} = [ grep { $_->{title} = Jcode->new($_->{title})->$charset() } @$items ];
の下に、以下を追加
$param{to_link_url_loop} = [ grep { $_->{title} = Jcode->new($_->{title})->$charset() } @$items ];
$param{'link_href'} = $url;
で、大丈夫だと思う。
<と>を>などに変換し忘れていたり、そもそもおいらが他のファイルも書き換えていたりしたら、ごめんなさい。あと、WindowsのIE6でしか試してないから、うまく動かなかったらごめんなさい。
というか、IEでしか動かないような気がする。JavaScriptのreplaceって、regrepオブジェクト作らないとダメなんだっけ?
とりあえず、ここでいったん寝ます。(06:45)
起きて、さらに変更して、Mozilla Firefox/0.8でも動作することを確認。(13:30)