TopMovable Typeカスタマイズモジュール化 > Movable Type 4 の PHP モジュール化
2009年7月17日

Movable Type 4 の PHP モジュール化

Posted at July 17,2009 1:55 AM
Category:[PHP化, モジュール化]
Tag:[, , ]

インデックステンプレートを用いて、「最近のブログ記事」や「カテゴリーリスト」などのサイドバーのリスト類について、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>

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

以上です。

Posted by yujiro   このページの先頭に戻る
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバック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;」となります(全て半角文字)

Now loading...
Introduction
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.12