エントリから直接編集できるリンクを作る

既に入力済みのエントリに追記をしたいときとかに、まず編集画面のトップにログインして、ウェブログを選択して、--というプロセスを毎回毎回繰り返すのがだんだんと面倒になってきました。なんとかならないかな、と。
ヒントになったのは、トップページにつけてある検索機能。検索結果表示になぜか"[Edit]" とかいうリンクがついています。一瞬あせったのですが、これはブラウザ側のCookie を読み取り、ログイン済みならば表示させる、という処理を行っているようです。おお、これは使えるじゃないか、と、それっぽいタグをそのままコピーしてみるも、うまくいかず。
で、まあ、例によって世の中には同じようなことを思う人はやっぱりいるわけで、Brutal Hugs の、"EntryEditLink plugin" と、"JavaScriptCookies plugin" を組み合わせることであっさり実現。めちゃくちゃ便利になりました。以下その方法。


それぞれ、"EntryEditLink.pl" と"JavaScriptCookies.pl" というような名前で"plugins" ディレクトリにコピーします。編集のリンクを追加したいページの<head></head> タグ内のどこか適当な場所に、


<MTJavaScriptGetCookie>

の一文を追加しておきます。
あとはどこかリンクを表示させたい場所に、


<MTEntryEditLink>

と書くだけ。アラ簡単。"[Edit]" というリンクが追加されるはずです。
ただ、もし"mt.cgi" のファイル名を変えている場合はこのままだと動かないので、以下のように書き換えます。ついでに、リンクをクリックしたら新しいウィンドウで開くようにもしてみましょう。
EntryEditLink.pl 40-41 行目あたり


q([ <a href="%s%s?__mode=view&_type=entry&id=%d&blog_id=%d" target="_blank">編集</a> ]),
$url, $ENV{MOD_PERL} ? 'app' : '「変更したmt.cgi のファイル名」', $entry->id, $blog_id;

ついでに、最初に挙げた検索結果表示の"[Edit]" も、"mt.cgi" のファイル名を変えていた場合、変更が必要です。"lib/MT/App/search.pm" の最後の行あたりに"mt.cgi" と書いている箇所があるはずなので、このあたりを上記と同様にして書き換えてしまいます。というか上のをそのままコピーペーストでもオッケーです。
(2004/05/31 15:10 追記)
検索結果の表示ページの編集リンクは、ログインしていないときはソースにも何も表示されないのですが、このプラグインだとログインしていないときでもソースにJavaScript のコードがそのまま埋め込まれてしまう という大きな問題点に気づいたので、外しました。"mt.cgi" の名前を変更している場合、そのファイル名とユーザ名が丸わかりになるので、それらのリスクを充分承知した上で、自己責任でお使いください。
(2004/08/21 00:08 追記)
自分にしか見えない [編集] リンクを作る にPHP を利用した方法を書きました。よろしければご覧下さい。