MTのカテゴリーの順番を並ベ替える (MT4i対応)

[2006.4.17] MT4i 2.1βxでは実装方法が異なります。MTのカテゴリーの順番を並ベ替える (MT4i2.1β対応)でご確認下さい。

MovableTypeではカテゴリーの表示順がASCII配列順に自動でソートされるため、場合によっては“その他”なんてのが上の方に来たりしてかっこ悪いことになります。
出来れば任意の順で表示したいところです。
同じように考えている方もたくさんいるわけで、そのための知恵もあります。

以下が参考になります。
カテゴリーソートにも使える文字列置換プラグイン:pmLabo.
The Desert Sea: カテゴリーの順番を変えるプラグイン

上記だけ見ていただければすぐ実装出来ますが、一応ここでも簡単に説明しておきます。

まず、カテゴリー名の頭に数字を入れます。
例えば当ブログの場合は

0100)日記

というような設定にしています。
頭の数字順にソートされますので、
順番に 0200、0300と付けていけば、その順に表示されます。

このままでは、カテゴリー名に「0100)日記」と表示されていまいますので、そこで上のpmHeadChangerというプラグインが登場します。
これを入れるとカテゴリー名冒頭の数字+「)」を消したり、別の文字に書き換えたり出来ます。

各テンプレートの
<$MTCategoryLabel$> や <$MTArchiveTitle$> に

<$MTCategoryLabel pmhc=""$>

のように pmhc="" と引数を与えてあげるだけです。
これだけです。簡単簡単。

で、今回の本題は、これをMT携帯電話向け変換プログラムMT4iに対応させるお話です。
上記プラグインではMT4iから閲覧した時には数字がモロに出てしまうのですが、これを削除します。
Googleで検索してもそういう記述が見つからなかったのでここに書いておきます。

ズバリ改造するためコードを書きます。

今現在配布されているMT4i/2.0を元に説明します。([2006.4.17] MT4i 2.1βxでは実装方法が異なります。MTのカテゴリーの順番を並ベ替える (MT4i2.1β対応)でご確認下さい。)
mt4i.cgiに、以下の二行を追加するだけです。

465行目あたり、サブルーチンmain内の以下の場所に、以下の赤字になっている一行を足します。

  for my $cat_data (@cat_datas) {
  my @cd_tmp = split(",", $cat_data);
  
   $cd_tmp[1] =~ s/^\d+\)//;#←この行を追加
  if ($cat == $cd_tmp[0]){
   $data .= "

3090行目あたり、サブルーチンcheck_category内の以下の場所に、以下の赤字になっている一行を足します。

     if ($cfg{CatDescReplace} eq "yes"){
      $cat_label = &conv_euc_z2h($category->description);
     }else{
      $cat_label = &conv_euc_z2h($category->label);
     }
    }
   }
  }
 }
  $cat_label =~ s/^\d+\)//;#←この行を追加
 return $cat_label;

これで、MT4iからもカテゴリーが任意の順番で表示されかつ数字が出ない状態になります。

なお、ここに書かれている内容について意味が分からないという方は改造はされない方がいいと思います。
二行追加するだけですのでテンプレートいじるより簡単ですが、こちらは実際のCGIを直接書き換えますので十分な注意が必要です。