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.カテゴリの説明欄が使えない場合
カテゴリの説明欄を他の用途ですでに使っていて、今回のカスタマイズで使えない場合は、カテゴリ用のカスタムフィールドを追加し、そこに地域名を設定して利用する方法があります。
- Movable Type6で記事のない親カテゴリのカテゴリページを出力する方法
- Movable Typeでブログ記事が属するカテゴリアーカイブのリンクをブログ記事ページに表示する
- Movable Typeで「カテゴリ+年別」の記事一覧を表示する方法
- Movable Typeで親カテゴリーアーカイブに表示した記事のメインカテゴリまでのパンくずリストを表示する
- Movable Typeのカテゴリのベースネームについて
- Movable Typeで複数ブログのブログ記事を同名のカテゴリ別に振り分ける方法
- Movable TypeのMTIfCategoryタグとMTEntryIfCategoryタグの違い
- Movable Typeのカテゴリリストで階層別に背景画像を変更する
- Movable Typeのカテゴリ・フォルダで特定の最上位階層を表示しない方法
- MTEntriesタグのcategoryモディファイアに「AND」を含むカテゴリを指定する
- ブログ記事ページに自分が属するカテゴリのツリーと直属カテゴリの他のブログ記事一覧を表示する
- Movable Type 5でのMTEntriesタグのcategory/catgoriesモディファイアの動作改善について
- 親カテゴリーアーカイブにサブカテゴリーのブログ記事を表示する場合に特定のサブカテゴリーのブログ記事をフィルタリングする
- 特定のカテゴリのブログ記事を表示する
- 親カテゴリページにサブカテゴリページのリンクを表示する
こんばんは。突然の書き込み失礼します。
仕事でMTを触る機会があり、こちらのブログをよく参考にさせていただいております。
現在MT4.1でこちらの記事のダミーの親カテゴリ表示を参考にさせて頂いておりますが、ひとつ質問がございます。
カテゴリの表示の順番を指定したい場合はどのようにすればいいでしょうか。
MT5.1の場合は明記してくださっていますが、MT4.1だと無理なのでしょうか。
MTのタグへの理解が浅いため、どうすればいいのかわかりません。
お忙しいところ恐縮ですが、御存じでしたら教えてください。
よろしくお願いいたします。
>a_keyさん
こんばんは。
記事参照ありがとうございます。
MT4.1でのカテゴリの並び替えについては、藤本壱さんの「SortCatFldプラグイン」か「SuperSortプラグイン」をインストールすれば実現可能と思われますのでご確認願えますでしょうか。
http://www.h-fj.com/blog/mtplgdoc/sortcatfld.php
http://www.h-fj.com/blog/mtplgdoc/supersort.php
それではよろしくお願い致します。
>yujiro さん
丁寧で早い返答ありがとうございます!
プラグイン、参考にさせていただきます。
またお尋ねすることがあるかもしれません。
その時は何卒よろしくお願いいたします。