MTでエントリーが属する特定のカテゴリー一覧を表示

こんにちは、WEB番長のPepperです。

MTで構築しているサイトでエントリーが属する特定のカテゴリーの一覧の表示をする必要があって、色々調べてたのですがなかなかよい方法が見つかりませんでした。

これはプラグイン作るしかないか?

と思ったのですが、さらに調べてたらなんとも簡単に方法が見つかりました。


やはりMTプラグインは、「作る前に調べろ」ですね。
なんとかなるものですね。

方法は以下、

カテゴリーの状態としては、

親カテゴリー
  |― サブカテゴリー1
  |     |― サブサブカテゴリー1
  |     |― サブサブカテゴリー2
  |     |― サブサブカテゴリー3
  |     |― サブサブカテゴリー4
  |  
  |― サブカテゴリー2
  |     |― サブサブカテゴリー1
  |     |― サブサブカテゴリー2
  |     |― サブサブカテゴリー3
  |     |― サブサブカテゴリー4

という感じでカテゴリーが三階層になっているという、なんとも複雑な状態。

この中のサブカテゴリー1の中でエントリーが属しているカテゴリー一覧を表示したいんです。

FilterCategories Pluginという有名なプラグインをダウンロード→インストール

このプラグインでMTFilteredEntryCategoriesというタグが使えるようになります。
(MTFilterCategoriesタグは有名なのですがMTFilteredEntryCategoriesというのはお恥ずかしながら知りませんでした。)
MTFilteredEntryCategoriesはMTEntryCategoriesタグをフィルターできるという非常に便利なタグです。

それで、

<MTSetVarBlock name="cat"><MTSubCategories category="サブカテゴリー1"><MTCategoryLabel>|</MTSubCategories></MTSetVarBlock>

という感じでサブカテゴリー1の下層にあるカテゴリー一覧を変数に入れる。

試しに<MTGetVar name="cat">で表示させてみると、

サブサブカテゴリー1|サブサブカテゴリー2|サブサブカテゴリー3|サブサブカテゴリー4|

という感じで表示されます。(最後の「|」は実はいらないのですが、それはひとまずほっとく。)

あとは、

<MTFilteredEntryCategories glue="," include="$cat">
<a href="<$MTCategoryArchiveLink$>"><MTCategoryLabel></a>
</MTFilteredEntryCategories>

という風にすればできました。


あと、これもちょっとしたTIPSですが<MTEntries category="hoge">という感じで特定のカテゴリーに属するエントリー一覧を表示させることがあると思いますが、現在いるカテゴリー及び特定のカテゴリーに属するエントリー一覧を表示したい場合は以下のようにします。

カテゴリーアーカイブ内で、

<MTSetVarBlock name="cat"><MTCategoryLabel> AND 他のカテゴリー名</MTSetVarBlock>

という感じで「現在いるカテゴリー名 AND 他のカテゴリー名」を変数に入れて、

<MTEntries glue="," categories="$cat">
<a href="<$MTEntryPermalink$>"><MTEntryTitle></a>
</MTEntries>

とすればできます。


MTは既存のタグを組み合わせれば色々できます。
便利ですね。

Access Ranking

Comments