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

MTタグだけでカテゴリアーカイブでのカテゴリの階層を調べてみる

みなさん、こんにちは、まーしーです。

MTでテンプレートを書く際にカテゴリアーカイブで現在のカテゴリの階層(深さ)を調べたいと思ったのですが、うまいタグがなかったからなにか方法がないものかと考えてみました。

ひとまずこんな感じで書いてみました。

<mt:SetVarBlock name="catDepth"><mt:ParentCategories>a</mt:ParentCategories></mt:SetVarBlock>
<mt:If name="catDepth" eq="aaaaa">
〜〜〜〜
<mt:Else>
〜〜〜〜
</mt:If>

aの数を階層の数ととらえて作ってみたのですが、階層の深さを固定してやるならこれでもやれないことはなさそうです。

ただ、

<mt:If name="catDepth" eq="aaaaa">

がどうもかっこわるいなぁと思っていたのですが、「count_characters」というグローバルモディファイアがあるのを教えてもらいました。

count_characters | グローバル・モディファイアリファレンス
http://www.movabletype.jp/documentation/appendices/modifiers/count_characters.html

これをつかって

<mt:SetVarBlock name="catDepth"><mt:ParentCategories>a</mt:ParentCategories></mt:SetVarBlock>
<mt:SetVarBlock name="catDepth"><mt:GetVar name="catDepth" count_characters="1"></mt:SetVarBlock>

のようにすれば、catDepthを数字に置き換えられるので使いやすくできそうですね。

とはいっても、まだどうも使いにくそうなのでこのあたりについては「カンマ区切りの文字列をプラグインなしで配列のようにループで取り出すTips | かたつむりくんのWWW」を参考にしてみるといいかもしれません。

カンマ区切りの文字列をプラグインなしで配列のようにループで取り出すTips | かたつむりくんのWWW
http://www.tinybeans.net/blog/2012/06/16-075413.html

階層の深さと各カテゴリを配列に入れておいた方がなにかと便利なこともありそうなきがします。

こんなことを書くとプラグインとか書いてくれちゃいそうな気もしますね(笑

MTタグもそうですが、モディファイア、グローバルモディファイアは使わないと知らないものが多いというのを再認識させられました。