PowerCMS™
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[ブログ] 人事・教育担当より アルファサードのメンバーに求めていること を追加しました。
[ブログ] PowerCMS サポートの実績 (2024年2月) を追加しました。
[よくあるご質問] スケジュールタスクが実行されているか確認する方法はありますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > テンプレート作成Tips > 任意のカテゴリを任意の順番でループ出力できるMTGroupCategoriesタグ

2017年01月13日

任意のカテゴリを任意の順番でループ出力できるMTGroupCategoriesタグ

今回MTGroupCategoriesタグと、MTSubCategoriesタグを使い任意のカテゴリを任意の順番で出力しつつ、階層的に出力するとっておきのタグの作り方をご紹介します!
例として、下記のようなカテゴリを階層的に表示します。

 MTGroupCategoriesタグを使用した階層的なカテゴリの表現画像

カテゴリグループの登録

カテゴリ例
想定される登録済みのカテゴリの画面

 上記のような、カテゴリが登録されている事を想定として下記のようなカテゴリのグループを作成します。

グループのカテゴリ例
想定されるグループのカテゴリの画像
DynamicMTMLカテゴリはグループに含めていません。

カテゴリのグループを登録する際に、子要素カテゴリの親カテゴリを登録します。
子要素のカテゴリを登録した場合は、直下のカテゴリが表示されることになり親カテゴリは表示されません。
また、子カテゴリ単体で表示したい場合は子カテゴリを登録してください。
グループのカテゴリに登録された順番で表示されます。

MTGroupCategoriesタグを使用して、カテゴリを階層表示する

 以下のソースが、カテゴリの階層表示するソースの例になります。


<MTGroupCategories group_id="14">
    <MTGroupCategoriesHeader><ul></MTGroupCategoriesHeader>
        <li><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel encode_html="1"$></a>
            <MTSubCategories>
                <MTSubCatIsFirst><ul></MTSubCatIsFirst>
                    <li><$MTCategoryLabel encode_html="1"$>
                        <$MTSubCatsRecurse$>
                    </li>
                <MTSubCatIsLast></ul></MTSubCatIsLast>
            </MTSubCategories>
        </li>
    <MTGroupCategoriesFooter></ul></MTGroupCategoriesFooter>
</MTGroupCategories>

MTGroupCategoriesタグのgroup_idモディファイアは、カテゴリのグループのidを指定します。 MTGroupCategoriesタグのsort_orderモディファイアでカテゴリのグループの順番を降順 (descend) か昇順 (ascend) に指定でき、デフォルトは昇順となります。
また、MTGroupCategoriesタグのlastnモディファイアで出力する親カテゴリ数の指定ができます。

MTSubCatsRecurseタグは、属するカテゴリのMTSubCategoriesタグを再帰的に呼び出します。 MTSubCatsRecurseタグのmaxdepthモディファイアには、数値を指定することで何階層まで表示するかを指定します。
MTSubCatsRecurseタグにmaxdepthモディファイアを指定しない場合は、全ての子カテゴリが出力されます。
<ul>タグを使い、子カテゴリを階層的に表示し、<li>タグで親カテゴリをリスト表示しています。

今回は、MTGroupCategoriesブロック内にMTSubCategoriesブロックを使用した例をご紹介しました。
上記のようにすれば、階層表示できますが注意点もあります。

  • 同じブログのカテゴリしか表示できない。
  • 表示するには、カテゴリをグループに登録する必要がある。
  • 親カテゴリに子カテゴリを表示したくない場合は、子カテゴリを外す必要がある。

メリットとしては、MT標準のMTTopLevelCategoriesタグは全てのカテゴリを出力するので出したいカテゴリはMTIFタグを使って条件分岐をする必要がありますが、このMTGroupCategoriesタグはgroup_idモディファイアにカテゴリのグループを指定するだけでカテゴリが出力できるのでとても便利です。
また、出力するカテゴリの順番を変えたいときはグループのカテゴリの順番を入れ替えるかsort_orderで降順・昇順を入れ替えれるので自由に順番を入れ替えられます。
カテゴリを階層表示できた時は感動しましたので、是非お試しください!


カテゴリー
テンプレート作成Tips
技術情報

Recent Entries