mtde.info

Movable Type Developers Express

モジュール化とは

2008年3月 2日 17:48 | Writer: apstar | 記事本文

Movable Type 4 のデフォルトテンプレートでは、細かいモジュール化が行われています。

モジュール化とは、「複数のテンプレートで同じコード記述がある場合、ひとつのパーツとしてまとめ、分割ファイル化する」ということです。モジュール化されたコードがテンプレートに必要になった場合、インクルードという方式でテンプレート内に埋め込むことができます。

例えば、デフォルトテンプレートで構築されたときにエントリタイトルの下へ表示される投稿日・投稿者・コメント・トラックバック情報は、メインインデックスページ、カテゴリページ、エントリページなどで同じように表示されます(下図)。

templatedoc_040_01.png

この部分のコードは、実際に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&#24180;2&#26376;23&#26085; 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>

なお、モジュール化は必須ではありません。複数テンプレートの間で共通コードがあるとき、これを無理にモジュール化せずとも、モジュール化した場合と同じ動作をします。

templatedoc_040_02.png

モジュール化によるメリット

テンプレート解説

2008 mtde.info