Under the Bridge

a Picture of the Late Him

MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)

2008年2月27日 23:48 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

今のMovable Type 4 では、カテゴリの並べ替えにはこれといったソートIDのようなフィールドが存在しない。私はこれにいつも頭を悩ませていた。先日はカスタムフィールドを用いハッシュを生成して並べ替えるようなサンプルを書いたような気がするが、あれ、準備がものすごく面倒なのだ。

このブログではカテゴリ名先頭文字へ010、020、030とかつけてプラグインを用いて3文字カットしてカテゴリ並べ替えを行っているが、無駄だし不具合のもと。

しかし「今のMovable Type 4 では、カテゴリの並べ替えにはこれといったソートIDのようなフィールドが存在しない」これは事実である。現在の限られた環境で、なるべく簡単に手間無く、並べ替えを行いたい。このエントリはそんなサンプルをテストしてみた。

MTCategoryDescriptionを工夫して用いる

MTCategoryDescriptionへ単に0020とか0030とかつけるだけではない。ディスクリプションの機能を失わないうえ、並べ替え、細やかな表示非表示を実現する、というサンプルだ。

まず以下のような一覧表を作成する。以下の一覧表はこのブログの場合での表。

G:全てのカテゴリ
a:仕事に関係するカテゴリ
b:Movable Type関連のカテゴリ
c:Movable Type4のみ関連のカテゴリ
d:その他雑記系のカテゴリ
e:くだらないことのカテゴリ

<0210G0000e>日記は一日一回チラシの裏。4年続いている
<0220G0000e>雑記はくだらないことを書く場所。くだらねえ
<0140G000d0>写真。ごくまれ
<0130G0000e>ブルース。犬井ヒロシ
<0060Ga00d0>仕事。たいてい酔ってるんで変なこと書く
<0040Ga0000>PC。ごくまれに
<0050G000d0>WEB。かなりてきとう
<0030G0b000>MT 3と4
<0020G0bc00>MT 4のサンプルや覚え書き
<0010G0bc00>MT 4.1の実験系
<0070G000de>AJAX。途中で飽きた
<0110G000d0>クルマ。それほど多くはない
<0120G000d0>音楽。思い出したときに。

これだが、8行目からがデータだ。カテゴリひとつに一行づつ、貼り込んでいく。このように先に一覧表を作ると、間違いが少ないと思う。

< >で囲まれたデータが、並べ替えと表示・非表示を切り替えるデータだ。

先頭0010など:並べ替えオーダー。0埋め4桁

Gabcde:Gはグローバル。全て表示。a~eまでは、ジャンル別に表示するものはaジャンルならa、表示しないなら0で埋める。

そのあとへ続けて概要を記入する。ここで気をつけるのは、Gabcdeの文字を含めた概要では駄目という事。

8~20行のデータを、カテゴリの概要へ一行ずつ貼って保存。実験準備完了。

コードは次で示すとおり。概要もremove_htmlモデファイアを使用すれば<0120G000d0>などというデータがカットされ、正常に使用できるというカラクリ。

サンプルソース

<!-- データ生成のコード -->

<MTCategories>
    <MTSetvarBlock name="catid"><MTCategoryDescription></MTSetvarBlock>

    <MTSetvarBlock name="catlinkset"><a href="<$MTCategoryArchiveLink$>"<MTIfNonEmpty tag="MTCategoryDescription"> title="<$MTCategoryDescription remove_html="1"$>"</MTIfNonEmpty>><$MTCategoryLabel$> (<$MTCategoryCount$>)</a></MTSetvarBlock>
    <MTSetvarBlock name="Filter"><MTCategoryDescription></MTSetvarBlock>


    <MTIf name="Filter" ne="">

       <!-- G(グローバル) -->
       <MTIf name="catid" like="G">
          <MTSethashVar name="catlistG">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

       <!-- a(タイプa) -->
       <MTIf name="catid" like="a">
          <MTSethashVar name="catlista">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

       <!-- b(タイプb) -->
       <MTIf name="catid" like="b">
          <MTSethashVar name="catlistb">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

       <!-- c(タイプc) -->
       <MTIf name="catid" like="c">
          <MTSethashVar name="catlistc">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

       <!-- d(タイプd) -->
       <MTIf name="catid" like="d">
          <MTSethashVar name="catlistd">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

       <!-- e(タイプe) -->
       <MTIf name="catid" like="e">
          <MTSethashVar name="catliste">
              <MTSetVar name="$catid" value="$catlinkset">
          </MTSethashVar>
       </MTIf>

    </MTIf>
</MTCategories>


<!-- リスト出力のコード -->

<h3>G:全てのカテゴリ</h3>
<mt:loop  name="catlistG" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<h3>a:仕事に関係するカテゴリ</h3>
<mt:loop  name="catlista" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<h3>b:Movable Type関連のカテゴリ</h3>
<mt:loop  name="catlistb" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<h3>c:Movable Type4のみ関連のカテゴリ</h3>
<mt:loop  name="catlistc" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<h3>d:その他雑記系のカテゴリ</h3>
<mt:loop  name="catlistd" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<h3>e:くだらないことのカテゴリ</h3>
<mt:loop  name="catliste" sort_by="key">
    <p><$mt:getvar name="__value__"$></p>
</mt:loop>

<!-- 概要が使用したいときもOK -->
<h3>カテゴリリスト+概要</h3>
<MTCategories>
   <p><MTCategoryLabel>:<MTCategoryDescription remove_html="1"></p>
</MTCategories>

貼ってみた

並べ替えとフィルタのデータをもう一度貼っておこう。その下へ結果が表示されるはずだ。

G:全てのカテゴリ
a:仕事に関係するカテゴリ
b:Movable Type関連のカテゴリ
c:Movable Type4のみ関連のカテゴリ
d:その他雑記系のカテゴリ
e:くだらないことのカテゴリ

<0210G0000e>日記は一日一回チラシの裏。4年続いている
<0220G0000e>雑記はくだらないことを書く場所。くだらねえ
<0140G000d0>写真。ごくまれ
<0130G0000e>ブルース。犬井ヒロシ
<0060Ga00d0>仕事。たいてい酔ってるんで変なこと書く
<0040Ga0000>PC。ごくまれに
<0050G000d0>WEB。かなりてきとう
<0030G0b000>MT 3と4
<0020G0bc00>MT 4のサンプルや覚え書き
<0010G0bc00>MT 4.1の実験系
<0070G000de>AJAX。途中で飽きた
<0110G000d0>クルマ。それほど多くはない
<0120G000d0>音楽。思い出したときに。

G:全てのカテゴリ

212MT4.1実験室 (22)

211Movable Type4 (141)

210Movable Type (32)

205PC (18)

206WEB (18)

110仕事 (11)

214Ajax (6)

230クルマ (10)

240音楽 (15)

024ブルース (3)

023写真 (3)

010日記 (697)

020雑記 (94)

a:仕事に関係するカテゴリ

205PC (18)

110仕事 (11)

b:Movable Type関連のカテゴリ

212MT4.1実験室 (22)

211Movable Type4 (141)

210Movable Type (32)

c:Movable Type4のみ関連のカテゴリ

212MT4.1実験室 (22)

211Movable Type4 (141)

d:その他雑記系のカテゴリ

206WEB (18)

110仕事 (11)

214Ajax (6)

230クルマ (10)

240音楽 (15)

023写真 (3)

e:くだらないことのカテゴリ

214Ajax (6)

024ブルース (3)

010日記 (697)

020雑記 (94)

カテゴリリスト+概要

010日記:日記は一日一回チラシの裏。4年続いている

020雑記:雑記はくだらないことを書く場所。くだらねえ

023写真:写真。ごくまれ

024ブルース:ブルース。犬井ヒロシ

110仕事:仕事。たいてい酔ってるんで変なこと書く

205PC:PC。ごくまれに

206WEB:WEB。かなりてきとう

210Movable Type:MTの 3と4

211Movable Type4:MT 4のサンプルや覚え書き

212MT4.1実験室:MT 4.1の実験系

213テンプレート:

214Ajax:AJAX。途中で飽きた

215プラグイン関係:

230クルマ:クルマ。それほど多くはない

240音楽:音楽。思い出したときに。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)