カテゴリーを並べ替えるプラグイン(MTSubCategoriesタグ専用版)

2007年8月28日
Movable Type 4用のカテゴリー/フォルダの並べ替えプラグインを公開しました。
画面上でカテゴリー/フォルダを並べ替えることができ、使い勝手が大幅に上がっていますので、MT4の方はそちらのプラグインをお使いください。

当Blogでは、Movable Typeのカテゴリー並べ替えのプラグインとして、以下の2つをご提供しています。

これらに加えて、カテゴリー並べ替えのプラグインをさらにもう1つ作りました。

1.概要

今回ご紹介するプラグインは、MTSubCategoriesタグ(または、MTTopLevelCategoriesタグ)でカテゴリー一覧を出力する際にのみ、カテゴリーを好きな順番に並べ替えられるものです。
これまでの2つのプラグインと比べると、以下のメリットがあります。

  • カテゴリー名を書き換える必要がない
  • カテゴリー名を書き換えないので、出力ファイルも変わらない
  • テンプレートの書き換え箇所も少ない(MTSubCategoriesタグ/MTTopLevelCategoriesタグを使っている箇所だけ書き換えればOK)

一方、MTSubCategories(MTTopLevelCategories)タグ以外の箇所では、カテゴリーの並べ替えが行われないというデメリットがあります。
例えば、カテゴリーアーカイブページに「前のカテゴリー」「次のカテゴリー」へのリンクを出力するようにしている場合、その前後のカテゴリーは、従来どおり文字コード順で並べ替えられたものになります。

2.ダウンロード

プラグインは以下からダウンロードします。

SortCategories_1_00.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

ダウンロードしたら、ファイルを解凍します。
ただし、今の時点ではまだアップロードしません。

3.並べ替え方法の設定

解凍したファイルの中に、「lib/SortCategories.pm」というファイルがあります。
このファイルの先頭の方に、以下のような部分があります。

my %sort_order = (
);

個々のカテゴリーについて、「'カテゴリー名' => '連番',」の形式で並べ替えの順序を記述し、それを上述の行の間に入れます。
連番の桁数は統一する必要があります。

例えば、「東京」「大阪」「名古屋」の3つのカテゴリーがあって、この通りの順番で並べ替えたい場合だと、以下のように書きます。
なお、この例のように、後でカテゴリーを追加することを考慮して、連番は飛び飛びの値にしておくことをお勧めします。

my %sort_order = (
  '東京' => '010',
  '大阪' => '020',
  '名古屋' => '030',
);

サブカテゴリーがある場合は、カテゴリーの階層ごとに連番を振るようにします。
例えば、以下のようにカテゴリーを作っているとします。

  • 東京
    • 新宿
    • 渋谷
    • 池袋
  • 大阪
    • 梅田
    • 難波
    • 天王寺

そして、上の順序の通りにカテゴリーを並べたいとします。
この場合だと、各階層に3桁ずつの連番を振って、以下のようにすると良いでしょう。

my %sort_order = (
  '東京' => '010000',
    '新宿' => '010010',
    '渋谷' => '010020',
    '池袋' => '010030',
  '大阪' => '020000',
    '梅田' => '020010',
    '難波' => '020020',
    '天王寺' => '020030',
);

なお、インデックステンプレートを1つ作り、以下をコピーして貼り付けて再構築すると、「'カテゴリー' => '000',」の形式のリストを出力することができます。
出力されたファイルをコピーし、連番部分を書き換えて、SortCategories.pmファイルに入れると良いでしょう。

<MTSubCategories>
  <MTParentCategories exclude_current="1">  </MTParentCategories>'<MTCategoryLabel encode_php="q">' => '000',
<MTSubCatsRecurse></MTSubCategories>

3.ファイルのアップロード

SortCategories.pmファイルの書き換えが終わったら、解凍したときにできた「SortCategories」フォルダを、Movable Typeの「plugins」ディレクトリにアップロードします。
アップロードの際には、SortCategories.pmの文字コードを、Movable Typeの文字コードに合わせる必要があります。
ファイルの配置は以下のようにします。

  • [plugins]
    • [SortCategories]
      • SortCategories.pl
      • [lib]
        • SortCategories.pm

4.MTSubCategories(MTTopLevelCategories)タグの書き換え

最後に、テンプレートの中で、MTSubCategoriesタグ(またはMTTopLevelCategoriesタグ)に、「sort_method="SortCategories::MySort"」というアトリビュートを付加します。
この後に再構築を行うと、カテゴリーが並べ替えられて出力されます。