テンプレートモジュールやシステムテンプレートもPHPモジュール化してみようと思いまして。
基本的には、ウィジェットのPHPモジュール化のときと同じ要領でした。ただ、入れ子の構造になってるのと、モジュールを読み込む記述を各アーカイブにしなくてはならない部分に注意です。
テンプレートモジュールをPHPモジュール化
1)今回いじっていこうと思ったテンプレートモジュールは次の4つ。バナーフッター以外は、ソースの中にreadfileの記述がある入れ子構造になってます。解説はバナーヘッダーを例に。
- バナーヘッダー
- バナーフッター
- サイドバー
- サイドバー2
2)うちのサイトの場合、ヘッダーにはナビゲーションリンクとカレンダーがあります。で、デザイン>テンプレートをクリックして、 テンプレートモジュールにある「バナーヘッダー」をクリック。表示されたソースの内容をメモ帳にコピー。
3)デザイン>テンプレートをクリック。インデックステンプレートの下にある「インデックステンプレートの作成」をクリック。下記のように記述して保存。内容に関しては、メモ帳にコピーしたソースの中で各該当のある部分だけを記述。
テンプレートの名前:mm-ナビゲーション
内容:メモ帳に貼り付けたソースから該当記述部分のみをコピー
出力ファイル名:mm-navi.html
テンプレートの名前:mm-カレンダー
内容:メモ帳に貼り付けたソースから該当記述部分のみをコピー
出力ファイル名:mm-calendar.html
3)メモ帳のソースの中で、ナビゲーションリンクとカレンダーの記述部分を、以下のように書き換え。
→ <?php readfile("<$mt:BlogSitePath$>mm-navi.html"); ?>
→ <?php readfile("<$mt:BlogSitePath$>mm-calendar.html"); ?>
4)デザイン>テンプレートをクリック。インデックステンプレートの下にある「インデックステンプレートの作成」をクリック。下記のように記述して保存。内容に関しては、3)で書き換えたソースを記述。
テンプレートの名前:m-バナーヘッダー
内容:3)の記述が埋め込まれたヘッダーのソース
出力ファイル名:m-header.php
5)後は、メインページのソースの該当部分を下記のように変更して再構築。うまいこと表示されたのを確認したら、カテゴリ別ブログ記事リスト,ブログ記事,月別ブログ記事リストの3つも同じように変更する。
<$mt:Include module="バナーヘッダー"$>
↓
<?php include("<$mt:BlogSitePath$>m-header.php"); ?>
サイドバーやサイドバー2については、こんなに大変なことはしなくてええんやけど、すでにウィジェットが埋め込まれている記述がされてるので、同じようにphpで保存し、includeで挿入させました。
ところで、コメントとトラックバックは何度やってもエラーが出てうまくいかんかったわ・・・。
検索結果とPHP化
あとは何が残ってるかな・・・といじってたら、検索結果のページだけ反映されてない。
ああ、忘れてたと思い、上記のモジュールを埋め込んでいって確認したら、あら?おかしなことになってる・・・。
これ、このシステムテンプレートって、cgiで動いてたんな・・・。色々やってみたけど、ソースは本(レッスンブック)でいじってしまってるのが原因なのかうまいこといかん。
で、検索結果以外で、コメントプレビューなんかもいじらなアカンっぽいけど、本で簡略化したソースに書き換えてしまってるので、結局は、「検索結果」のみをどうにかすればよいということであった。
で、下記のサイトを見つけました。
[参考サイト]
1)こちらのページから、mt-phpincgi.txtの内容をメモ帳にコピーしてmt-phpincgi.phpで保存。そして、MovableTypeをインストールしたフォルダにUP。
2)MovableTypeをインストールしたフォルダの中に、cgitmpという名前でフォルダを作ります。パーミッションを707に設定。
3)デザイン>ウィジェットをクリック。ウィジェットテンプレートの中の「検索」をクリック。formタグのaction部分を下記のように書き換え。
action="<$MTCGIPath$><$MTSearchScript$>"
→ action="<$MTCGIPath$>mt-phpincgi.php"
4)そのformタグの後に次のタグを追加で書き足し。(2段になってるけど1行で。)
<input type="hidden" name="requrl" value="
<$MTCGIPath$><$MTSearchScript$>" />
5)あとは、システムテンプレートの「検索結果」に、readfileやincludeで今までのように読み込むような記述をして再構築で完成。