-
entry000394
MT をちょこちょこといじっていて,コメント登録の確認画面,エラー画面に手を入れようとしてはたと気付きました. PHP 使えないじゃないすか. コメント登録の確認画面,エラー画面は mt-comments.cgi です.「*.cgi」. PHP が使えないのも仕方ありません.
しかし,麦酒堂は相当部分が PHP 化されてしまっていて,デザインの一貫性を保つためには PHP が欠かせない状況です. 動的部分だけが Perl というのは,これはなかなか厳しい.
という背景を踏まえまして,今回 mt-comments.cgi を PHP でラップするという強引なスクリプトを書きました.
ラップとは言っても,内部で HTTP リクエストを発行するという疎な呼び出しです. 逆に,mt-comments.cgi が別ホストにあっても良いので,何か変わった使い方もできるかもしれません. 具体的に思いつかないけれど・・・負荷分散とか?
そしてその HTTP リクエストで mt-comments.cgi が返した文字列を *.php 内に表示します. 使用方法は次のようになります.Individual entry archive 等の,mt-comments.cgi へ post する form 要素をもつページの先頭に以下のコードを埋め込みます.
<?php include ( "mt_comments_wrapper.php" ); $v_mtCommentsWrapper = new mt_comments_wrapper ( "mt.mizba.net" , "/system" ); $v_mtCommentsWrapper->go(); ?>mt_comments_wrapper.php のパスは環境に合わせて設定してください. "mt.mizba.net" , "/system" はそれぞれ mt-comments.cgi が存在するホスト名,パスになります. これも環境に合わせて設定してください.
既存のフォームの直前と直後に以下のコードを埋め込みます.
<?php if ( ! $v_mtCommentsWrapper->execBody () ) { ?> 既存の form 要素 <?php } ?>form 要素だけを厳密に囲む必要はなく,mt-comments.cgi の出力で置き換えたい範囲も含めて囲んでください.
手順 2 で囲んだ範囲は "Comment Preview Template" , "Commment Error Template" に基づく出力で置き換えられます. この二つのテンプレートを編集し,form 要素のみに削ってください. html 要素,body 要素等は不要になります.
特記事項.
- form の post 先は mt-comments.cgi ではなく,*.php 自身にしてください.
- mt-comments.cgi の出力中の <?php ... ?> は PHP のコードとして実行されます.