top

カテゴリーを好きな順番で並べる(3) デコード&タグ編

このブログではカテゴリーの並び順は半角スペース法を使ってコントロールしていますが、<MTEntries>で複数カテゴリーを指定できないという弱点がありました。が、これまではそういう使い方をする必要がなかったため、この問題は気にせず放置していました(^^;。

しかしMultiBlogの絡みで<MTEntries>系のタグ内で複数カテゴリを使う必要性が出てきたため、MTタグを使ったトリッキーな方法に一部変更しました。これも半角スペース法同様、目からウロコ系のテクニックで、プラグイン無しで使えます。のでダイナミック派にもおすすめです。

ネタ元はオラオラさんの「NOプラグインでカテゴリーソート」から。

カスタマイズ方法
カテゴリー名の前に数字をふって順番をコントロールする、というのは他のやり方と同じですが、数字を&lt;&gt;で囲むのがミソ。<>ではなくて、&lt;&gt;なのがポイントです。

&lt;001&gt;MovableType
&lt;002&gt;REVUE
&lt;003&gt;MEMO

テンプレートの<$MTCategoryLabel$>に赤字のグローバル属性を追加します。

<$MTCategoryLabel decode_html="1" remove_html="1"$>

つまり、&lt;001&gt;をdecode_html="1"でいったん<001>に戻し、さらにremove_html="1"で<001>をHTMLタグとして除去しているわけです。結果、表示されるカテゴリ名からは&lt;001&gt;部分がきれいに消えて、表示したいカテゴリー名のみになるというわけです。

目的に応じた使いこなしを
今回の件では、差し当たり、親カテゴリーだけがcategory="カテゴリーA OR カテゴリーB"の対象になればよかったので、変更したのは親カテゴリのみで、子カテゴリは今まで通り半角スペース法のままでコントロールしています。
というのも、個人的にですが、管理画面でカテゴリ名の前に<001>など余計なものが付くのがどうしても嫌だーっという私の好みもありまして。自分にとって心地いいやり方を取り入れていけばいいと思います。

<追記>
MT4.25ではこの方法だとMTEntriesのcategoryモディファイアでエラーするもよう。MT4では正規表現が使えるので、以下の方法の方がおすすめのようです。
カテゴリーを好きな順番で並べる(5) regex_replace編