TopMovable Typeカスタマイズカテゴリー > 2011年9月
2011年9月 5日

Movable Typeのカテゴリリストにダミーの親カテゴリを表示する

Movable Typeのカテゴリリストにダミーの親カテゴリを表示するカスタマイズを紹介します。

1.カスタマイズのイメージ

まず、次のようなカテゴリ構成を想定します。

アメリカ
 └ ニューヨーク
 
カナダ
 └ バンクーバー
 
日本
 └ 東京
 
中国
 └ 北京
 
韓国
 └ ソウル

このカテゴリ構成について、親カテゴリのみを次のように「北米」「アジア」などの地域名でグルーピング表示するように変更します。

北米
 ├ アメリカ
 └ カナダ
 
アジア
 ├ 日本
 ├ 中国
 └ 韓国

「アメリカ」「日本」などの親カテゴリのURLは変更しません。つまり「北米」「アジア」はカテゴリとして追加するのではなく、元のカテゴリをまとめるためだけに付与するタイトルです。

2.カスタマイズ

各親カテゴリの説明欄に、グルーピングしたい地域名を設定します。念のため子カテゴリの説明欄には何も設定しないでください。

「カナダ」の場合
「カナダ」の場合

「日本」の場合
「日本」の場合

設定後、次のようなサブテンプレートを作成します。

<mt:TopLevelCategories>
  <mt:if tag="CategoryDescription">
    <$mt:CategoryDescription setvar="area"$>
    <mt:SetVarBlock name="list{$area}" append="1">
<li>
  <a href="<$mt:CategoryArchiveLink$>"title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"><$mt:CategoryLabel$></a>
</li>
    </mt:SetVarBlock>
  </mt:If>
</mt:TopLevelCategories>
 
<mt:loop name="list">
  <h2><mt:GetVar name="__key__"></h2>
  <ul><mt:GetVar name="__value__"></ul>
</mt:loop>

これを再構築すれば、次のように表示されると思います。

完成イメージ

3.サブテンプレートの説明

まず、MTTopLevelCategoriesタグで親カテゴリの一覧を取得します。次にMTIfタグを使って、カテゴリの説明欄に設定がある場合のみ、MTCategoryDescriptionタグの内容を変数areaに保持します。そして変数areaの値をハッシュ変数listのキーとして使い、ハッシュの値にカテゴリ名を設定します。

例えば「カナダ」カテゴリは、ハッシュ変数listに次のような感じで設定されます(イメージです)。

list{"北米"} = "<li><a href="...">カナダ</a></li>"

さらに「アメリカ」カテゴリは次のようにlist{"北米"}に追加されます。追加されるのは、MTSetVarBlockタグに「append="1"」を使って、追記するよう指定しているためです。

list{"北米"} = "<li><a href="...">カナダ</a></li><li><a href="...">アメリカ</a></li>"

同じように、「日本」「中国」「韓国」は次のように設定されます。

list{"アジア"} = "<li><a href="...">日本</a></li><li><a href="...">中国</a></li><li><a href="...">韓国</a></li>"

あとは、MTLoopタグとMTGetVarタグを使ってハッシュ変数areaを出力すれば完成です。

このカスタマイズはMT4/MT5で使えます。MT5.1であればデフォルト機能のカテゴリの並び替えを行うことで、並び替えた順番で表示することができます。

4.カテゴリの説明欄が使えない場合

カテゴリの説明欄を他の用途ですでに使っていて、今回のカスタマイズで使えない場合は、カテゴリ用のカスタムフィールドを追加し、そこに地域名を設定して利用する方法があります。

Comments [3] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3