読者です 読者をやめる 読者になる 読者になる

パンプキンスパイスラテ

IT系のことが多めの日記帳です

テンプレート内でカテゴリ一覧をID順に並び替える

MTのカテゴリ一覧を取得するタグは、通常アルファベット順で表示されます。
これをID順(作成順?)に並び替えたいなぁと思ったのですが、プラグインを入れずにテンプレートタグのみで実装できました。
参考:http://www.mtde.info/0760samplecfld/samplecfld_010.php

<ul>
<MTCategories>
    <MTSetvarBlock name="catid"><$MTCategoryID zero_pad="10"$></MTSetvarBlock>
    <MTSetvarBlock name="catlinkset"><a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$><$MTCategoryCount$></a></MTSetvarBlock>
    <MTSethashVar name="catlist">
        <MTSetVar name="$catid" value="$catlinkset">
    </MTSethashVar>
</MTCategories>
<MTLoop  name="catlist" sort_by="key">
<li><MTGetvar name="__value__"></li>
</MTLoop>
</ul>

3.カテゴリリストのコードを書き換える

以下のように書いたコードで生成するリストは、カスタムフィールドにて与えたインデックスどおりの並び順となります。

catid変数へ与えられる値が、カスタムフィールドにて与えたゼロ埋めのインデックスです。MTLoopではsort_by="key"モデファイアでは数値順ではなく文字列順に並べ替えがされますのでゼロ埋めは必須です。

catlinkset変数へは、カテゴリのリンク、名前などをhtmlタグなどとあわせて一式(セット)で与えています。これをハッシュの値とします。

http://www.mtde.info/0760samplecfld/samplecfld_010.php

参考にしたサイトでは、というカスタムフィールドを作って、そこに番号を入れて並び替えているようですが、その部分を、<$MTCategoryID zero_pad="10"$>とゼロ埋めのIDに差し替えてます。
テンプレートタグも工夫することで、いろいろ便利なんだなぁ、と実感。

これからはじめる MovableTypeの本 <MovableType4.2対応版> (自分で選べるパソコン到達点)

これからはじめる MovableTypeの本 (自分で選べるパソコン到達点)