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

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

Posted at September 5,2011 1:55 AM
Tag:[Category, Customize, MovableType]

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.カテゴリの説明欄が使えない場合

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

関連記事
zenback
人気エントリー
トラックバックURL


コメント

こんばんは。突然の書き込み失礼します。
仕事でMTを触る機会があり、こちらのブログをよく参考にさせていただいております。
現在MT4.1でこちらの記事のダミーの親カテゴリ表示を参考にさせて頂いておりますが、ひとつ質問がございます。
カテゴリの表示の順番を指定したい場合はどのようにすればいいでしょうか。
MT5.1の場合は明記してくださっていますが、MT4.1だと無理なのでしょうか。
MTのタグへの理解が浅いため、どうすればいいのかわかりません。
お忙しいところ恐縮ですが、御存じでしたら教えてください。
よろしくお願いいたします。

[1] Posted by a_key : October 27, 2011 7:34 PM

>a_keyさん
こんばんは。
記事参照ありがとうございます。
MT4.1でのカテゴリの並び替えについては、藤本壱さんの「SortCatFldプラグイン」か「SuperSortプラグイン」をインストールすれば実現可能と思われますのでご確認願えますでしょうか。

http://www.h-fj.com/blog/mtplgdoc/sortcatfld.php
http://www.h-fj.com/blog/mtplgdoc/supersort.php

それではよろしくお願い致します。

[2] Posted by yujiro logo : October 27, 2011 9:57 PM

>yujiro さん
丁寧で早い返答ありがとうございます!
プラグイン、参考にさせていただきます。
またお尋ねすることがあるかもしれません。
その時は何卒よろしくお願いいたします。

[3] Posted by a_key : October 28, 2011 3:45 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)