MT のカテゴリー並べ替え


Movable Type でカテゴリーの一覧を表示するときに、テンプレートタグに MTCategories タグを使うわけだが、表示される順番を変えたい場合が結構ある。 通常、順番はカテゴリー名を参照...

Posted by  on

MT のカテゴリー並べ替え

Movable Type でカテゴリーの一覧を表示するときに、テンプレートタグに MTCategories タグを使うわけだが、表示される順番を変えたい場合が結構ある。

通常、順番はカテゴリー名を参照して表示されるが、その順番を変えたいことは良くある。

ちなみに、このブログは裏側でカテゴリー管理はしているけど表示はしていない。他での話。自分用の覚え書き。

順番を任意に変えたい

順番を任意に設定したいという要望は、僕以外にも結構あるようで、探せばいろんな方法が見つかる。

プラグインで並べ替えたり、カテゴリー名の頭にソート用の番号をつけて、表示するときに削除する方法。僕がよく使うのは後者なのだが、あまり手間をかけたくないし、プラグインも出来たら避けたいということで、次のような方法をとっている。

まず、カテゴリー名の頭に次のように番号を付けます。

<01>カテゴリー1
<02>カテゴリー2
<03>カテゴリー3
<04>カテゴリー4

そして、表示するときにカテゴリー名を表示するMTタグ MTCategoryLabel を表示するところをすべて、次のように変更する。

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

ただ、これだけ。
余計なプラグインなども不要なので便利。

remove_html="1" というのは、htmlソースを取り除くというモディファイアなのだが、数字を<>で挟むとHTMLソースと判断されて削除されるわけだ。


順番をソートする

今回、カテゴリーの順番を単純にソートして順番を逆にしたかった。上記のように番号を振っていってもいいのだが、任意に変えるにはテンプレートをいくつか修正しなきゃいけない。単純に逆にしたいだけなので、もっと簡単にやってしまいたかった。

MTSubCategories タグなどでは並べる順番を変えるモディファイアはあるのだが、なぜか MTCategories にはない。ただ、順番を逆にするだけなのだが。

そこで、いろいろ調べたけど、下記のような方法であれば、プラグインなどがなくても順番を逆にできそうだ。

<MTCategories>
    <MTSetvarBlock name="catid"><$MTCategoryID$></MTSetvarBlock>
    <MTSetvarBlock name="catlinkset">
    <a href="<$MTCategoryArchiveLink$>"><$mt:CategoryLabel$></a>
    <p><$mt:CategoryDescription$></p>
    </MTSetvarBlock>
    <MTSethashVar name="catlist">
        <MTSetVar name="$catid" value="$catlinkset">
    </MTSethashVar>
</MTCategories>

<MTLoop name="catlist" sort_by="key reverse">
<$mt:getvar name="__value__"$>
</MTLoop>

MTSetvarBlock で、カテゴリーのIDとカテゴリーを表示するHTMLを別々に読み込んで、MTLoop によって順番を reverse させて表示させるだけ。

これだけで出来ました。



Posted On
Last Updated On
  • Podcastで聴く
  • Google Podcasts
  • Listen to Stitcher