top

カテゴリーを好きな順番で並べる(2) 半角スペース編

久しぶりのMTカスタマイズネタです。

こちらでも書いた通り、MTはカテゴリーの順番を好きなように変えることができません。そのためカテゴリーを好きな順番で並べるためには、冒頭に数字をふったり、プラグインを使ってふった数字を消したりと、ややこしいカスタマイズが必要だったわけですが…

な、なんと、この度、数字もふらず、プラグインも使わず、サブカテゴリーで工夫することもなく、ましてや手打ちなんぞで苦労する必要もなく、本当にいとも簡単にカテゴリーを任意の順番で並べる方法を発見しました!! その方法とは!

名付けて半角スペース法!?

いや、ネーミングなんぞ、どうでもいい(^^;、カテゴリーの前に半角の空白を入れることによってカテゴリーの順番がコントロールできる!というものです。ネタ元はココログのブログサポート広場から。

みんなで解決!広場:ココログ 69.カテゴリーの並べ替えについて

ココログ=TypePad=Movable Type …ということは、この技、MTでも使えるかも!?

さっそく試してみました。現在はカテゴリーへのリンクは上部のナビゲーションとアーカイブ頁の2箇所に載せているのですが、上部ナビは手打ちで任意の順番になっているのに対し、アーカイブ頁は文字コード順のため、両者で並び順が統一されていないのが少し気になっていたので。結果はバッチリ反映されました!

例えば「レビュー・感想」の項目の場合。文字コード順だと、「アニメ」→「映画」→「本・雑誌」になってしまいます。さらに一番下にきてほしい「その他」が真ん中に来てしまうため、「本・雑誌」の子カテゴリーにして無理矢理一番下にしているという常態でした。そこで以下のようにカテゴリー名の前に半角空白を挿入。

    映画(半角スペース4つ)
   アニメ(半角スペース3つ)
  本・雑誌(半角スペース2つ)
 その他(半角スペース1つ)

 じゃなくて、本当に と何もない半角のスペースにするのがポイント。すると、「映画」→「アニメ」→「本・雑誌」→「その他」ときれいに並びます。しかも挿入した半角スペースは頁には表示されません。ご覧の通り↓

060326_1.gif → 060326_2.gif

管理画面でもきれいに好きな順番に並んで表示されます。どうしてこうなるのか分からないのですが、ともかく半角スペースが多いほど順番が先になるようです。

ところでこれ、ソースで見てみると、設定された半角スペースがそのまま出てますね。しかし連続した半角スペースは空白としては1つ分としか計算されないため、頁上ではよけいな半角スペースは消えて全部同じ位置から始まって表示されます。また、タグによってはタグ前後の半角スペースは空白とみなさないものもあるので、ソース上では

<li>     カテゴリーA</li>
<li>カテゴリーB</li>

となっていても、表示の上では

  • カテゴリーA
  • カテゴリーB

となるので、見た目には問題なく使えます。これは凄いッ!! カテゴリのタイトルなど、他の部分でも問題なく表示されているのを確認しました。これならプラグインも使わなくていいのでダイナミック・パブリッシングでも問題なく使えます。何よりシンプルで簡単なのがいいです。

<注意事項>
デフォルトの状態ではカテゴリー名に半角のスペースを与えるとファイル名上ではその部分が「 _ 」となったりして正しくファイル名が出力されません。(参考:既知の問題)。この問題を避けるためには以下のカスタマイズを行っておく必要があります(いずれも最も基本的な設定なので、半角スペース法の使用にかかわらず、カスタマイズされておいた方がよいと思われます)。

■3.2以前のバージョン
アーカイブマッピングでカテゴリーファイル名を<$MTCategoryDescription$>に変更しておくなどして、デフォルトのファイル名は使わないようにします。

■3.3以降のバージョン
3.3からはカテゴリーのファイル名を自分で好きなものに変更できるようになったので、カテゴリの編集画面で出力ファイル名を設定して、デフォルトのファイル名は使わないようにします。

<注意事項その2>
●<MTEntries category="category_name">で複数カテゴリを指定したい時
このアトリビュートで複数カテゴリを指定する場合は AND か OR を使いますが、半角スペースで区切りが判断されるため、カテゴリ名の前に半角スペースがあると正しく AND が判断されないようです。
単独指定なら半角スペースがあっても正常に機能しますので、指定したい複数カテゴリが親カテゴリーで束ねられている場合は、<MTEntries include_subcategories="1" category="親カテゴリ名">のように、親カテゴリ経由で表示させるのも手です。

<追記>
数字とグローバル属性を使った第3の方法も追加エントリーしましたので、好みに応じてどうぞ。
カテゴリーを好きな順番で並べる(3) デコード&タグ編

(2006.9.28追記・修正)
(2007.5.12追記)
(2007.5.15 3つ目の方法へのリンクを追加)