他のブログツール同様、EEも、カテゴリに属する記事を書いたら勝手にカテゴリページを生成してくれます。
で、これ一応カスタマイズできるみたいなのですが、その挙動がどうもわかりにくいので、まとめてみました。
カテゴリへのリンクの生成
トップページのサイドバーあたりでカテゴリへのリンクを出したいときは、
{exp:weblog:categories weblog=”test” style=”linear” }
<a href=”{path=main/test}”>{category_name}</a>
{/exp:weblog:categories}
という具合にすれば、カテゴリごとに <a href=”{path=main/test}”>{category_name}</a>
を呼び出してくれます。
Weblog Categories Tag – ExpressionEngine Documentation
通常、これで生成されるリンクは、
http://www.example.com/index.php/main/C1
という具合に、URLの後ろにテンプレートIDがついた物になりますが、
CP Home › Admin › Weblog Administration › Global Weblog Preferences
にある Use Category URL Titles In Links?
をYesにすると、
http://www.example.com//index.php/main/category/Blogging/
というような、カテゴリ名を使ったURLを生成してくれるようになります。
カテゴリページの内容
上記URLで表示されるページはどういう内容になっているのでしょう?
別に特別なテンプレートがあるわけではなくて、
http://www.example.com/index.php/main/
用のテンプレートで生成されます。
ただ、
{exp:weblog:entries}
で取得できるブログの記事は、該当カテゴリの物だけに制限されます。
結果として、{exp:weblog:entries}を使って普通にindexページを生成しておけば、該当カテゴリの記事だけが表示される、というわけです。
一見便利そうなこの仕組みですが、普通のブログツールを使い慣れたデザイナさんが、「カテゴリページのデザインです♪」とか言ってトップページと異なるデザインを持ってきたとたん、破綻します。
つまりトップページと同じテンプレートがカテゴリページにも適応されちゃうので、両方に対応したテンプレートを書かないといけなくなるわけです。
べつにデザイナーさんが悪いわけではなくて、カテゴリーページにはそのカテゴリの概要を書きたいとか、ごく普通の要望だと思います。
{if segment_2 == “category”}
を使って切り分けながら書いていけば、同じテンプレートを使い分けることも不可能ではないですが、本来全然別のページとしてデザインしている物を同じテンプレートにつっこむのはかなり大変です。
で、どうするかというと、いっそindexテンプレートをこんな内容にしてしまいます。
{if segment_2 == “category”}
{embed=”main/.category”}
{if:else}
{embed=”main/.top”}
{/if}
カテゴリページの時は.categoryを呼び出す、そうでないときは.topページを呼び出します。
こうすれば、カテゴリページ用の内容は.categoryに、トップページ用の内容は.topに書くことができて、シンプルなテンプレートにすることができます。