linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

GetQueryParamプラグインを使ってMTでカテゴリ&タグのアーカイブを作ってみる

みなさん、こんにちは、まーしーです
台風という噂だった東京ですが、そこまでひどくならなかったようでほっと一安心です。台風の季節にはまだ少し早いですよね。。  

さて、MTなどのCMSを使っている場合、運用のルールによってはタグアーカイブを作る事があると思います。
MTのタグアーカイブは検索をベースにして動的に生成されます。ただ、例えば特定のカテゴリ内にあるエントリーのタグが、、、などとそういう話もあるでしょう。

カテゴリと関連したタグアーカイブを作る

カテゴリアーカイブ内でタグをベースにとか言う場合はなかなかうまい方法がないので、タグアーカイブ内でカテゴリを固定するなど、そのような方法を代替手段としてとることになるかと思います。

動的に生成することが可能ですので、どのページからきたか?という物を判断して、カテゴリAからきた場合はタグアーカイブのうち、そのカテゴリに該当する物を表示させることで代用ができそうです。

となると、どこからきたかというのをどのように取得するか?という事になりますが、今回は藤本さんが公開されているGetQueryParamプラグインを使ってみます。

メールフォームプラグインV2.0・その12(ラジオボタン/セレクトの追加) - The blog of H.Fujimoto
http://www.h-fj.com/blog/archives/2008/02/19-134955.php  

このプラグインを使う事で、リンク内のパラメータを取得して使用することが可能になります。

リンク内のパラメータから値取得してみるサンプル

例えば、タグ一覧を作成する場合

<ul>
<mt:Tags>
<li><a href="<$mt:TagSearchLink$>"><$mt:TagName$></a></li>
</mt:Tags>
</ul>

のような書き方をすると思います。

このリンク先である検索結果のテンプレート内でタグアーカイブの見た目を調整します。その際に元ページに応じて切り替えるパラメータを設定しておきます。

先ほどのタグ一覧のサンプルに

<ul>
<mt:Tags>
<li><a href="<$mt:TagSearchLink$>&category=<$mt:CategoryBasename$>"><$mt:TagName$></a></li>
</mt:Tags>
</ul>

といったかんじで、categoryというパラメータを追加してみます。この記述がカテゴリアーカイブ内で書かれていれば、CategoryBasenameのところがその値に応じて変化することになります。

このようにパラメータを渡しておくと、検索結果のテンプレートで

<mt:SetVars>
search_category=<$MTGetQueryParam name="category"$>
</mt:SetVars>

というかんじで取得することが可能になります。
一度取得出来れば、

<mt:If name="search_category" eq="hoge">
〜〜〜
</mt:If>

といったかんじで条件に応じて記述をすることが可能になりますね。

スマートな方法ではないですが、テンプレートとプラグインで見た目をカテゴリベースにしたうえで、タグアーカイブ的なテンプレートも実装することができます。