トップページにカテゴリー毎でリスト表示を分ける方法

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/
  1. まず、メニューの数を適当に2つほどで選択し、【Yes please - gimme titles】にチェックを付けます。
  2. 次にすべてのテキスト入力部分に適当な文字を入力(※全部HOMEでもいいですよ。)
  3. メニュー一覧のなかから、好きなデザインを選びます。横並びは下のほうになります。
  4. 【How to identify and style the menu】の部分は、class指定を選択(後々のHTMLValidatorに引っ掛からないようにするため)
  5. あとは、HTMLコードとCSSが生成されます。それをテンプレートタグに置き換えるだけです。

プロパティが”navcontainer”と”navlist”なので以下のような感じで生成されたCSSコードを組み合わせれば、横並びのCSSメニューが表示されます。

エントリーのあるカテゴリーだけの表示

<MTElse></MTElse>の部分を抜き出せば、エントリーのあるカテゴリーだけの表示になります。

以上のような方法が考えられます。 他にも方法があれば、コメントいただけると嬉しいです。わからない部分があればコメント下されば、わかる範囲でお答えします。

トラックバック(0)

このブログ記事を参照しているブログ一覧: トップページにカテゴリー毎でリスト表示を分ける方法

このブログ記事に対するトラックバックURL: http://weblibrary.s224.xrea.com/x/mt/mt-tb.cgi/104

コメント(2)

 その節はお世話になりました。

 今は取り敢えずサイトを立ち上げるのに必死なので、時間に余裕が出来たら、より良いサイトにするためにも、こちらの記事を参考にさせていただきます。その際は、よろしくお願いいたします。

 それにしても、更新スピードが凄いですね。びっくりです。

>ヒロさん

お疲れ様です。
ご返事おそくなりすみません。
今後ともよろしくおねがいします。
まだいろいろとあるのですが、パターンに応じて情報提供しようと思っています。

今後ともよろしくおねがいいたします。

コメントする

ウェブページ

   
  

アイテム

  • ff-logo-big

    ff-logo-big: firefoxロゴ

  • fmtube_image

    fmtube_image: fmtubesキャッチイメージ

  • mock.jpg

    mock.jpg: fm+tubesのモックページ(デザインレイアウト)。最終的にはこのスタイルでマルチブログで展開してみる構想。

  • mtdeinfo

    mtdeinfo: Movabletypeを勉強するならこのサイト。サンプルファイルもあって、情報も探しやすいです。とてもきれいに情報表示されていて、とても参考になります。

  • mytumblr

    mytumblr: 個人の趣味でのtumblrです。女性のポートレートなんかがおおいです

  • caputure_contextmenu

    caputure_contextmenu: tumblr caputureを右クリックコンテキストメニューで選択する

  • tumblrgallery

    tumblrgallery: tumblrを使ってWEBデザインGalleryを簡単に作ってみました。

  • psdtuts

    psdtuts: http://psdtuts.com/のイメージ画像

  • designflavor.

    designflavor.: http://www.designflavr.com/のイメージ

  • entrymain_template

    entrymain_template: ブログ記事の概要は、インデックステンプレート、ブログ記事のリスト(アーカイブテンプレート)、検索結果(システムテンプレート)の3つのテンプレートで共通に使われています。それぞれのテンプレートでの表示内容の違いをイメージに表してみました。

このブログ記事について

このページは、スカイが2006年9月26日 01:03に書いたブログ記事です。

ひとつ前のブログ記事は「洗練されたデザイン Gucci」です。

次のブログ記事は「ブログをコンテンツ次第で人気ブログにする方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。