top

デフォテンプレでテンプレートごとにレイアウトを変える

MT4はレイアウト(カラム)の変更もStyleCatcherで選ぶだけで簡単に変更できるようになりましたが、それだとどの頁も同じレイアウトになってしまいます。そうではなくて、例えばブログ記事だけ「大小」の2カラムにして他は「大小小」の3カラムにしたい、ということはありませんか。実はこれが出来るんです。

テンプレートを見ると、レイアウトはpage_layoutという変数に、カラム数はpage_columnsという変数に格納されているようです。通常はStyleCatcherで選んだ時点でシステムがこれを覚えるのだと思いますが、テンプレートに変数の内容を直接指定することで、システムが覚えた値を書き換えることが出来るようです。試してみたら上手くいったので、その覚え書きです。

なお、デフォルトで使えるレイアウトは4種類で、それぞれ以下のようにpage_layoutとpage_columnsに対応しています。

表示 page_layout page_columns
大小小 layout-wtt 3
小大小 layout-twt 3
大小 layout-wt 2
小大 layout-tw 2

例1:ブログ記事だけ2カラム、他は3カラムにしたい場合
この場合はStyleCatcherでは「大小小」を選び、デフォルトが3カラムになるようにしておきます。

●4.2の場合
ブログ記事テンプレートを開いて、</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTSetVar name="page_layout" value="layout-wt">
<MTSetVar name="page_columns" value="2">
<body id=" ・・・
・・・省略・・・

●4.1の場合
ヘッダーモジュールを開いて、上と同様に</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTIf name="entry_template">
<MTSetVar name="page_layout" value="layout-wt">
<MTSetVar name="page_columns" value="2">
</MTIf>
<body id=" ・・・
・・・省略・・・

4.1ではこの部分がヘッダーモジュールで共通使用されているので、「ブログ記事テンプレートのみ」設定されるように条件分枝で囲みます。4.0もたぶん同じ方法でいけると思います。

例2:トップ頁だけ3カラム、他は2カラムにしたい場合
この場合はStyleCatcherでは「大小」を選び、デフォルトが2カラムになるようにしておきます(多く使われるレイアウトをデフォルトに指定しておいた方がカスタマイズの手間が少なくて済むため)。

●4.2の場合
メインインデックステンプレートを開いて、</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTSetVar name="page_layout" value="layout-wtt">
<MTSetVar name="page_columns" value="3">
<body id=" ・・・
・・・省略・・・

●4.1の場合
ヘッダーモジュールを開いて、上と同様に</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTIf name="main_index">
<MTSetVar name="page_layout" value="layout-wtt">
<MTSetVar name="page_columns" value="3">
</MTIf>
<body id=" ・・・
・・・省略・・・

main_indexというのはメインインデックステンプレートにあらかじめ与えられている変数です。アーカイブインデックスを3カラムにしたい場合は<MTIf name="archive_index">~</MTIf>で同じ内容を囲みます。このようにあらかじめ決められている変数を予約変数と呼び、こられを活用することで「あるアーカイブには○○を表示、別のアーカイブにはXXを表示」といったことが出来ます。

例3:特定のカテゴリのみレイアウトを変えたい
この場合も同じように出来ます。例えば全体は3カラム、ギャラリーカテゴリだけ2カラムにしたい場合。

●4.2の場合
カテゴリ別ブログ記事リスト(カテゴリーアーカイブ)を開いて、</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTIfCategory name="ギャラリー">
<MTSetVar name="page_layout" value="layout-wt">
<MTSetVar name="page_columns" value="2">
</MTIfCategory>
<body id=" ・・・
・・・省略・・・

●4.1の場合
ヘッダーモジュールを開いて、上と同様に</head>と<body>の間に以下の赤字の部分を追加。

・・・省略・・・
</head>
<MTIf name="category_archive"><MTIfCategory name="ギャラリー">
<MTSetVar name="page_layout" value="layout-wt">
<MTSetVar name="page_columns" value="2">
</MTIfCategory></MTIf>
<body id=" ・・・
・・・省略・・・

category_archiveがカテゴリテンプレを識別する予約変数です。予約変数については以下に詳しいリストが載っていますので、参考にされるといいと思います。

アーカイブテンプレートに設定される予約変数(公式サイト)

予約変数一覧 for Movable Type 4(その1)
予約変数一覧 for Movable Type 4.1

これらを上手く活用すればデフォテンプレでも使いこなしの幅が広がるのではと思います。

<2008.9.10>レイアウト対応表を追加。
<2008.9.18>公式ドキュメントの予約変数一覧を追加。

 

トラックバックの一覧

トラックバック Blog" target="_blank">MT4.2 デフォルトテンプレートのレイアウト操作  »» 2009年1月30日 23:16
MT4.2 のデフォルトテンプレートをうまく活かそうと考えて、スタイルシートの修...

コメント

すごい役に立つ情報ありがとうございます。

参考にさせていただきました。

こんにちは。
お役に立てたなら嬉しいです。
これからもよろしくお願いします。