Movable Type 4 の PHP モジュール化

Movable Type 4 の PHP モジュール化

Posted at July 17,2009 1:55 AM
Tag:[Module, MovableType, 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>

青色部分のファイル名が一致するようにしてください。

以上です。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

こんにちは。

本記事を参考にしてかねてより懸案だったPHP モジュール化を行いました。

これまで再構築時間は約17分でしたが、モジュール化後は3分台後半ですむようになりました(エントリー約900、コメント約300)。

大幅な高速化となりストレスなく運用できそうです。

ありがとうございました。

[1] Posted by jupi : July 17, 2009 8:19 AM

>jupiさん
こんにちは。
ご連絡ありがとうございました。
無事に解消したようでよかったです。
ではでは!

[2] Posted by yujiro logo : July 17, 2009 1:00 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)