Movable Type 備忘録
インデックス・テンプレートによる共有化
- Next Page: サイドバーを折りたたむ
- Prev Page: MovableTypeのモジュールを作ってみる
今日はお題にあるように、インデックス・テンプレートによる各ページの共有化について説明したいと思います。
インデックス・テンプレートには2つの用途があります。1つはモジュール的な使い方で、各ページで共通な部分を抜き出したもの、もう1つは、世間一般的に言われているテンプレートです。
ここでは、前者のモジュール的な使い方のテンプレートについて取り上げてみます。
では、モジュールとインデックス・テンプレートの違いって何?
モジュールとインデックス・テンプレートによる共通化の違い
前回、モジュール作り方について説明しましたが、インデックス・テンプレートによる共通化とどう違うのかについて以下に説明してみます。
モジュールは静的な共通ファイルです。
モジュールとは、各ページで共通な部分を1つにまとめたものだと説明しました。
仮にモジュール内のコードを変更した場合どうなるかというと、モジュールを組み込んでいる、すべてのテンプレートを再構築する必要があります。
モジュールはあくまでも各ページで共通なコードというだけで、各ページにはしっかりそのコードがページ内に埋め込まれてしまうからです。
よって、モジュールに変更が入った場合、モジュールを組み込んでいるページを再構築しなければ、その変更は反映されません。
例えば、エントリ一覧をモジュール化した場合、新規エントリを追加してもモジュールを組み込んだページには反映されません。
インデックス・テンプレートによる共通化はどうかというと、インデックス・テンプレートによる共通化も基本的にはモジュールと同じです。
各ページで共通な部分を外部ファイル( 例えば、auau.html )として1つにすることができます。
また、その外部ファイルに変更が入った場合、モジュールと同様に組み込んでいるすべてのテンプレートを再構築しないと反映されません。
モジュールにしても、インデックス・テンプレートによる共通化にしても、SSIやIFRAMEのようにアクセス時に読込まれるわけではないんです。
じゃぁ違いってないじゃん
そうです。明確な違いってないんです。
こういうケースの時はモジュールにした方がいい、あるケースの場合にはインデックス・テンプレートで共通化した方がいいっというのはないんです。
わたしもここら辺は激しく悩みました![]()
テンプレートに組み込むコードも、モジュールの場合は
<$MTInclude module="Site Footer"$>
のように、モジュール名称を指定します。
テンプレート・インデックスによる共通化を行った場合は以下のように、
<$MTInclude file="footer.html"$>
テンプレートのファイル名を指定します。
上記の記述の違いを言うなら、<$MTInclude module="●●"$> の方は、完全にMobableType(ムーバブルタイプ)管理下にありますが、 <$MTInclude file="●●"$> の方はMobableType(ムーバブルタイプ)に関係なく、外部ファイルを読込むこともできる…というぐらいでしょうか。
ただし、MovableType(ムーバブルタイプ)のPHP化を行って、各ページの共通部分を抜き出す…ということになった場合には、モジュールとインデックス・テンプレートによる共通化では違いがでます。
PHP化を行うと、アクセス時にインデックス・テンプレートによる共通化を行ったファイルを読込むことができます。
また、各ページ内の共通部分を1ファイルにまとめた分、ディスク容量を節約することができ、再構築の時間も短縮することができます。
それに、PHP化前と違ってインデックス・テンプレートによる共通化したファイルに変更が入ったとしても、その都度再構築する必要はありません。
モジュールは、MovableType(ムーバブルタイプ)のPHP化を行ったとしても相変わらず再構築が必要となります。
PHP化後の使い分けは、モジュールは
- 頻繁に動的な変化がないもの、例えばフッタやヘッダなど
で、使うといいです。
インデックス・テンプレートによる共通化は、
- 動的な変化があるもの、例えばカテゴリ一覧とか、最新エントリ一覧、極端な話サイドバー全体でもいいかも。
で、使うといいです。
MovableType(ムーバブルタイプ)のPHP化については、以下のエントリを参考にしてください。
MovableTypeをPHP化する
SEE YOU![]()
Trackback Pings(0)
No trackbacks found.
Comments(0)
No comments found.


Post a Comment