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)
コメント