カテゴリー回りのカスタマイズ

mt_topnav-logoこのごろパソコンやウェブログのカスタマイズばかりしています。いいかげんエントリーを書かないといけないというか、リンク切れの修復を急がないといけないのですが、せっかく今までの「互換性」を気にしなくても良くなってしまったので、後から「ああしとけばよかった!」と思わないよう、この機会に設定は慎重にしておきたいと思います。

で、今回はカテゴリーページの設定です。

1)今まで並び順などの関係で手入力していたカテゴリーメニューを自動表示
2)トップページにはカテゴリー全体、個別カテゴリーページにはそのカテゴリー内のメニュー(サブカテゴリー)を表示する
3)トップから個別カテゴリーや個別エントリーまでのナビゲーションを、途中のサブカテゴリーを含めてリンク付で表示する
4)カテゴリーの名前を変えても、カテゴリーページのアドレスが変わらないようにする
5)カテゴリー分けの全面的な見直し

と、まあこんなことをしておりました。

これらはだいたいが検索すればやり方は見つかるものですが、中にはどうしても見つからなくて、自分で考えた方法もあります。わけがわかって採用した方法ではなくて、私の場合は「結果オーライ」の世界ですので、必ずしも最良とは限りません。また、大手の「無料ブログサービス」や、バージョン違いのMTで試してみる場合は特に(それ以外の場合も)必ずバックアップはとっておいてくださいね。なお、私のMTのバージョンは 3.17-ja です。

[Sponsor Ads]


1)カテゴリーメニューの自動表示

MTのカテゴリータグは、非常に融通のきかないタグでして、カテゴリーの並び順さえ自分では決められません。日本語版が出る前は、カテゴリー名に日本語すら通らないこともあったそうです。私はMTが作ってくれるカテゴリーメニューがどうしても気に入らなくて、自分の手打ちでサイトメニューを作っていました。

そこで一般的にはカテゴリー名の頭に英数字をつける。たとえば「100、200、300」などとして、そこに属するサブカテゴリーには「110、120、130」などとする方法がメジャーです。こうすると数字の順にカテゴリーが表示されますので、コントロールが容易です。そして実際に表示させるのは、この英数字がついた不細工なカテゴリー名ではなく、「カテゴリーの概要説明」欄に入力した文章を、「MTCategoryDescription」タグを使って表示するのです。

しかし私の場合は「カテゴリーの概要説明」にはちゃんと「カテゴリーの概要説明」を書いておきたいタイプの人でして、しかも「懐古的資料室」などを見てもらえばわかるとおり、MTCategoryDescription タグを使ってカテゴリーのタイトル画像まで表示している人ですから、この方法は使えなかった。

んでまあ、結局は<$MTArchiveTitle$><タグを使うことにして、トップレベルカテゴリだけに番号をふって並び順をコントロールし、サブカテゴリはMTのなすにまかせました。あとはCSSで<dt>や<dd><ul>なんかを定義してやります。私はHINAGATAさんのデフォルトのままで使用しました。決して不細工ではないでしょ?

トップページのカテゴリーリスト(サイトメニュー)表示タグ

2)カテゴリーの名前を変えてもアドレスが変わらないようにする

さて、この方法ですと、カテゴリーを追加(挿入)したり消したりして、頭の番号を変えたりすると、カテゴリーページのアドレスまで変わってしまいます。この設定のままですと、MTは「01」とか「02」とかいう名前のトップレベルカテゴリのフォルダを作り、その中に「cat1」とか「cat2」とかいう名前のサブカテゴリフォルダを作ります。ですから、カテゴリー名の頭の数字を変えてしまうと、カテゴリーページのアドレスも変わってしまうわけです。

これだと、よほどよく考えてカテゴリーや並び順を設定し、一度設定したらめったなことでは変えない覚悟が必要です。私はエントリーが増えたらどんどんカテゴリーも臨機応変に変えていきたい人なので、ずいぶんと悩みましたが、それもエントリーのアドレスを設定した方法と同様の方法で解決しました。

つまり、MTの管理画面→BLOGの設定→アーカイブの設定で、カテゴリー・アーカイブのファイル名の設定をしてやればよいのです。「アーカイブファイルのテンプレート」というところに、以下のように記述します。

category/cat_<$MTCategoryID$>.html

すると「archive」フォルダの中に「category」というフォルダができて、その中に階層構造のないカテゴリーページのHTML書類ができあがります。それぞれの名前は「cat_(固有のカテゴリーID).html」となります。
これでカテゴリーの名前を変えても、カテゴリーIDは不変ですのでアドレスは変わりません(実験して確認済み)。名前だけではなく、サブカテゴリーからトップカテゴリーに変更したり、別のカテゴリーのサブに移動しても、階層構造がありませんからまったくアドレスは変わりません。実験で確認した時は「ブラボー!」と叫んでしまいました。

3)途中のサブカテゴリーを含めたリンク付ナビゲーション

なんか由来はしりませんが、これは通称「ぱんくず」なんて呼ばれているようです。
つけ方は「個別エントリーページ」と「カテゴリーページ」では異なります。

まず個別エントリーページに

HOME > トップレベルカテゴリ > サブカテゴリ > エントリータイトル

という見栄えの「ぱんくず」をつけるには、以下のように記述します。

個別エントリページのリンク付「ぱんくず」表示タグ

次に、カテゴリーページに

HOME > トップレベルカテゴリ > 第1階層サブカテゴリ > 現在のカテゴリ名

のような見栄えの「ぱんくず」をつけるには、以下のように記述します。

カテゴリーページのリンク付「ぱんくず」表示タグ

なお、このカテゴリーページの「ぱんくず」は、<$MTCategoryLabel$>や<$MTArchiveTitle$>を使っていますので、MTCategoryDescription タグを使ってカテゴリー名を表示されている方は、このままではうまくいかないと思います(番号付の不細工なほうのタイトルが表示されてしまう)。

4)カテゴリーページに「カテゴリー内メニュー」を表示する

これも、MTCategoryDescription タグをカテゴリー名表示で使っておられる方はうまくいかないと思いますが、カテゴリーページに以下のようなリストをリンク付で表示します。


<トップレベル(親)カテゴリーページでの表示>
    サブカテゴリー1
    サブカテゴリー2

<サブ(子)カテゴリーページでの表示>
 01.親カテゴリー
   └ サブカテゴリー1
   └ サブカテゴリー2

実際の表示や使い心地は、旗旗の各カテゴリーページで試してみて下さい。
以下のように記述します。

カテゴリー内リストの表示タグ

「親カテゴリページ用」の部分はサブカテゴリーページでは無視されて何も表示されず、逆に「サブカテゴリーページ用」の部分はトップカテゴリーページでは何も表示されません。もっとスマートでうまい方法がありそうですが、これもMTのマニュアルページを読んでいるうちに、ほとんど偶然「できちゃった」もんですんで、どう改造してよいものやらわかりません(笑

ついでに、カテゴリーページには「サイトメニュー」と題して、トップレベルカテゴリーの一覧を設置していますので、それも書いておきます。

トップレベルカテゴリーだけを表示するタグ

5)参考にさせていただいたサイト様

このエントリーで書いた作業のために、ものすごく多くの方のサイトを参考にさせていただきました。とても全部は紹介しきれないくらいですが、特に参考になったサイト様だけでもご紹介させていただきます。また、多くの皆さんが、ご自分の体験をMTユーザー同士で共有化しようとしておられる姿勢に、あたためて敬意を表したいと思います。ありがとうございました。

サイドバーにカテゴリリストを表示する(Techkuow Weblog)←基本!

「ぱんくず」の作り方(MovableTypeマニュアル)

カテゴリーに日本語を使う方法(dh’s memoranda)

MTでサブカテゴリ以下も全て表示させるには?(亜細亜ノ蛾)

MTでサブカテゴリ追加(Nitty-Gritty)

サブカテゴリを採用(Untitled)

MovableTypeの記事修正を楽にする(ARTIFACT-人工事実-)←こっそり採用

ここまで読んでいただいてありがとうございます!

未分類

7件のコメント

自分のサイトで参考にして使わせていただいてるんですが、⇒http://www.hunza-guesthouse.com/blog/archives/cat12/cat24/index.htmlにメインのカテゴリーの文字(アジア・太平洋)がでかくなってしまっているのですが直す方法はありますか?

「日本・世界の安宿&旅情報」様。ご質問ありがとうございます。今見てきましたが、うまく直っているようですね。よろしければ、他の方の参考となる「共有財産」として残せるので、どうやって直ったかを書いておいていただければと思います。
おそらくタグの問題ではなく、CSSの設定だと思うのですが、違いますか?

投稿しようとするとなぜかタグの部分が消えてしまうようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です