mixi/MT(Movable Type/ムーバルタイプ)のコミュのトピック上で問題提示があったので、今回のエントリーで問題解決に取り組んでみようと思います。

問題は、「トップページにメインカテゴリー毎での属するサブカテゴリーのメニューもしくは、リスト表示をしたい」という内容です。
普通なら自分でリンクを作成する方法しかないとおもうのですが、以前のエントリーCSS設定でサブカテゴリーだけを表示する方法/MT条件分岐:MTHasNoSubCategoriesでの方法を使えば可能であると思います。
今回のインデックスページにてカテゴリー毎でのサブカテゴリーリストの表示は、以下のような感じになると思います。
- メインカテゴリーA
- サブカテゴリA1
- サブカテゴリA2
- サブカテゴリA3
- サブカテゴリA4
- メインカテゴリーB
- サブカテゴリB1
- サブカテゴリB2
- サブカテゴリB3
- サブカテゴリB4
- メインカテゴリーC
- サブカテゴリC1
- サブカテゴリC2
- サブカテゴリC3
- サブカテゴリC4
普通なら無理ですが、CSSを使うことで実現可能です。(正攻法ではないので、構造的にはあまりおススメできません。見た目だけを求めるならこの方法が使えます。)
MTCategoryBasenameをデフォルトのカテゴリーリストのテンプレートタグに追加します。
MTCategoryBasename
カテゴリーのファイル名を表示します。
- 対応しているバージョン
- 3.3, Enterprise 1.0
- 利用方法
- <$MTCategoryBasename$>
コード
Widget: カテゴリーリストのデフォルトコードを使って説明します。
<$MTCategoryBasename$>を追加する部分は1箇所でその上のdivクラス指定に任意のプロパティを指定します。
<li class="module-list-item <$MTCategoryBasename$>"><div class="module-content 任意のプロパティ"><h2 class="module-header">任意のカテゴリー名</h2>
例えば、上記のコードを使い「カテゴリAのカテゴリーリストを表示する」と仮定します。 div要素のプロパティ指定は、”categoryA”とし、 タイトルを”カテゴリーA”とします。(同じようにカテゴリーB、カテゴリーC)
生成されるコードは以下の通りになります。
上記を見てCSSでメインカテゴリーAのみを表示させるためのコードは、以下の通りになります。
このパターンをcategoryBとcategoryCで同じコードでプロパティの要素のみを変えてあげるとカテゴリー毎別のサブカテゴリーリストが生成できます。
コードが複雑になると思うので、この部分だけをモジュール化することで管理が楽になります。
モジュール化
モジュール化については、MTのレイアウトカスタマイズ:ブロックのモジュール化をご覧いただければメリットがわかります。
横並びのリスト表示
階層表示のメニューを横並びにリス表示する場合は、以下のようにするといいと思います。
以下のサイトで簡単に階層リストのメニューをCSSでカッコよく作れます。
- List-O-Matic-Generate CSS-styled navigation menus based on list items (using <li> tags) | Developer Tools | Accessify:
- http://www.accessify.com/tools-and-wizards/developer-tools/list-o-matic/
- まず、メニューの数を適当に2つほどで選択し、【Yes please - gimme titles】にチェックを付けます。
- 次にすべてのテキスト入力部分に適当な文字を入力(※全部HOMEでもいいですよ。)
- メニュー一覧のなかから、好きなデザインを選びます。横並びは下のほうになります。
- 【How to identify and style the menu】の部分は、class指定を選択(後々のHTMLValidatorに引っ掛からないようにするため)
- あとは、HTMLコードとCSSが生成されます。それをテンプレートタグに置き換えるだけです。
プロパティが”navcontainer”と”navlist”なので以下のような感じで生成されたCSSコードを組み合わせれば、横並びのCSSメニューが表示されます。
エントリーのあるカテゴリーだけの表示
<MTElse></MTElse>の部分を抜き出せば、エントリーのあるカテゴリーだけの表示になります。
以上のような方法が考えられます。 他にも方法があれば、コメントいただけると嬉しいです。わからない部分があればコメント下されば、わかる範囲でお答えします。


その節はお世話になりました。
今は取り敢えずサイトを立ち上げるのに必死なので、時間に余裕が出来たら、より良いサイトにするためにも、こちらの記事を参考にさせていただきます。その際は、よろしくお願いいたします。
それにしても、更新スピードが凄いですね。びっくりです。
>ヒロさん
お疲れ様です。
ご返事おそくなりすみません。
今後ともよろしくおねがいします。
まだいろいろとあるのですが、パターンに応じて情報提供しようと思っています。
今後ともよろしくおねがいいたします。