コメント/検索関連テンプレートのPHP化(その1)

Movable Typeのコメント関連のテンプレート(コメント・プレビューなど)と、検索結果のテンプレートは、コメントや検索が行われた時点で、CGIでそのつど出力するようになっています。
そのため、テンプレートの中にPHPのスクリプトを書いても、そのままでは動作しません。

そこで、これらのテンプレートをPHP化するスクリプトを作ってみました。
PHPのスクリプトから、コメントや検索のCGI(mt-comment.cgi/mt-search.cgi)を呼び出してその結果を読み込み、PHPで処理して出力するという仕組みです。

今日は、コメント関連のテンプレートをPHP化する手順を紹介します。

1.スクリプトのアップロード

まず、以下のアドレスに接続して、表示されたソースをすべてコピーし、「mt-phpincgi.php」という名前のファイル名で保存してください。

mt-phpincgi.txt

そして、そのファイルを、Movable Typeのインストール先ディレクトリにアップロードしてください。

2.cgitmpディレクトリの作成

次に、Movable Typeのインストール先ディレクトリの中に、「cgitmp」という名前のディレクトリを作ります。
そして、そのパーミッションを「707」に変えます。

3.個別アーカイブテンプレートのコメント投稿フォームの修正

個別アーカイブテンプレートの中に、コメント投稿フォームの部分がありますが、そこを書き換えます。
まず、<form・・・>のタグを探し、その中にある「action="・・・"」の部分を以下のように変えます。

修正前 : action="<$MTCGIPath$><$MTCommentScript$>"
修正後 : action="<$MTCGIPath$>mt-phpincgi.php"

そして、formタグの後に、以下の行を追加します。

<input type="hidden" name="requrl" value="<$MTCGIPath$><$MTCommentScript$>" />

なお、Movable Type 3.1xの個別アーカイブテンプレートでは、formタグが2箇所あります。
2箇所とも上記の書き換えを行ってください。

4.コメント・プレビューのコメント入力フォームの書き換え

コメント・プレビューページで「確認」のボタンがクリックされた場合、コメント・プレビューテンプレートを元にして、ページが再度動的に生成されます。
そこで、コメント・プレビューテンプレートのコメント入力フォームも書き換えます。

Movable Type 3.2の場合、コメント・プレビューテンプレートの中に、コメント入力フォームのformタグがあります。
前述の2.の手順で、formタグの「action=”・・・”」の部分を書き換え、その後にinputタグを追加してください。

一方、Movable Type 3.1xでは、コメント・プレビューテンプレートのコメント入力フォームは、MTCommentFieldsタグで出力されています。
そこで、lib/MT/Template/Context.pmを書き換えて、このタグの処理を変えます。
このファイルの中に「sub _hdlr_comment_fields {」の部分があり、そこからしばらく下に行くと、コメント入力フォームがあります。
その中のformタグの「action=」の部分を、以下のように書き換えます。

修正前 : action="$path$comment_script"
修正後 : action="${path}mt-phpincgi.php"

また、このformタグの行の後に、以下の行を追加します。

<input type="hidden" name="requrl" value="$path$comment_script" />