カテゴリ一覧の並び順がうまく反映されないことがあったので、並び順の変更方法を調べてみました。
サンプルコード
以下のような順番でカテゴリを登録してみます。
- 名前:カテゴリB
出力名:catb
id:7 - 名前:カテゴリC
出力名:catc
id:12- 名前:カテゴリC-1
出力名:catc1
id:14
- 名前:カテゴリC-1
- 名前:カテゴリA
出力名:cata
id:8- 名前:カテゴリA-2
出力名:cata2
id:16 - 名前:カテゴリA-1
出力名:cata1
id:15
- 名前:カテゴリA-2
MtCategoriesを使ってカテゴリ一覧を出力してみます。
<ul> <mt:Categories> <li><mt:CategoryLabel></li> </mt:Categories> </ul>
管理画面上で並び替えた順番でカテゴリが表示されるのかと思ったのですが、カテゴリ名の順番で出力されるようでした。
HTML
<ul> <li>カテゴリA</li> <li>カテゴリA-1</li> <li>カテゴリA-2</li> <li>カテゴリB</li> <li>カテゴリC</li> <li>カテゴリC-1</li> </ul>
ドキュメントを見ても、並び順を変更するsort_byは使えないようです。
MtCategoriesではなく、MtTopLevelCategoriesやMtSubCategoriesだとsort_byが使えるようです。
まずは特に設定しないで試してみます。
<ul> <mt:TopLevelCategories> <li><mt:CategoryLabel></li> <mt:SubCategories> <li><mt:CategoryLabel></li> </mt:SubCategories> </mt:TopLevelCategories> </ul>
MtTopLevelCategoriesとMtSubCategoriesの場合、管理画面上で並び替えた順番でカテゴリが表示されるようです。
HTML
<ul> <li>カテゴリB</li> <li>カテゴリC</li> <li>カテゴリC-1</li> <li>カテゴリA</li> <li>カテゴリA-2</li> <li>カテゴリA-1</li> </ul>
sort_byの値にcreated_onを指定して、作成日順に並ぶようにしてみます。
<ul> <mt:TopLevelCategories sort_by="created_on"> <li><mt:CategoryLabel></li> <mt:SubCategories sort_by="created_on"> <li><mt:CategoryLabel></li> </mt:SubCategories> </mt:TopLevelCategories> </ul>
意図した通り、作成日順(ID順)の並び順で表示することができました。
HTML
<ul> <li>カテゴリB</li> <li>カテゴリA</li> <li>カテゴリA-1</li> <li>カテゴリA-2</li> <li>カテゴリC</li> <li>カテゴリC-1</li> </ul>
【参考サイト】
- MTCategories – テンプレートタグリファレンス | CMSプラットフォーム Movable Type ドキュメントサイト
- MTTopLevelCategories – テンプレートタグリファレンス | CMSプラットフォーム Movable Type ドキュメントサイト
- MTSubCategories – テンプレートタグリファレンス | CMSプラットフォーム Movable Type ドキュメントサイト
コメントが承認されるまで時間がかかります。