Movable Typeのカテゴリ並び替え・任意カテゴリの表示と非表示についてメモ

Movable Typeのカテゴリまわりの調整で久しぶりにはまりました。が突破。ちょっと手こずったのでメモ。

Movable Type(今回はVer.4.23)でカテゴリの順番を自由に並び替えるのに使用するプラグインはSortCatFld。 プラグインの導入・設定方法は割愛。SortCatFldを使用して任意の並び順にしたカテゴリの一覧を表示するには下のような感じ(であってるかな?)。sort_methodを指定する。カテゴリの最初と最後辺りを調整するのにMTSubCatIsFirstとMTSubCatIsLastを使用。これが正しいかは微妙なのだけど、他の方法でうまくいかない部分があったのでこれで。

<MTTopLevelCategories sort_method=”SortCatFld::Sort”>
<MTSubCatIsFirst>
<ul>
</MTSubCatIsFirst>
<li><a href=”<$MTCategoryArchiveLink$>”><$MTCategoryLabel$></a></li>
<MTSubCatIsLast>
</ul>
</MTSubCatIsLast>
</MTTopLevelCategories>

この一覧の中から任意のカテゴリだけをピックアップして表示したり非表示にしたりするプラグインはFilterCategories。導入・設定方法は特に難しくないので割愛。例えば「会社案内」カテゴリだけ非表示にしたい場合は(※注:下のソースだとうまく機能しません。更に下で後述します)

<MTTopLevelCategories sort_method=”SortCatFld::Sort”>
<MTFilterCategories exclude=”会社案内”>
<MTSubCatIsFirst>
<ul>
</MTSubCatIsFirst>
<li><a href=”<$MTCategoryArchiveLink$>”><$MTCategoryLabel$></a></li>
<MTSubCatIsLast>
</ul>
</MTSubCatIsLast>
</MTFilterCategories>
</MTTopLevelCategories>

と、MTFilterCategoriesタグのexclude属性で、非表示にするカテゴリを指定する。逆に表示したいカテゴリを指定するならinclude属性にする。カテゴリを複数指定したい場合は

<MTFilterCategories exclude=”cat1 | cat2 | cat3″>

という具合に|で区切って複数指定が可能。ここで勘違いしやすいのは、includeやexcludeで指定する値はCategoryLabelに相当する部分で、CategoryID(カテゴリーのID)やCategoryDescription(カテゴリーの説明)ではないということ。カテゴリによっては上のソースのように日本語で指定することになる。ちょっと変な感じがするかもしれないけどこれでうまくいのでちょっと変な感じ。

しかし上のソースではまった。色々なページのTipsを見ていると、「MTTopLevelCategoriesタグの直後にMTFilterCategoriesを入れる」と書いてたのでそのようにしたら、うまくカテゴリの表示と非表示が機能しない。

解決法としては

<MTTopLevelCategories sort_method=”SortCatFld::Sort”>
<MTSubCatIsFirst>
<ul>
</MTSubCatIsFirst>
<MTFilterCategories exclude=”会社案内”>
<li><a href=”<$MTCategoryArchiveLink$>”><$MTCategoryLabel$></a></li>
</MTFilterCategories>
<MTSubCatIsLast>
</ul>
</MTSubCatIsLast>
</MTTopLevelCategories>

上のように、MTFilterCategoriesの位置を調整するとうまくいった。各タグや属性の使い方が正しいかは別として、ひとまずこれで思い通りのカテゴリ順序と表示非表示が実現できました。こういう調整は結構出てきそうなので議事録としてメモしときます。おかしいソースやもっとこうしたら良いというのがありましたらコメント等でお知らせください。

後で気づいたんですが、この問題を解決した時間よりこのエントリー書いた時間の方がかかったかも。。

関連記事一覧

  • コメント ( 0 )

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。