Movable Type 4 の PHP モジュール化
インデックステンプレートを用いて、「最近のブログ記事」や「カテゴリーリスト」などのサイドバーのリスト類について、SSI(PHP)によるモジュール化を行なう方法を紹介します。
このエントリーは、Movable Type 3 の記事「Movable Type の PHP モジュール化の仕組みについて(その3:変更方法)」を Movable Type 4 向けに全面的に書き直したものです。Movable Type 4 では、サイドバーのリスト類がテンプレートからウィジェットに移動されているので、その辺りも考慮した内容にしています。
モジュール化のメリットについては、下記のエントリーを参照してください。
なお、各ページは事前に PHP 化を行っていることを前提としています。PHP化の方法については下記の記事を参照願います。
1.ウィジェットテンプレートの変更
Movable Type 4 では、サイドバーのリスト類はウィジェットに登録されているので、まずウィジェットテンプレートを変更します。以下、「最近のブログ記事」の場合を例に説明します。
ブログ管理画面の「デザイン」→「ウィジェット」をクリック。
「最近のブログ記事」をクリック。
テンプレートの内容を全選択してコピーします。コピーした内容はメモ帳などにペーストしておいてください。
テンプレートの内容を次の内容に書き換えます。
<?php readfile("<$mt:BlogSitePath$>recent_entries.html"); ?>
青色の部分がモジュールとして呼び出すファイル名になります。ファイル名は何でもかまいませんが、ここでは recent_entries.html で作業を進めます。
書き換えた後の画面は次のようになります。
書き換えたら「保存」をクリックします。
2.モジュールの作成
次に、モジュールとなる方のテンプレートを作成します。
ブログ管理画面の「デザイン」→「テンプレート」をクリック。
インデックステンプレートの「新しいインデックス・テンプレートを作る」をクリック。
インデックステンプレート作成画面で下記の項目を設定します。
- テンプレートの名前:最近のブログ記事
- 出力ファイル名:recent_entries.html
- テンプレートの内容:1項の作業でウィジェットからコピーテンプレートの内容をペースト
「出力ファイル名」は、このテンプレートを再構築した時のファイル名となります。このファイル名は、1項で設定した青色部分、
<?php readfile("<$mt:BlogSitePath$>recent_entries.html"); ?>
と必ず一致するようにしてください。
各項目を設定した後の画面は次のようになります。
あとは「保存」をクリックして、「このテンプレートを再構築する」のリンクをクリックし、作成したテンプレートを再構築してください。
あとは、全体を再構築して、リストが正常に表示されることを確認してください。
3.「最近のブログ記事」以外のリストをモジュールで利用する場合
モジュール化したいリストについて、1~2項の手順を繰り返します。その際、出力するファイル名を次のように変更してください。
- 最近のコメント:recent_comments.html
- 最近のコメント:recent_trackbacks.html
- カテゴリーリスト:categories.html
- 月別アーカイブリスト:monthly.html
必ずこの名称にしないといけないわけではなく、1項で設定した青色部分のファイル名と、2項で設定した出力ファイル名が一致していればOKです。
また、リスト類以外の検索フォームなど、テンプレートタグを使っているものについても、モジュール化しておけば再構築の負荷を減らすことができます。
4.システムテンプレートでもモジュールを利用する場合
「コメントプレビュー」や「検索結果」などのシステムテンプレートから、作成したモジュールを呼び出すときは、「最近のブログ記事」の場合、1項のウィジェットの内容を次のように修正します。
<mt:If name="system_template">
<$mt:Include file="recent_entries.html"$>
<mt:Else>
<?php readfile("<$mt:BlogSitePath$>recent_entries.html"); ?>
</mt:If>
青色部分のファイル名が一致するようにしてください。
以上です。
- MTInclude タグによる SSI(サーバサイドインクルード)不要なインデックステンプレートのモジュール化
- .htaccess によるリダイレクト
- Movable Type の PHP モジュール化の仕組みについて(その4:再構築オプション利用方法)
- Movable Type の PHP モジュール化の仕組みについて(その3:変更方法)
- Movable Type の PHP モジュール化の仕組みについて(その2:具体的動作とMTIncludeとの違い)
- Movable Type の PHP モジュール化の仕組みについて(その1:概要)
- テンプレート・モジュールの利用
こんにちは。
本記事を参考にしてかねてより懸案だったPHP モジュール化を行いました。
これまで再構築時間は約17分でしたが、モジュール化後は3分台後半ですむようになりました(エントリー約900、コメント約300)。
大幅な高速化となりストレスなく運用できそうです。
ありがとうございました。
>jupiさん
こんにちは。
ご連絡ありがとうございました。
無事に解消したようでよかったです。
ではでは!