WWW Watch

MT でカテゴリーの並び替え

MTでカテゴリーの数がそれほど多くない場合とか、頻繁に順番を入れ替えたりしないなら、Movable Type のグローバルモディファイア、「remove_html」 や 「regex_replace」 で簡単に並び替えができますよというお話。

前のエントリー同様ネタ的には今さらですが、これも聞かれたついでのエントリー。Movable Type でカテゴリーの並びを任意の順番にしたい場合、プラグインを使用するのが普通だと思いますが、カテゴリーの数がそれほど多くない場合とか、頻繁に順番を入れ替えたりしないなら、MT のグローバルモディファイア、「remove_html」 や 「regex_replace」 で簡単にできますよというお話。

remove_html モディファイアを使う場合

remove_html モディファイアはテンプレートタグの値に含まれる HTML タグを除去してくれるモディファイアですが、このモディファイアが持つ 「厳密に HTML タグでなくても除去してくれちゃう」 という仕様を並び替えに利用することができます。

厳密に HTML タグでなくても除去してくれるというのは、remove_html モディファイアは 「<」 と 「>」 に囲まれた文字列があると、それを HTML タグとみなして問答無用で除去してくれるということ。

で、カテゴリーの並び順はカテゴリー名による昇順が基本なので、単純な話カテゴリー名の頭に数字が入っていれば、番号の小さい順に上から並びます。ここまでくればやることは簡単。カテゴリー名の頭などに、<01> とかつけた上で、

<$MTCategoryLabel remove_html="1"$>

とテンプレートソースを変更すればいいわけです。ただ、encode_html (encode_xml もか) モディファイアと一緒に指定する場合は指定の順番に注意しましょう。先に encode_html を指定すると除去する前に HTML エンコードされて普通に番号部分も表示されちゃいます。

regex_replace モディファイアを使う場合

remove_html モディファイアを使った場合、難点が1つあって、それは MT の管理画面上の表示の問題。管理画面のカテゴリー一覧表示部分も remove_html が有効になっているようで付けた番号部分が消えてしまいます。一覧に表示されないだけで各カテゴリーの編集画面に入れば問題なく付いてるんですが、それがわかりにくいという場合は regex_replace モディファイアを使う方法もあります。

regex_replace モディファイアは正規表現にてテンプレートタグの値を置換できるモディファイアですが、先ほどの番号の付け方を

<01> → (01)

のように変えて、テンプレートソースは下記のように変更します。

<$MTCategoryLabel regex_replace="/\(.*\)/",""$>

これなら管理画面上でも番号が見られるしわかりやすいですね。regex_replace モディファイアは MT3 系では使えませんけど。

とはいえ、カテゴリーの数がとっても多いとか、頻繁にカテゴリーが追加、削除されたり、その都度並び順を変えたいなんてときは最初からプラグインを使った方がいろいろできて便利。

MT4 で使えるプラグインなら下記のプラグインがいいんじゃないでしょうか。カテゴリーだけじゃなくフォルダの並び順も変更できますし。

カテゴリーとフォルダを並べ替えるプラグイン(MT4以降用) : The blog of H.Fujimoto

Recent Entry

全ての記事一覧を見る

Hot Entry

逆引きおすすめエントリー