November 28, 2004
MTでサブカテゴリ追加
MT(Movable Type)をバージョンアップして、3.11を使いしばらくたちますが。。。えっと、ようやっとサブカテゴリ化してみました。以前からやろうとは思っていたのですが。。。しかし思ったよりも苦労しました。なので、ここにメモを残そうと思います。
■今回やった事
言葉の定義がややこしいので、トップレベルのカテゴリを「メインカテゴリ」。その下に入るカテゴリを「サブカテゴリ」とします。で、今回実際にやったことは:
- サブカテゴリの作成
- それぞれのページトップにメインカテゴリだけ表示
- カテゴリリストに、メインとサブのカテゴリを階層化して表示しエントリー数も同時に表示する。
という感じです。その他もやりましたが、それは次回にでも紹介しようと思います。
■サブカテゴリの作成
これはそんなに難しくないのですが。今までのカテゴリ分類を大幅に変更するために、全てカテゴリを作り直してみました。作る前に、どういったカテゴリ構造に分類するかを良く考えてからの方が良いと思うのですが、 Nitty-Gritty のカテゴリもいまいちなんです。:-p
「メインカテゴリ」を作成します。実際には、トップレベルカテゴリになりますが。。。ここで並べ方の順序を工夫できるように、カテゴリ名の前にプレフィックスを作成しました。例えば、「日記」というカテゴリを作成したい場合、「100日記」などとします。同様にサブカテゴリを「110雑記」などと、最初の桁をあわせて次の桁で数字を大きくします。この数字の並びが肝です。並び替えの時に、威力を発揮します。:-)
でも、一度作って名前を変えても、元々のカテゴリの名前がタイトルタグに反映されてしまうので、伸張に行ってください。
そして、「カテゴリーの説明」に実際に表示したいカテゴリ名を記入します。最終的な表示は、この「カテゴリーの説明」をします。
サブカテゴリーも同様に、プレフィックスを入れて作成します。「メインカテゴリー」の横の「+作成」をクリックして作成します。
これで、保存して、再構築をすればサイトにカテゴリが反映されます。もちろん、それぞれのエントリーのカテゴリ区分を再整理しなくてはなりません。(これも保存後に再構築が必要です。)
■ページトップにメインカテゴリだけ表示
どのページの上の方に、カテゴリを表示して、ナビゲーションを分かりやすくしようと思いまして。。。元々のやり方の<MtCategories>でくくってしまうと、サブカテゴリを含む全てが出てしまいます。サブカテゴリだけを取り除きたいわけなんです。言い換えればトップカテゴリだけを表示するってやつですね。はい。
<strong> || <a href="あなたのブログサイトのURL">MAIN</a> ||
<MTTopLevelCategories>
<a href="<$MTCategoryArchiveLink$>">
<$MTCategoryDescription$></a> ||
</MTTopLevelCategories></strong>
</center>
ここで注意したいのが、カテゴリ名の表示を、カテゴリの説明の部分にしている点です。左から順にカテゴリを表示したい順序に並べるのに適しているからです。メインカテゴリだけ表示する場合には、<MTTopLevelCategories> タグを使います。
■カテゴリリストの表示
Nitty-Gritty では、右側にカテゴリのリストとそのエントリー数を表示していました。なんとなく以前の続きで表示させたくて、、がんばってみました。
<MTHasNoParentCategory></MTHasNoParentCategory>
<MTHasParentCategory> ┗</MTHasParentCategory>
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryDescription$>
</a>[<$MTCategoryCount$>] </MTCategories>
<MTHasNoParentCategory> や <MTHasParentCategory> を使って、トップレベルのカテゴリとサブカテゴリを分類します。ここで、カテゴリの作成のところで説明した、プレフィックスの数字の並びがキモになってきますのでご注意を。何も考えないで並べた場合、サブカテゴリとメインカテゴリの親子関係がバラバラになってしまいます。
注意点は、
- サブカテゴリを作成するときには、カテゴリの作成の仕方を考える。プレフィックスとして数字をつけるとコントロールしやすい。
に尽きます。
PS: 最後になりましたが、、苦労したのが、メインカテゴリに何らかのエントリーが無いとうまく行かない点です。亜細亜ノ蛾 - WeblogさんのMT でサブカテゴリ以下も全て表示させるには?にも書かれています。(これ見るまでは、自分が何か間違えたと思っていました。)
↑最新の話題がいっぱい!!
http://mt.nitty-gritty.org/mt/mt-tb.cgi/196
Excerpt: このごろパソコンやウェブログのカスタマイズばかりしています。いいかげんエントリー...
From: 旗旗
Date: 2005.06.23
こんにちは、gonnaさん。
お礼が遅くなりました。
ご解答ありがとうございますm(_ _)m
お書きいただいた、MTEntries category=タグに$MTEntryCategory$をはさむ事で、表示が出来ました。
ただ、サブカテゴリ内に入った時にもカテゴリで表示された内容(カテゴリ内にあるサブカテゴリのみ)を表示したいので、こちらはいろいろ試してみないといけないようです。
後、少しでできそうなのですが。。
gonnaさんのレスのおかげで近づけました。
ありがとうございます。
アキさん、こんばんは。
回答のポイントがずれているかもしれませんが・・・。
ちなみにおいらのカテゴリーページは全て自動で生成されています。
MTEntries category=
という形でカテゴリに含まれるエントリーリストが生成されるはずです。
#これで解決になりましたでしょうか?
Posted by: gonna at December 16, 2005 11:03 PMはじめまして、gonnaさん。
サブカテゴリ関連で記事を探しており、こちらのページを拝見させていただきました。
突然で申し訳ありませんが、ご質問させてください。
サブカテゴリページ、サブカテゴリに登録されているエントリーページ内に、同一カテゴリ内のサブカテゴリのみを表示したいと思い、いろいろ模索しております。
gonnaさんのページで言いいますと、トップカテゴリを押すと出てきます、
■カテゴリ
□携帯電話 (102)
□インターネット (83)
のような感じです。
MTIfIsDescendant parent="リンクメニュー"
のように書けば、同様の事はできるのですが、できるだけ自動化させたいと考えています。
書かれております記事のような「カテゴリリストの表示」などを使ってうまく出来ないものかとも考えたのですが・・・ダメでした。
gonnaさんのカテゴリページが自動化されておりましたら、教えていただけないでしょうか。
よろしくお願い致します。
