MT4i 2.1β5でカテゴリーの並べ替えを行う

Movable Typeを携帯電話に対応させるツールとして、太鉄氏が作成したMT4iが多用されています。

当方のBlogでは、カテゴリーの並べ替えプラグインその改良版を紹介していますが、MT4iではこのプラグインは動作しないので、カテゴリー名につけた連番などがそのまま表示されてしまいます。
MT4i Ver.2.0でこの問題を解決する方法はすでに紹介していますが、現在βテスト中のMT4i Ver.2.1ではカテゴリー選択部分の出力方法が異なっているため、以前に紹介した方法では動作しません。

MT4i Ver2.1はβ5まで到達し、そろそろβが取れそうな感じになってきました。
そこで、MT4i Ver2.1β5を対象に、カテゴリー名から連番等をカットする方法を紹介します。
おそらく、βが取れても、今回紹介する方法でいけるのではないかと思います。

なお、当Blogでは前述したようにカテゴリーの並べ替えプラグインを2種類紹介していますが、それぞれでMT4iの書き換え方が異なりますので、両方とも解説します。

カテゴリー選択部分の修正

まず、mt4i.cgiの中で、カテゴリー選択を行う部分を修正します。

カテゴリー並べ替えプラグイン旧版をお使いの方は、以下の箇所で赤字の行を追加します。
なお、「substr $label, x」の「x」の部分には、カテゴリー名の先頭から切り取る文字数を指定します。

・3475行目付近

if ($cfg{CatDescReplace} eq "yes"){
    $label = &conv_euc_z2h($category->{column_values}->{description});
    $label = substr $label, x;
    # カテゴリ名ぶった切り
    if ($cfg{LenCutCat} > 0) {

・3485行目付近

if ($cfg{CatDescReplace} eq "yes"){
    $label = &conv_euc_z2h($category->{column_values}->{label});
    $label = substr $label, x;
    # カテゴリ名ぶった切り
    if ($cfg{LenCutCat} > 0) {

カテゴリー並べ替えプラグインの新版をお使いの方は、以下の箇所で赤字の行を追加します。
なお、区切りの文字として「|」以外を使っている方は、「quotemeta("|")」の部分の「|」を書き換えてください。

・3475行目付近

if ($cfg{CatDescReplace} eq "yes"){
    $label = &conv_euc_z2h($category->{column_values}->{description});
    my @label_tmp = split quotemeta("|"), $label;
    $label = $label_tmp[2];
    # カテゴリ名ぶった切り
    if ($cfg{LenCutCat} > 0) {

・3485行目付近

if ($cfg{CatDescReplace} eq "yes"){
    $label = &conv_euc_z2h($category->{column_values}->{label});
    my @label_tmp = split quotemeta("|"), $label;
    $label = $label_tmp[2];
    # カテゴリ名ぶった切り
    if ($cfg{LenCutCat} > 0) {

エントリーのタイトル部分の修正

個々のエントリーを表示する際に、エントリーのタイトルの後にカテゴリー名を付けて表示することもできます。
その設定をオンにする場合は、mt4i.cgiの820行目付近に、以下の赤字の行を追加してください。
なお、「x」および「|」については、前述の書き換えと同じようにします。

・旧版のプラグインをお使いの場合

if ($cfg{IndividualCatLabelDisp} eq 'yes') {
    my $cat_label = &check_category($entry);
    $cat_label = substr $cat_label, x;
    $data .= "[$cat_label]";
}

・新版のプラグインをお使いの場合

if ($cfg{IndividualCatLabelDisp} eq 'yes') {
    my $cat_label = &check_category($entry);
    my @cl_tmp = split quotemeta("|"), $cat_label;
    $cat_label = @cl_tmp[2];
    $data .= "[$cat_label]";
}