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