[EE]カテゴリの扱いに関するまとめ

 他のブログツール同様、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に書くことができて、シンプルなテンプレートにすることができます。
カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: [EE]カテゴリの扱いに関するまとめ

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/529

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2008年3月10日 11:57に書いたブログ記事です。

ひとつ前のブログ記事は「 [EE]タイトルの長さの上限を変更する 」です。

次のブログ記事は「 [確定申告]なんでも経費申告しておいた方が得になるらしい。 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type