カテゴリーアーカイブへの「あいのり」

以前「MT4i相互乗り入れ実験」の記事で、「カテゴリーアーカイブなんかもやろうと思えばできると思いますが」などと書いてしまってうっかりほったらかしていたのですが、標準機能ではカテゴリーアーカイブからMT4i(のカテゴリー絞込み一覧)へ「あいのり」させることはできません。

MT4i の「あいのり機能」自体は <link …>タグで指定されたページへ飛ぶだけなので「ま、できるだろう」くらいの気持ちで書いたのですが、いざやってみると落とし穴があります。

どういうことかというと、MT4iでカテゴリー選択状態の一覧を表示するためには、cat パラメータで「カテゴリーID」を渡してやる必要があるんですが、MovableType側にカテゴリーアーカイブテンプレートでカテゴリーIDを出力するタグがないんですね。

<$MTCategoryID$>というタグがあるんですが、カテゴリーアーカイブテンプレート内であっても<MTCategory>コンテナタグの中で使用しないとエラーになるのでそのままでは利用できません。

<MTCategory>と同等の<MTEntryCategories>の中で

<MTEntries lastn=”1″>
 <MTEntryCategories>
  <$MTCategoryID$>
 </MTEntryCategories>
</MTEntries>

などとする方法もありますが、これだとカテゴリーアーカイブの先頭エントリが複数カテゴリーを持っている場合、IDを全て列挙してしまうのでうまくありません。glue=’&’とかで無理やりやっつけようと思っても、一番最初にプライマリカテゴリーのIDがリスティングされるわけではないので、簡単に対処はできません。

だとすると<$MTArchiveTitle$>でカテゴリー名を出せるので、MT4i側をいじってカテゴリー名で絞り込めるようにするという方法もなくはないですが、そんなことしたくないわけです。

ということはプラグインをこしらえてカテゴリーIDを出力できるようなタグを追加するしかないわけなんですが、Plugin Directory を探したら MTCategoryOfArchive というプラグインが見つかりました。これを使えばなんとかできそうです。

というわけで、カテゴリーアーカイブテンプレートへの<link …>タグの追加方法に関する説明を、Wiki に追記しておきました。

コメントを残す

メールアドレスが公開されることはありません。