2009年6月1日月曜日

テンプレートを各カテゴリ等で別々に使い分ける

特定のカテゴリだけ専用のテンプレートを使う

デフォルトのカテゴリテンプレートは「category.php」ですが、特定のカテゴリ専用のカテゴリテンプレートのファイル名には「category-8.php」のように、ハイフンとカテゴリIDの数字をつけて保存するだけです。
カテゴリ一覧のレイアウトが、特定のカテゴリだけ異なる場合等に便利です。例)製品情報カテゴリの一覧表示には必ず写真のサムネイルが入るが、更新情報やプレスリリース等の一覧はただのテキストと日付だけの表示で、製品情報一覧とはレイアウトが違う場合など。


特定カテゴリ内の詳細ページのみを専用のテンプレートで表示させる

に書いた(例)のようなケースでは、製品情報とプレスリリースでは一覧のレイアウトが違うわけですから、当然それぞれのカテゴリに含まれる詳細ページのレイアウトも別々になる場合が多いです。そんなときには「in_category」というタグで、エントリーがどのカテゴリに属するのかを判別します。「in_category」は通常はループの中で使うタグですが、前述のような使い方をする場合はループ外で使う必要があります。この場合、詳細ページのデフォルトのテンプレートである「single.php」に下記のコードを書きます。もしもカテゴリ8に属するエントリーの場合はsingle1.phpを使って表示し、その他の場合はsingle2.phpを使う。という意味のコードです。



------------------------------------------------------

post;
if ( in_category('8') ) {
include(TEMPLATEPATH . '/single1.php');
} else {
include(TEMPLATEPATH . '/single2.php');
}
?>

------------------------------------------------------