株式会社HAMWORKS
🤖

MTのカテゴリ階層表現(階層ごとにクラスがついている場合)

2018/10/30に公開

階層があるときは <mt:SubCatsRecurse /> で 定義したHTML(ブロック)を再帰的に表示してくれるMTMLになります。

単純にulの入れ子だった場合は、 mt:SubCategories と併用して利用することで表現することができる。
ただコーディング的に階層ごとにクラスが付いているケースがあるため、単純な繰り返しをする場合はこの方法だと何回も同じクラスを定義してしまいます。
そのため、階層を判別しクラスをつけたコードが以下になります。

  • インクリメントしながら1階層目と2階層目と3階層目でSetVarを定義
  • 該当の階層の時にクラスをつける(それ以外のときはUnlessとかで分岐は必要)
<mt:SubCategories top="1">
<mt:SetVar name="_cat_level" value="0" />
<mt:ParentCategories><mt:SetVar name="_cat_level" op="++" /></mt:ParentCategories>
<mt:If name="_cat_level" eq="1">
<mt:SetVar name="_parent_class_level" value="sitemap__list" />
<mt:SetVar name="_child_class_level" value="sitemap__item" />
</mt:If>
<mt:If name="_cat_level" eq="2">
<mt:SetVar name="_parent_class_level" value="sitemap-second" />
<mt:SetVar name="_child_class_level" value="sitemap-second__item" />
</mt:If>
<mt:If name="_cat_level" eq="3">
<mt:SetVar name="_parent_class_level" value="sitemap-third" />
<mt:SetVar name="_child_class_level" value="sitemap-third__item" />
</mt:If>
<mt:SubCatIsFirst>
<ul class="<mt:Var name='_parent_class_level' />">
</mt:SubCatIsFirst>
    <li class="<mt:Var name='_child_class_level' />">
        <a href="<mt:CategoryArchiveLink />"><mt:CategoryLabel /></a>
        <mt:SubCatsRecurse>
    </li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:SubCategories>
株式会社HAMWORKS
株式会社HAMWORKS

Discussion