モジュール化とは
Movable Type 4 のデフォルトテンプレートでは、細かいモジュール化が行われています。
モジュール化とは、「複数のテンプレートで同じコード記述がある場合、ひとつのパーツとしてまとめ、分割ファイル化する」ということです。モジュール化されたコードがテンプレートに必要になった場合、インクルードという方式でテンプレート内に埋め込むことができます。
例えば、デフォルトテンプレートで構築されたときにエントリタイトルの下へ表示される投稿日・投稿者・コメント・トラックバック情報は、メインインデックスページ、カテゴリページ、エントリページなどで同じように表示されます(下図)。
この部分のコードは、実際にXHTMLのソースコードを見てみると、同じようなものが使用されています。出力されたXHTMLページのコードを見てみると、大抵はこのようになっています。
<div class="asset-meta">
<span class="byline vcard">
<address class="vcard author"><a class="fn url" href="http://www.apstars.com/blog/">yoshi</a></address> (<abbr class="published" title="2008-02-23T19:14:08+09:00">2008年2月23日 19:14)
</span>
<span class="separator">|</span>
<a class="permalink" rel="bookmark" href="http://www.apstars.com/default/2008/02/post.html">個別ページ</a>
| <a href="http://www.apstars.com/default/2008/02/post.html#comments">コメント(0)</a>
| <a href="http://www.apstars.com/default/2008/02/post.html#trackback">トラックバック(0)</a>
</div>
この部分のソース生成を行うのが、「ブログ記事のメタデータ」モジュールです。テンプレート中には、このXHTML生成コードは、「ブログ記事のメタデータ」モジュール一箇所にしか記述されていません。多くのテンプレートから共有されているのです。
<div class="asset-meta">
<span class="byline vcard">
<MTIfNonEmpty tag="EntryAuthorDisplayName">
<address class="vcard author"><$MTEntryAuthorLink show_hcard="1"$></address> (<abbr class="published" title="<$MTEntryDate format_name="iso8601"$>"><$MTEntryDate format="%x %X"$>)
<MTElse>
<abbr class="published" title="<$MTEntryDate format_name="iso8601"$>"><$MTEntryDate format="%x %X"$></abbr>
</MTIfNonEmpty>
</span>
<span class="separator">|</span> <a class="permalink" rel="bookmark" href="<$MTEntryPermalink$>">個別ページ</a>
<MTUnless name="hide_counts" eq="1">
<MTIfCommentsActive>| <a href="<$MTEntryPermalink$>#comments">コメント(<$MTEntryCommentCount$>)</a></MTIfCommentsActive>
<MTIfPingsActive>| <a href="<$MTEntryPermalink$>#trackback">トラックバック(<$MTEntryTrackbackCount$>)</a></MTIfPingsActive>
</MTUnless>
</div>
なお、モジュール化は必須ではありません。複数テンプレートの間で共通コードがあるとき、これを無理にモジュール化せずとも、モジュール化した場合と同じ動作をします。
モジュール化によるメリット
- モジュールの内容を一箇所書き換えれば、全てのテンプレートに適用される。楽で安全。
- モジュール内で再構築時の変数制御を行えば、ページによってきめ細かい表示変更が可能。
- 上手なモジュール化はテンプレートコードの見通しがよくなる。
- ページ先頭へ
- 前のエントリ: デフォルトテンプレートのファイル構成
- 次のエントリ: インクルードとは
- カテゴリ:テンプレート解説