Header Menu

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

前のエントリー同様ネタ的には今さらですが、これも聞かれたついでのエントリー。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

Add to Bookmarks
  • Hatenaブックマークに追加
  • del.icio.usに追加
  • POOKMARK Airlinesへ追加
  • livedoorクリップへ追加
  • ニフティクリップへ追加
  • Buzzurlにブックマーク
  • newsingへ投稿
  • Choixへ追加
  • Furlへ追加
  • Blinklistへ追加
  • Redditへ追加
Advertisement

comment & trackback

TRACKBACK URL : http://hyper-text.org/cms/mt-tb.cgi/467

trackback to this entry

... 0 trackback

comments

tinybeans, July 31, 2008 - 15:20.

こんにちは。とても参考になりました。
というのも、今まで remove_html で並び替えしていたのですが、この記事を読んで、管理画面のカテゴリ一覧表示部分も数字が消えていることに初めて気が付きました!アホです。
今後は、regex_replace を利用してみます。なんとなく管理画面の表示をスッキリさせたいので、
"/[0-9]+_/",""
でいってみます。

post your comment

comment form

* All Fields Required.

RSS Feed
  • Add to Google Reader
  • Add to My Yahoo
  • Add to netvibes
  • Subscribe in NewsGator Online
  • Subscribe in livedoor Reader
  • Subscribe in Hatena RSS Reader
  • Subscribe in Bloglines
  • Feed Count by FeedBurner