知らなかったんですが、MTSubCategoriesタグで<$mt:Var name="__counter__"$>
って使えなかったんですね…
リストを一定件数ずつ区切って出力するを参考にしました。(そのままともいう)
やりたいこと
- 特定のカテゴリのサブカテゴリを表示したい
- 6個ずつ並べたい
- エントリが1件もないカテゴリは非表示にしたい
ソースコード
<$mt:SetVar name="ctr" value="1"$> <mt:TopLevelCategories><mt:IfCategory name="機能"> <mt:SubCategories> <mt:SetVarBlock name="cat_count"><$mt:CategoryCount$></mt:SetVarBlock> <mt:If name="cat_count" ne="0"> <$mt:SetVar name="mod" value="$ctr"$> <$mt:SetVar name="mod" op="%" value="6"> <mt:If name="mod" eq="1"><div class="row-fluid"></mt:If> <div class="span2 borderBox link center mb10"> <a href="<$mt:CategoryBasename$>/"><$mt:CategoryLabel remove_html="1"$></a> </div> <mt:If name="mod" eq="0"></div></mt:If> <$mt:SetVar name="ctr" op="++"$></mt:If> </mt:SubCategories> <mt:If name="mod" ne="0"></div></mt:If> </mt:IfCategory> </mt:TopLevelCategories>
説明
<$mt:SetVar name="ctr" value="1"$>
変数「ctr」に「1」をセット。
<mt:TopLevelCategories><mt:IfCategory name="機能"> <mt:SubCategories> <mt:SetVarBlock name="cat_count"><$mt:CategoryCount$></mt:SetVarBlock>
「mt:TopLevelCategories」で一番上の階層のカテゴリを取得し、「mt:IfCategory」で絞り込み、「mt:SubCategories」で絞り込んだカテゴリのサブカテを表示させ、記事数を変数「cat_count」に収納。
<mt:If name="cat_count" ne="0">
記事数が0以外の時。
<$mt:SetVar name="mod" value="$ctr"$> <$mt:SetVar name="mod" op="%" value="6">
変数「mod」の値に「ctr」の値(初回は1、次からは1ずつ下で増やされていきます)を収納。
変数「mod」を6で割った余りを収納。(この余りの考え方がよく分からなかったのですがコレ読んで納得)
<mt:If name="mod" eq="1"><div class="row-fluid"></mt:If>
余りが「1」の時に「<div class="row-fluid">
」を出す。
つまり、1・7・13個目…などブロックの開始になります。
<div class="span2 borderBox link center mb10"> <a href="<$mt:CategoryBasename$>/"><$mt:CategoryLabel remove_html="1"$></a> </div>
サブカテの繰り返し部分です。
<mt:If name="mod" eq="0"></div></mt:If>
余りが「0」の時に「</div>
」を出す。
6・12・18個目…などブロックの終了時になります。
<$mt:SetVar name="ctr" op="++"$></mt:If> </mt:SubCategories>
一通りの処理が終わったら、最後に変数「ctr」に1足します。
ここまでを記事数0以外のカテゴリでループ回します。
「++」はインクリメント演算子(1加算するという意味)というそうです。
<mt:If name="mod" ne="0"></div></mt:If>
最後に余りが0(6・12・18個目…)以外の時に、このままだと閉じタグが生成されないので、
ブロックタグの外で待機させます。
</mt:IfCategory> </mt:TopLevelCategories>
一番最後に閉じタグでおしまい。
メモ
演算は必ず、「記事数が0件以外」という条件下で回す。そうしないと全てのカテゴリがカウント対象に。