Movable Typeでサイトを構築していると、ヘッダーやサイドバーなどの「共通テンプレート(ウィジェットやモジュール)」の中で、「今表示しているページが何のアーカイブか」によって表示を切り替えたい場面が多々あります。
例えば、「ブログ記事の時はこのバナーを出す」「年別アーカイブの時だけタイトルを変える」といった処理です。公式ドキュメントには予約変数の説明がありますが、具体的な使い方がパッと見で分かりにくいため、備忘録として実装方法をまとめました。
変数「archive_class」を活用する
MTのアーカイブテンプレートには、あらかじめシステム側で定義されている「予約変数」が存在します。その中でも便利なのが archive_class です。
この変数には、現在表示しているテンプレートの種類に応じた「識別子」が自動で格納されます。これを利用して mt:If 文を書くのがスマートな方法です。
基本的な書き方
条件分岐は、以下の例のように name=”archive_class” を使って記述します。
コンテンツタイプの年別アーカイブを判別コンテンツタイプで作成した年別リストだけに特定の処理をしたい場合です。
<mt:If name="archive_class" eq="contenttype-yearly-archive">
</mt:If>
ウェブページ(固定ページ)を判別
<mt:If name="archive_class" eq="page-archive">
</mt:If>
カテゴリリストを判別
<mt:If name="archive_class" eq="category-archive">
</mt:If>
活用シーン
共通ヘッダーでの出し分け具体的には、以下のように「パンくずリスト」や「メインビジュアル」の切り替えに使えます。
<header>
<mt:If name="archive_class" eq="entry-archive">
<p>ブログ記事を読んでいます</p>
<mt:ElseIf name="archive_class" eq="page-archive">
<p>ウェブページを表示中です</p>
<mt:Else>
<p>その他のページです</p>
</mt:If>
</header>
まとめ
archive_class を知っておくだけで、テンプレートの共通化が楽になります。「テンプレートごとにモジュールを分けるのは管理が大変……」というときは、この予約変数を使った条件分岐をぜひ試してみてください。


コメント