みなさん、Movable Type でカテゴリーの一覧を出力するのに、「ソートができない」って悩んでいませんか?
意外と知られていないかも知れませんが、実は、ある条件を満たせば、自由にカテゴリーのソートができるんです。
その条件とは、以下の2つ。
- カテゴリーの出力に、<MTTopLevelCategories>もしくは<MTSubCategories>を利用する
- その sort_method 属性に、目的にあったソートメソッド(Perlで記述されたソートルール関数もしくはブロック)を指定する
この、後者の「ソートメソッド」を提供するもの、それが、今回お届けするオリジナルプラグイン「カテゴリーソートプラグイン」です。
MTシステムにインストールするだけで、誰でも自由にカテゴリーのソートができるようになります!
※【2007/02/13 ドネーションに関する追記】
ダウンロード
(どちらかを選択してください。内容は同じです。)
ver.0.42 [New!]
- CatSort.zip[4,221 Bytes]
- CatSort.tar.gz[1,750 Bytes]
古いバージョン
※ver.0.2?0.41 の日本語ローカライズは、MT3.3以降のみの対応でした。MT3.2xに ver.0.2?0.41 をインストールすると、プラグインの一覧表示時にエラーが発生します。MT3.2xをご使用の方は、ver.0.42にアップデートをお願いします。MT3.3xでver.0.41をご使用の方は、特に0.42へのアップデートの必要はありません。
※ver.0.4 に「非公開のエントリーもカウントしてしまう」(<$MTCategoryCount$>と動作が異なる)というご指摘をいただきました。公開状態のエントリーのみをカウントするものをver.0.41として改めて公開し、ver.0.4は現在非公開とさせていただいています。
※ver.0.3 以前には、by_recently_entry_posted および by_recently_entry_modified の2つのメソッドにおいてソートする項目が多くなると再構築時間が極端に遅くなる問題があります。
できる限り最新版を使用することをオススメします。
- ver.0.1
- CatSort_0_1.zip[1,638 Bytes]
- CatSort_0_1.tar.gz[722 Bytes]
- ver.0.2
- CatSort_0_2.zip[3,884 Bytes]
- CatSort_0_2.tar.gz[1,463 Bytes]
- ver.0.3
- CatSort_0_3.zip[3,968 Bytes]
- CatSort_0_3.tar.gz[1,553 Bytes]
- ver.0.41
- CatSort_0_41.zip[4,147 Bytes]
- CatSort_0_41.tar.gz[1,737 Bytes]
インストール
- ダウンロードしたファイルを解凍してください。
解凍ソフトに「ディレクトリ構造を**」というオプションがある場合は、「ディレクトリ構造を有効(再現、等)」にして解凍すると、以下のようなディレクトリ構造が生成されます:
CatSort ┣CatSort.pl ┗lib ┣CatSort.pm ┗CatSort ┣L10N.pm ┗L10N ┣en_us.pm ┗ja.pm
- 解凍して得られた CatSort フォルダごと、[MT]/plugins/ フォルダ内にコピー(アップロード)してください。
旧バージョンからのアップデート
最新バージョンにアップデートする場合は、全てのファイルをフォルダごと上書きコピー(アップロード)すればOKです。
(以前のバージョンへダウンデートする場合も同様……その必要はないはずですけれど。)
提供するソートメソッド
- CatSort::by_label
- カテゴリー名(ラベル)の昇順にソートするメソッド
(通常のカテゴリー一覧出力と同じソートになります) - CatSort::by_label_r
- カテゴリー名(ラベル)の降順にソートするメソッド
CatSort::by_labelの逆順になります - CatSort::by_label_i
- カテゴリー名(ラベル)の昇順にソートするメソッド
CatSort::by_labelとの違いは、半角アルファベットの大文字小文字を区別しません - CatSort::by_label_i_r
- カテゴリー名(ラベル)の降順にソートするメソッド
CatSort::by_label_iの逆順になります - CatSort::by_id
- カテゴリーIDの昇順にソートするメソッド
カテゴリーIDは作成された順に一意に割り振られる数値なので、「カテゴリー作成順」にソートしたい場合に使えます - CatSort::by_id_r
- カテゴリーIDの降順にソートするメソッド
CatSort::by_idの逆順になります - CatSort::by_basename
- ※ Movable Type 3.3x 以降のみ対応
カテゴリーベース名(ディレクトリ名)の昇順にソートするメソッド - CatSort::by_basename_r
- ※ Movable Type 3.3x 以降のみ対応
カテゴリーベース名(ディレクトリ名)の降順にソートするメソッド
CatSort::by_basenameの逆順になります - CatSort::by_basename_i
- ※ Movable Type 3.3x 以降のみ対応
カテゴリーベース名(ディレクトリ名)の昇順にソートするメソッド
CatSort::by_basenameとの違いは、半角アルファベットの大文字小文字を区別しません - CatSort::by_basename_i_r
- ※ Movable Type 3.3x 以降のみ対応
カテゴリーベース名(ディレクトリ名)の降順にソートするメソッド
CatSort::by_basename_iの逆順になります - CatSort::by_recently_entry_posted
- [ver.0.4 で修正]
最近エントリーが投稿されたカテゴリーが先に表示されます。
エントリーのないカテゴリーは最後に表示されます。 - CatSort::by_recently_entry_modified
- [ver.0.4 で修正]
最近エントリーが編集されたカテゴリーが先に表示されます。
エントリーのないカテゴリーは最後に表示されます。 - CatSort::by_description
- [ver.0.3 で追加]
カテゴリーの「説明」の昇順にソートするメソッド
カテゴリーの説明とは、<$MTCategoryDescription$>で表示される内容のことです。 - CatSort::by_description_r
- [ver.0.3 で追加]
カテゴリーの「説明」の降順にソートするメソッド
CatSort::by_descriptionの逆順になります - CatSort::by_description_i
- [ver.0.3 で追加]
カテゴリーの「説明」の昇順にソートするメソッド
CatSort::by_descriptionとの違いは、半角アルファベットの大文字小文字を区別しません - CatSort::by_description_i_r
- [ver.0.3 で追加]
カテゴリーの「説明」の降順にソートするメソッド
CatSort::by_description_iの逆順になります - CatSort::by_entry_count
- [ver.0.4 で追加]
カテゴリーに属するエントリー数の多い順に表示されます。 - CatSort::by_entry_count_r
- [ver.0.4 で追加]
カテゴリーに属するエントリー数の少ない順に表示されます。
ただし、エントリーのないカテゴリーは最後に表示されます。
使い方
<MTTopLevelCategories>もしくは>MTSubCategories>の sort_method 属性に、上述のソートメソッドの中から目的にあったものを指定します。
例:カテゴリー名の降順(半角アルファベットの大文字小文字区別無し)
<MTTopLevelCategories sort_method="CatSort::by_label_i_r">
<MTSubCatIsFirst><ul></MTSubCatIsFirst>
<li><MTCategoryLabel></li>
<MTSubCatIsLast></ul></MTSubCatIsLast>
</MTTopLevelCategories>
使い方:目的別解説
- 最近投稿した(or 編集した)エントリーの属するカテゴリーが上位に浮上するようにしたい
- →CatSort::by_recently_entry_XXXXedを使ってみましょう!
- エントリー数で並べ替えたいのですが……
- →CatSort::by_entry_countがあります!
- とにかく自分の希望通りの(任意の)順序に並べ替えたい!
- →CatSort::by_descriptionで実現できます!
更新履歴
- 2006/11/18
- ver.0.1 [初公開]
- 基本的なメソッドを提供
- 2006/11/24
- ver.0.2
- 2つのメソッド by_recently_entry_posted, by_recently_entry_modified を追加
無駄に日本語ローカライズ
- 2006/11/29
- ver.0.3
- 4つのメソッド by_description, by_description_r, by_description_i, by_description_i_r を追加
- 2006/12/21
- ver.0.4
- 2つのメソッド by_entry_count, by_entry_count_r を追加
- by_recently_entry_posted, by_recently_entry_modified のパフォーマンスを改善
- 2006/12/22
- ver.0.41
- by_entry_count, by_entry_count_r で「非公開のエントリー」をカウントしないように修正
- 2006/12/22
- ver.0.42 [Up!]
- MT3.2x で使用する際、プラグイン一覧表示時にエラーが発生する不具合に対応。
MT3.2x ではプラグイン一覧表示で説明等が英語表記になります。MT3.3x ではローカライズ表示されます。
- MT3.2x で使用する際、プラグイン一覧表示時にエラーが発生する不具合に対応。
免責事項
Movable Type のユーザーは目的を問わず、このプラグインを無償で自由に利用することができます。著作権は Antimon2 が保持します。
このプラグインは無保証です。このプラグインの利用によるいかなる損害にも作者は一切の責任を負いません。
はじめまして。
とてもよく便利なので利用させていただいています。
希望なのですが、カテゴリー毎のエントリー数でソートする機能も付けていただけないでしょうか。
よろしくお願いします!
> tokioさん
お問い合わせありがとうございます(^-^)
カテゴリーごとのエントリー数ですね、なるほど。
by_recently_entry_***ed メソッドのロジックを少し変更すれば実現可能なので、やってみます。
要望ありがとうございます。
はじめまして。
有益なプラグイン、参考にさせていただいております。
カテゴリーソートの件で質問があります。
> CatSort::by_recently_entry_modified
> 最近エントリーが編集されたカテゴリーが先に表示されます。
> エントリーのないカテゴリーは最後に表示されます。
↑の状態を実現したく試しました。
親カテゴリーにはエントリーなしで、
↑のサブカテゴリーにエントリーしたところ、
ソートされまれず、最後に表示されてしまいます。
当然といえば当然ですが、親にないので、エントリーなしと判断して、最後尾にくるようです。
できれば、親が0でも、子にエントリーされたら、その親も子もひとくくりで最新として最上部に表示させたいのですが、可能でしょうか。
わかりづらい点がございましたら、質問ください。