top

カテゴリーを好きな順番で並べる

MTではカテゴリーの順番は文字コード順に並んでしまうので、自分の好きな順番で並べることができません。例えばこのブログの場合だと、何も工夫しないままだと一番下に配置したい「moblog」がトップに来てしまいます。そこでよく使われる手法が、カテゴリー名の先頭に半角の数字をふって、順番をコントロールする方法です。例えば、

0010雑誌
0020アニメ
0030日常メモ
0040ネットメモ
0050moblog

とすれば、漢字の「雑誌」がトップに来て、「moblog」を最後にすることが出来ます。しかしそのままでは先頭の数字が見えてかっこよくないので、一工夫して数字を消します。消す方法は2通りあります。

1.<$MTCategoryDescription$>(カテゴリーの説明用のタグ)を使う。
カテゴリーの説明のところに数字抜きのカテゴリ名を指定し、テンプレート内の<$MTCategoryLabel$>を<$MTCategoryDescription$>に置き換えます。これでブログに表示されるカテゴリー名は数字なしのスッキリネームになります。

2.プラグインを利用する。
上の方法だと<$MTCategoryDescription$>が本来のカテゴリーの説明用に使えなくなるのでそれは困る、という人もいます。そういう場合は「先頭から○文字をカットするプラグイン」を使って表示カテゴリー名から数字部分を取ることができます。The blog of H.Fujimotoさんのところで配布されてます。必要なプラグインは2つあります。

A) 静的生成用プラグイン
こちらの頁からプラグインの内容をコピペして「cutfirstchar.pl」という名前で保存します。それをMTのインストールされている「plugins」ディレクトリ内にアップロードします。

B) ダイナミックパブリッシング用プラグイン
こちらの頁からプラグインの内容をコピペして「modifier.cutfirstchar.php」という名前で保存します。それをMTのインストールされている「php」ディレクトリ内にある「plugins」フォルダ内にアップロードします。

*ダイナミックパブリッシングをしている場合でも全ての頁をダイナミック化していない場合、どちらのプラグインも必要になります。トップが静的生成でアーカイブがダイナミックの場合は、トップ頁にはcutfirstchar.plが適用、アーカイブ頁にはmodifier.cutfirstchar.phpが適用される必要があります。

アップが終ったら、カテゴリータグの中に以下の属性を入れます。数字で先頭から何番目までをカットするのかコントロールします。

<$MTCategoryLabel cutfirstchar="4"$>

カテゴリーに限らず、いろいろなところで応用出来そうです。以上、正攻法でした。

- - - - - - - - - - - - - - - - - - - -

し・か・し!
どちらの方法も(自分にとっては)根本的な問題が!!

管理画面のカテゴリーを選ぶプルダウンの中では「数字付きのまま」で表示されてしまうんですよな...。実は私はコレが一番イヤンなのであります。お客様には数字抜きの美しい姿を見せているのに、何ゆえ管理人の私が数字付きの裏方姿で我慢しなきゃいかんのですか~。第一、名前の前にズラズラ数字が並んでたら、直感的にカテゴリーが分かりにくくて使いにくいじゃないですか。
それにこちらでも指摘されている通り、<$MTCategoryLabel$>が使われているありとあらゆる所に数字が現れてしまうので(カテゴリ頁のタイトルとかRSSフィードとか、ソースの中の<$MTEntryTrackbackData$>で表示されるsubject部分とか)それらを全部探し出して書き換えてやらねばならないので面倒くさいという問題も。いや、そこまで気にならないよというのならいいんですが、過去に数字ふっていた時、RSS画面に数字がババンと出ちゃってるのに気が付いた時けっこう衝撃大きかったもので(うわ、こんなの晒してたのか~、みたいな)。
なので、現在私はどちらの方法も使っていません。

ではどうすればいいのか?? 数字もふらず、プラグインも使わず、カテゴリーを任意の順番で並ばせる方法があるのか?
ないことはないです。以下に私の使っている方法を述べておきます。

■サブカテゴリーを上手く利用する
サブカテゴリーを使うと、カテゴリーをグループ毎に束ねることが出来ます。この場合は、「覚え書き」という親カテゴリーを作り、ネットメモ・日常メモ・moblogをその下に入れます。親カテゴリーのネーミングを工夫して、「覚え書き」が一番下に来るようにします。そのままでは覚え書きの中でmoblogがトップに来てしまいますから、更にmoblogを日常メモの子カテゴリーにします。文字コード順ならネットが先に来るので、

 ネットメモ
 日常メモ
  moblog

ということになり、結果としてmoblogが一番下に来ます。グループ内での並び順は気にならないことが多いので、100%とまではいかなくても、ほぼ希望通りの並び順になります。

■HTML手打ち!
以下のようにテンプレートに直接カテゴリーアーカイブへのリンクを記述する(アーカイブ頁のURLは各自で確認のこと)。

<a href="<$MTBlogURL$>book.html">雑誌</a>
<a href="<$MTBlogURL$>animation.html">アニメ</a>
<a href="<$MTBlogURL$>memo.html">日常メモ</a>
<a href="<$MTBlogURL$>net.html">ネットメモ</a>
<a href="<$MTBlogURL$>moblog.html">moblog</a>

これこそが「究極のカテゴリーの並び順を100%思い通りにする方法」だっ!!(笑)
何もMTだからといって必ずMTタグを使わなきゃいけない!て決まりはありますまい。ホームページならこれが普通です。それはもう思いのままです~。ナニ、カテゴリーを変更した時、手動でいちいち書き換えるのが面倒? そんなもの、モジュール化しておけば手間は1回で済みます。ダイナミックパブリッシングならモジュールを1回書き換えて保存するだけで瞬時に全頁に変更が行き渡りますですよ。再構築もしなくていいですから。それにカテゴリーの変更ってそんなに頻繁に行うものでしょうか? 1回決めたら2度と変わらない、って人も多いのでは。実はもう1つのブログはこの方法でやっちゃってます。

☆もちろん、数字が気にならない方は上の正攻法でやってみて下さいね。
発想は柔軟にってことで。

<2006.3.26追記>
数字もふらず、プラグインも使わず、もっと簡単にカテゴリーを好きな順番で並び替える方法を発見しました!
詳しくはこちらをご覧下さい。

 

コメント

こんにちは

カテゴリー絡みとはいえ、
本エントリーとは反れた内容になりますが、1点質問させてください。

http://wing.w-museum.com/mtcustom/
↑のページの造りですが、MTArchiveListなどを使っているのでしょうか。
このカテゴリー順(ダイナミックTipsや頁分割等)を新着エントリーがある順にソートすることが可能か、を伺いたいですのですが。。。
お時間のあるときにでも教えてください。

よろしくお願いします。

こんにちは。
カスタマイズカテゴリの頁はごく簡単な作りになってまして、<MTEntries category="カテゴリ名">でズラズラ並べてるだけなんですよ。参考にできるような頁じゃなくて申し訳ないです。

カテゴリを新着エントリ順でソートできるプラグインがあったはず…と思ったら、もう訪問されてましたね。
http://www.antimon2.atnifty.com/2006/11/catsort.html

カテゴリを階層化しなくてもいいなら、ハッシュとMTLoopで新着エントリ順にソートすることは出来ると思います。ただ、階層化した上で、あんちもん2.Labさんで質問されていることを満たすとなると私の手には負えないかもしれません…。すみません。
以下の記事が参考になるかもしれません。
http://www.zelazny.mydns.jp/archives/000950.php

いえいえ、ものすごい参考にしてますよw
「カテゴリーのソート」はけっこうネックというか未だにけっこう肝になってるんですね。
実は今日一日探してまして、困ってこちらにきてしまいました、すみません。。。
レイアウトとしてはインデックスなどでカテゴリーごとにエントリー新着順で表示されるのは視認性もよくていいなと思ったんですが、まぁ仕方ないです。
ご提示いただいたページ、参考にします。
ご丁寧にありがとうございました。

参考になるでしょうか、場所によってはけっこう原始的な方法で処理してるところもありますので(^^;。

「見せ方」にはいろいろなパターン・タイプがありますよね。
インデックスに新着のあるカテゴリとして表示するならやり方も多数考えられると思います。
いろいろ工夫してみて下さいね。