トップページ > CMS・BLOG > MTのテンプレートモジュールと他インクルードの違い

2006.08.26

MTのテンプレートモジュールと他インクルードの違い

DSC01613.jpg

MovableTypeのテンプレートモジュールを、はじめてまともに使ってみた。

昔から搭載されていた機能なのに、何故か今までまともに使ってみた事が無かった機能で、かなり勘違いして覚えていた。

何を勘違いしていたかというと、モジュールも単品でファイルを生成するものだと思っていたのだ。

ヘッダーやフッターをモジュールで切り分け、MT以外で構築したページからインクルードしようとしたら、ファイルが出来て無いのでインクルードが出来ず、そこでやっと気が付いた。

スポンサードリンク

まったくもって恥ずかしい失敗なのだが、何か地味に需要がありそうなので、簡単にまとめてみる事にしてみた。

  • [テンプレート] - [インデックス] : テンプレートファイルの内容に沿ってファイルを出力(生成)する。
  • [テンプレート] - [モジュール] : インクルードされた場合に、モジュールの内容に沿って展開され、インクルード元のテンプレート内容に沿ってファイルを出力(生成)する。

要するに、モジュールはパーツとして、ファイルを生成する事は無く、MTでのみインクルードされる事を前提にした機能。他の方法で構築したページから、モジュールをパーツとしてインクルードする事は、現実的ではない(直でdbを読みに行けば可能だが面倒)という事になる。

というわけで、ヘッダーやフッターなどをモジュール化して、他で構築したページからインクルードするには、やはり[テンプレート] - [インデックス]を使ってヘッダーやフッターなどのパーツをファイル出力し、PHPなどでインクルードする方法がベスト。

両者の違いはこんな感じだろうか。

  • モジュールテンプレートによるインクルード: 
    構築時に展開されてインクルード。出力されたページは基本的にスタティックで、毎表示に掛かる負荷は少ない。パーツとしてファイルを出力しないので、モジュールパーツはMT以外から基本的に利用出来ない。
  • インデックステンプレートを使いPHPなどによるインクルード: 
    表示時にインクルードされ展開。出力されたページでは、毎表示毎にインクルード展開の負荷が掛かる。パーツとしてファイル出力するので、パーツは他で構築したページからインクルード可能。

こうやってみるとモジュールテンプレートを利用するのは、以下の場合かもしれない。

  • MovableType以外でページを構築する事が無い。
  • ページ数が少なく、再構築の負荷を気にする必要は無い。
  • アクセス数が膨大で、毎表示に掛かる負荷を少しでも減らしたい。
  • PHPやSSIが使えない。

それ以外の場合だと、インデックステンプレートでヘッダーやフッターなどのパーツファイルを生成しておき、他で構築したページなどから、そのファイルをインクルードした方が利便性が高い。

ヘッダーやフッターなどのパーツがファイルとして出来てしまい、他からそのパーツにアクセスされるのが嫌だったら、「/inc/」など適当なディレクトリを作って出力して「.htaccess」で「deny from all」してしまえばいい。インクルードする場合は、denyされないから。

※追記:文章だとわかりずらいので簡単に図にしてみた

include.gif

 

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67750/11616778

この記事へのトラックバック一覧です: MTのテンプレートモジュールと他インクルードの違い: