CSS設定でサブカテゴリーだけを表示する方法/MT条件分岐:MTHasNoSubCategories

前回のMTで条件分岐:<MTHasSubCategories>MTカテゴリーページにてサブカテゴリーのみ表示するエントリーでメイン(親)カテゴリーページにてサブカテゴリーのリストを表示する方法を説明しました。今回は、サブカテゴリーページにて同じ階層のサブカテゴリーのみを表示する方法をご紹介します。

サブカテゴリーページにて同じ階層のサブカテゴリーのみを表示する

カテゴリーページのテンプレートは一つしかなく、わざわざ条件分岐などでややこしく設定するのも面倒なので、一つのテンプレートで複数の表示を可能にしたいものです。

  • メインカテゴリー階層ではサブカテゴリーリスト表示
  • サブカテゴリー階層では、同じ階層のカテゴリー表示

という前提での説明となります。

上記は、amazonのサイトのメニュー表示と同じ表示扱いになるかと思います。うまく設定することでAmazonのようなメニューを作ることが可能です。

サブカテゴリーページにて同じ階層カテゴリーのメニュー表示

MTでの条件分岐テンプレートタグの<MTHasNoSubCategories>を使います。

MTHasNoSubCategories

現在のカテゴリーにサブカテゴリーが存在しないときだけ実行する条件タグです。

対応しているバージョン
3.1, 3.2, 3.3, Enterprise 1.0
利用方法
<MTHasNoSubCategories> 〜 </MTHasNoSubCategories>

サブカテゴリーの表示設定をCSSにて処理します。<$MTCategoryBasename$>を使います。

関連エントリー:<$MTCategoryBasename$>
MTでカテゴリ毎にページの表示を変える方法:<$MTCategoryBasename$>
<$MTCategoryBasename$>を使ってCSSメニュー切り替え表示(2)

表示コード・説明

下記のコードが当ブログで使っているテンプレートコードです。

まず、<MTHasNoSubCategories></MTHasNoSubCategories>は、メインカテゴリ時には表示されません。サブカテゴリーもしくは下の階層にカテゴリーが存在しない時に囲まれたコードが生成・表示されるようになります。(MT条件分岐)

<MTParentCategory><MTCategoryLabel></MTParentCategory>の設定で親カテゴリー名が表示されるようになります。

<MTSubCategories></MTSubCategories>ですべてのカテゴリーメニューを階層表示関係なく表示します。

一番最初のdiv要素と階層表示のli要素にクラス指定で<$MTCategoryBasename$>を設定します。これは、CSSで他のカテゴリーの表示を消すためです。また、表示のカラー変更なども兼ねて設定できます。

例えば、上記のコードで生成されるHTMLコードは、以下の通りになります。
(※MT(メインカテゴリー)>カスタマイズ(サブカテゴリー)で生成されるコードとします。)

  • MTカテゴリーのフォルダ名は、"mt"
  • カスタマイズカテゴリーのフォルダ名は"custom"

実際には、すべてのメニューが生成されています。これでは、普通のカテゴリーリストとなんら変わりはありません。同じ階層のカテゴリーのみを表示したい場合には、面倒ですが個別にCSSの設定で表示を消します。

上記の参考メニューの場合は、以下のようなパターンのCSSの設定で他のカテゴリー部分が表示されなくなります。

表示コード:CSSパターン

.サブカテゴリファイル名 li.メインカテゴリーファイル名,
.サブカテゴリファイル名 li.メインカテゴリーファイル名,



.サブカテゴリファイル名 li.メインカテゴリーファイル名{
display:none;
}

クラス指定でないとXHTMLValidation Serviceにて引っ掛かります。

上記のようにすべてのサブカテゴリーでの設定をする必要があります。サブカテゴリー×メインカテゴリーの数分のCSSの設定が必要です。条件分岐を使って独自のコードを読み込ませるといった手法もかんがえられますが、あとあとのメンテナンスを考えて管理が難しそうなのでこの方法を使いました。

注意:この方法はCSSが無効である場合はすべてのメニューが表示されてしまいます。

javascriptを使えば、実行可能だと思います。ただ、いじくれないので・・・・・

サブカテゴリーのみを表示する方法をいろいろと探しましたが、静的ページでサブカテゴリーのみの表示はみつかりませんでした。動的ページでは可能のようなエントリーを見かけましたが、当サイトのコンテンツとアクセス数で動的ページにするメリットがまだないので、しばらくSEOを考えての静的ページでのカスタマイズを考えていいこうと思っています。

また何か他にいい方法があれば、コメント下さると助かります。

トラックバック(0)

このブログ記事を参照しているブログ一覧: CSS設定でサブカテゴリーだけを表示する方法/MT条件分岐:MTHasNoSubCategories

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

コメントする

アイテム

  • 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月19日 19:39に書いたブログ記事です。

ひとつ前のブログ記事は「WritelyからMovableTypeに投稿する」です。

次のブログ記事は「第2回「Movable Type コンテスト2006」にエントリー」です。

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