印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableTypePlugin AdminCGIPath プラグイン 1.0

mt.cfg では、mt.cgi へのパスとして AdminCGIPath ディレクティブを指定することができる。しかし、このパスをテンプレートから参照することができない。プラグインを書いて、<$MTAdminCGIPath$> として参照できるようにする。

■ ■ ■

MovableType では、AdminCGIPath ディレクティブを設定することができる。デフォルトでは設定されておらず、CGIPath の値と同じになっている。AdminCGIPath は、SSL を有効にしたい場合や mt.cgi を他の CGI とは違うディレクトリに置きたい場合に設定する (Movable Type ユーザー・マニュアル: 設定ガイド)。セキュリティを考えれば、mt.cgi だけを別ディレクトリに置いてもそれほど強度は増さないので、実質的には編集を SSL で行いたい場合ということになる。編集内容はいずれ公開するものなので、暗号化にはあまり意味がない。SSL で保護したいのはパスワードだけということになる。CGI のパスワードを暗号化することにどれだけの意味があるかは分からない。しかし、個別記事に置く編集用リンクが SSL 対応であれば、ページをブラウズしてくれる人に対して「管理用」ということをより強く示せるのではないかという期待が持てる。

やりたいことをまとめると次のようになる。

  • 個別記事に、編集用の「Edit」というリンクをつけたい
  • 編集リンクのためのスクリプト mt.cgi へのパスは、AdminCGIPath の設定を優先し、設定がなければ CGIPath を使うようにしたい
  • 個別記事のテンプレートに mt.cfg へのパスを直接書きたくない

個別記事編集のためのアプローチには以下のものがある。

  • MovableType には、<$MTEntryEditLink$> という個別記事編集のためのタグが用意されているが、検索結果にしか使えない
  • EntryEditLink プラグインを導入すれば、検索結果以外でも <$MTEntryEditLink$> が使える (JavaScriptCookies プラグインが必要)
  • AdminLinks プラグインというものがあるが、PHP 用となっている

PC日記: Editリンクの作成(2) には、PHPを使わずにEditリンクを何とかしたいとして、AdminLinks プラグインに JavaScript を合わせて使う方法が試みられている。

色々考えてみると、私のやりたいことは AdminCGIPath の値を参照したいだけであり、もし <$MTAdminCGIPath$> テンプレートタグがあればそれを使いたいだけであることが分かった。しかし、<$MTAdminCGIPath$> というタグは用意されていないので、プラグインとして書いてしまうことにした。内容は次の通り。MovableType 2.x 用である。書き方は MTPath/lib/MT/Template/Context.pm が参考になった。

package MT::Plugins::AdminCGIPath;
use strict;

use MT::ConfigMgr;
use MT::Template::Context;
MT::Template::Context->add_tag(AdminCGIPath => \&admin_cgi_path);
use vars qw($VERSION);
$VERSION = 1.0;

sub admin_cgi_path {
 my $path = MT::ConfigMgr->instance->AdminCGIPath ||
 MT::ConfigMgr->instance->CGIPath;
 $path .= '/' unless $path =~ m!/$!;
 $path;
}

1;

これを admincgipath.pl というファイル名で MTpath/plugins ディレクトリに保存する。

個別テンプレートでは、nlog(n): 編集リンクを作るには で設定した <$MTCGIPath$> を <$MTAdminCGIPath$> に変更する。

<a href="<$MTAdminCGIPath$>mt.cgi?__mode=view&amp;_type=entry&amp;id=<$MTEntryID$>&amp;blog_id=<$MTBlogID$>">
Edit</a>

引数の区切りが「&」ではなく「&amp;」となっているのは間違いではない。HTML では、リンクであっても「&amp;」と書いたほうがよいとされている。

このプラグインの利点は、mt.cfg で AdminCGIPath の設定をコメントアウトしたとしても個別テンプレートの変更は不要だということである。しかし、それだけである。

Posted by n at 2004-09-05 23:59 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?