ファンクションタグの変数でユニーク仕様

Movable Type Tips ファンクションタグ: 変数

Movable Type 4になり、ファンクションタグの変数が全面的に使われ始め、リファレンスも整いつつある。最近ではブログではないサイトをMovable
Type化したいという案件が増えてきているので、変数を活用して、様々な形態のサイトを構築している。

カテゴリを特定させる

ポイントはファンクションタグの変数を効率的に利用することだ。そしてあまり複雑な作りにしなこと。というのは、通常の企業サイトやショップサイトのような、ブログではないサイトの場合は、アーカイブタイプはカテゴリのみで充分というのが圧倒的に多い。ただカテゴリごとにレイアウト、デザインを変更しないといけないケースが多いので、それを留意して構築する。

そんなときに、よく使うファンクションタグは、<$MTCategoryBasename$>を組み合わせて、カテゴリを特定させると、後々構築しやすくなる。

<MTSetVarBlock name="body_id">category-<$MTCategoryBasename$></MTSetVarBlock>

上記はbodyのID定義のように見えるが、ただ単にbody_idの値を定義しただけなので、いろいろなことに利用できる。たとえば出力ファイル名が「movable-type」の場合、

<MTIf name="body_id" eq="category-movable-type">
</MTIf>

を利用すれば、出力ファイル名を「movable-type」のカテゴリーだけ表示させることが可能だ。<MTIf>〜</MTIf>の間に記述しよう。

ちなみに<$MTCategoryBasename$>は、カテゴリの編集画面で設定でき、通常ではカテゴリのページが格納されるディレクトリ名になる。

<MTIf name="body_id" eq="category-movable-type">は、body_idがnameモディファイアの値、category-movable-typeはMTSetVarBlockの変数で、eqはこの二つが一致する場合という意味。つまり、MtSetVarBlockの変数を指定することにより、カテゴリーの種類によって、ユニークなページが実現できるのだ。

あとは、<body id="<$MTGetVar name="body_id"$>">と、<body>タグを書き換えれば、スタイルシートからのデザインも容易になる。

カテゴリごとにエントリのレイアウト、デザインも変更

「このカテゴリーのこのページだけこうしたい。」という場合には、Movable Type 4から搭載された「ウェブページ」の機能を使えば簡単にできる。ただ、これでは単純すぎておもしろくないし、各ウェブページには、テンプレート以外にファンクションタグを使うことが出来ないので、ユニークな仕様にするのは難しい。なので、エントリーとしてページを吐き出す仕様にすれば、カテゴリーの設定も投稿画面から操作できるので、簡単にエントリーごとのレイアウト、デザインを変更することができてハッピー。その仕様にするには、やはりファンクションタグの変数を駆使してテンプレートを構築する。

<MTSetVarBlock name="body_class">entryCategory-<$MTCategoryBasename$></MTSetVarBlock>

これをエントリーテンプレートの上部に記入させることにより、カテゴリーごとのエントリーを区別させることができる。たとえば<$MTCategoryBasename$>が「movable-type」の場合、body_classのMtSetVarBlockの変数は「entryType-movable-type」となるため、

<MTIf name="body_class" eq="entryCategory-movable-type">
</MTIf>

と明記することにより、entryCategory-movable-typeというMtSetVarBlockの変数をもつエントリーだけのレイアウト、デザインにすることが可能となる。これを活用すれば、特定のカテゴリーのエントリーに限った仕様にすることができるので、様々な条件にも対応できるだろう。

また、上記はbody_classにして、bodyのクラス定義にも利用できるようにし、スタイルシートの生産性も向上させている。<body>タグは下記に書き換えておこう。

<body class="<$MTGetVar name="body_class"$> id="<$MTGetVar   name="body_id"$>">

ただし上記の場合は、各テンプレートページにbody_class、body_idが必ず定義されている場合に限って有効。この二つのうち一つでも欠けているとエラーになる。(まぁ、問題なく表示するとは思うけど)

標準テンプレートから始めよう

上記の例はファンクションタグの変数を利用したユニークなMovable Typeでの構築例の一例に過ぎない。だいぶ構築の敷居は高いようにみえるが、コツをつかんでしまうと、本当に便利だ。

最初はMovable Type 4の標準テンプレートのファンクションタグの意味を理解してみよう。単純なファンクションタグの変数だけで、結構おもしろいことをやっている。たとえばテンプレートごとに、<h1>と<strong>を置き換えていたり、レイアウトを変更していたり。どうやってこれを実行しているかがわかるようになれば、自分でファンクションタグの変数を駆使してサイト構築することができるようになるはずだ。

related story