MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
今の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:全てのカテゴリ
a:仕事に関係するカテゴリ
b:Movable Type関連のカテゴリ
c:Movable Type4のみ関連のカテゴリ
d:その他雑記系のカテゴリ
e:くだらないことのカテゴリ
カテゴリリスト+概要
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音楽:音楽。思い出したときに。
- カテゴリ:212MT4.1実験室
トラックバック(0)
このブログ記事を参照しているブログ一覧: MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4のテンプレートタグとプラグインでサインカーブを描く
- MT4.1:クマーを色々(MTSetvarTemplate)
- MT4分科会第2回勉強会に参加しました
- MTOS4.2RC1:各ページの拡張子を得る
- MTでAA
- MT4:MTの変数演算をプラグインで拡張
- MT4.1:「MT」という文字をテーブルの背景色で表現
- 「NabeAzzテンプレート問題・パート2」へ乗ってみる
- 作りたいプラグインの覚え書き
- 世界のナベアツをプラグインで表現
- MT4:世界のナベアツをテンプレートタグで表現(2)
- MT4.1:プラグインを書いてみよう
- MT4.1:予約変数の実験
- Movable Type 4.15 テスト中(1)
- mtde.info の、反省点
- mtde.info の、できる経緯
- MT4:前のエントリ・次のエントリのリンクをカテゴリごとに(条件あり)
- MT4:世界のナベアツをテンプレートタグで表現
- MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
- MT4.1:変数参照専用のモジュールの可能性
- MT4:XHTML+CSS素材テンプレート化の不具合修正・要望リスト
- MT4.1:Movable Type 4.1用テンプレート作った
コメントする