Movable Typeのグローバルテンプレート

2011.04.16 17:10
 Movable Typeではグローバルテンプレートというウェブサイト、ブログなどすべてを含めたページで使用できるテンプレートがあります。いつの間にかできていた感じでいつからこの機能が付属したのか定かではないのですが、これはなかなか便利です。テンプレート機能にはなくてはならないグローバルテンプレートです。
http://www.movabletype.jp/documentation/designer/shared-templates.html
 具体的な使い方は公式ページにも載っているので参照ください。ここでは、よくわからないという方々に概念も含めて説明しています。

 もうすでにMTを使いこなしている方々には退屈な話しですので飛ばして読んでください。よくわからないという方々だけ読んでください。テンプレートの機能は、メインになるページとそのページに組み込まれるブロック(モジュール)の組み合わせで基本的には成立しています。勿論検索結果やコミュニティーなどのCGI的な機能に関するシステムテンプレートも存在しますが、基本的にはメインとサブ(モジュール)でテンプレートは構成されています。ウェブサイトやブログではそのような構成で日々の記事をパブリッシングしているわけですが、グローバルテンプレートは、それらのウェブページやブログに関連して「グローバル」なので、当然メインのページというものがありません。メインのページが存在するのは実態として存在するウェブページやブログのみなのです。ですから、グローバルテンプレートに必要なカテゴリーは、
  • テンプレートモジュール
  • メールテンプレート
  • システムテンプレート
の3種類になります。これらは概念的にいってすべて部品(モジュール)の機能を担っていることになります。

グローバルテンプレートを呼び出す

 呼び出し方は実に簡単で、
<$MTInclude module="グローバルテンプレートモジュールの名前"$>
ということになっています。しかしこれは通常のテンプレートモジュール(以下、ここではローカルなモジュールという言い方にしておきます。)と同様の呼び出し方になっています。つまりグローバルテンプレート特有の呼び出し方はないということです。しかし重複したモジュール名を使用した場合には、困ってしまうことになるので、そのような場合は「ローカルなモジュール」を優先的に呼び出します。そんなわけなので、グルーバルテンプレートには G_とか何とか適当なPrefixを付けておけばいいと思います。
 しかし、グローバルテンプレートと通常のブログのテンプレートが、もうごちゃごちゃになっていて何が何だかわからないなどという場合には、globalモディファイアを使うことができます。つまり、重複したテンプレートモジュールがある場合にはグローバルテンプレートを優先させるという設定ができます。
<$MTInclude module="グローバルテンプレートモジュールの名前" global="1" $>
これでグローバルテンプレートが優先されて読み込まれます。このglobalモディファイアをglobal="0"とした場合は、デフォルトのモディファイアのない状態と同じことを意味します。なかなか便利です。

 グローバルテンプレートにはウィジェットセットやウィジェットそのものを作成することもできます。ウィジェットを作成したらグローバルテンプレートとほぼ同様の呼び出し方で設定が可能です。ウィジェット名をそのまま呼び出せばよいだけで、更に同様にglobalモディファイアをtrueにしない場合は、通常のブログテンプレートのウィジェットが優先されるということです。
<$MTInclude widget="ウィジェット名" global="1"$>
これも簡単です。

 更にMTIncludeBlockというタグも同様に作成&設定が可能です。
グローバルテンプレートモジュールの場合
<MTIncludeBlock module="テンプレート名" global="1">
moduleモディファイアでも大丈夫。
</MTIncludeBlock>
グローバルウィジェットテンプレートの場合
<MTIncludeBlock widget="テンプレート名" global="1">
widgetモディファイアにしても大丈夫。
</MTIncludeBlock>



 大きなサイト構築する場合には結構重宝します。ヘッダーとフッダーなんかの部分は殆どグローバルテンプレートでやっつけないと後々厄介なので是非お試しを。





プロフィール



  • Name :: 山上オサム ♂(39)
  • Hobby :: 武術
  • Work :: Web Designer