linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

MTの共通モジュール内に個別に読み込む物を指定する

100412.gif

みなさん、こんにちは、まーしーです。
早起きも早すぎるとほぼ夜なので早起きもほどほどに、と反省した月曜日です。今週も頑張っていきましょう。
さて、今日はMTのテンプレートをカスタマイズするときに忘れないでおきたい小ネタでも。

共通モジュール内のheadに読み込む物を指定する

HTMLの大枠はこのような感じになる場合で考えてみます。

<html>
<head>head</head>
<body>
<div id="header">header部分</div>
<div id="main">main部分</div>
<div id="sub">sub部分</div>
<div id="footer">footer部分</div>
</body>
</html>

個人的には良く作るのはテンプレートモジュール:ヘッダーとして

<html>
<head>head</head>
<body>
<div id="header">header部分</div>
<div id="main">

こんなかんじで、テンプレートモジュール:フッターとして

</div>
<div id="sub">sub部分</div>
<div id="footer">footer部分</div>
</body>
</html>

このような感じにきりわけて、

<$MTInclude module="ヘッダー"$>
main部分
<$MTInclude module="フッター"$>

と読み込むことが多いです。
ヘッダー、フッターが全ページで概ね同じであればこれで問題ないのですが、ページによってはヘッダー、フッターの中にいれたいものがあったりする場合があるかと思います。

そういうときはテンプレートモジュールのヘッダー、フッターに変数を読み込むように設定しておきます。
デフォルトではHTMLヘッダーというテンプレートモジュールが用意されていますが、これに近い事を変数でやります。

テンプレートモジュールのヘッダーはこんなかんじで、変数html_headを読み込みます。

<html>
<head>head
<$MTVar name="html_head"$>
</head>
<body>
<div id="header">header部分</div>
<div id="main">

フッターは変数html_footを読み込みます。

</div>
<div id="sub">sub部分</div>
<div id="footer">footer部分</div>
<$MTVar name="html_foot"$>
</body>
</html>

こうしておくことでテンプレートは

<MTSetVarBlock name="html_head" append="1">
<MTInclude module="hoge.js">
</MTSetVarBlock>
<MTSetVarBlock name="html_foot" append="1">
<MTInclude module="hogehoge.js">
</MTSetVarBlock>
<$MTInclude module="ヘッダー"$>
main部分
<$MTInclude module="フッター"$>

こんなかんじで共通パーツのヘッダーを読み込みながら、ページごとにheadやbodyの閉じタグ直前に必要なものを挿入することが可能になりますね。

よく使う物はテーマにしておくなどもありそうです

人それぞれの作り方があるかと思いますが、MTのテンプレートをカスタマイズするときは一旦まっさらな状態から作り始める事が多いかと思います。
読み込む順番や場所などを考えるともうすこし細分化するなどもありそうです。

デフォルトをベースに作る場合はhtmlヘッダーというのがあってそれを使ったりするかも知れませんが、個人的に時々忘れてしまうことがあるのでメモもかねて書いておこうと思います。

こういうよく使う物はテーマを使って標準セットにしておく等の工夫もいいかも知れませんね。