備忘録:MTIfの比較対象に変数は使えない

あるカテゴリ以下のサブカテゴリーリストを出力したいと思い


<ul>
<MTTopLevelCategories>
<MTSetVarBlock name="parent">
<MTCategoryLabel trim_to="3">
</MTSetVarBlock>
<MTHasSubCategories>
<MTIf name="parent" eq="000">
<MTSubCategories>
 <li>
  <a href="<MTCategoryArchiveLink>">
  <MTCategoryLabel cutbefore="_"></a>
 </li>
</MTSubCategories>
</MTIf>
</MTHasSubCategories>
</MTTopLevelCategories>
</ul>
こんな感じで組んだ。
トップカテゴリから全カテゴリーを参照しつつカテゴリ名先頭3文字を取得し、サブカテゴリーがある場合に、取得した文字列が「000」かを判別する。「000」の場合はサブカテゴリー一覧を出す、という処理。
(なぜかTopLevelCategoriesを使うとSubCatsIsFirstで正常に出力されないので<ul>はベタ書き)
で、

<MTIf name="parent" eq="000">
ここのeq="000"を変数にすりゃモジュール化してウハウハじゃね?と思ったので

<MTSetVar name="catNum" value="000">
〜上記同様〜
<MTIf name="parent" eq="catNum">
〜上記同様〜
こんな感じで試してみた。
読み通りなら前者と同じ結果が返ってくるはずだったのだけれど、結果は何も出力されず。つまりエラー。
<MTIf>は比較対象に変数を使えないようです。
参照方法が悪かっただけで、下記のように変数名文頭に「$」を付けることで参照可能。

<MTSetVar name="catNum" value="000">
〜上記同様〜
<MTIf name="parent" eq="$catNum">
〜上記同様〜




<MTSetVarBlock>が面白いのでやたらに使ってたけど、単純に<MTIfCategory>使えばもっと短くなった。嫌いなので使わなすぎて存在忘れてた。