エントリー・アーカイブで親カテゴリーに含まれる全エントリーをサブカテゴリー別に表示
Category:[エントリー, カテゴリー]
Tag:[Customize, Entry, MovableType, SubCategory]
エントリー・アーカイブで、親カテゴリーに含まれる全エントリーをサブカテゴリー別に表示するカスタマイズです。
タイトルから機能を理解して頂くのは困難と思いますので、とりあえずサンプルで説明します。
まず、下記のようなサブカテゴリーリストを仮定します。
植物
├ バラ科
│ ├ やまぶき
│ └ ワレモコウ
├ ユリ科
│ ├ チューリップ
│ └ ヒアシンス
└ ラン科
├ サギソウ
└ カトレア
昆虫
├ コガネムシ科
│ ├ カブトムシ
│ └ スジコガネ
└ アガハチョウ科
├ キアゲハ
└ アゲハ
このサブカテゴリーリストは次の規則にもとづいています。
- メインカテゴリー:「植物」または「昆虫」
- サブカテゴリー:科目
- エントリー:科目に属する植物または昆虫の「和名」
この前提で、ブラウザに表示するエントリー・アーカイブが「チューリップ」である場合、エントリー・アーカイブには親カテゴリー(植物)が属するすべてのエントリーをサブカテゴリー別に表示、つまり、
植物
├ バラ科
│ ├ やまぶき
│ └ ワレモコウ
├ ユリ科
│ ├ チューリップ
│ └ ヒアシンス
└ ラン科
├ サギソウ
└ カトレア
を表示するというものです。
以下に、公開テンプレートを使ったサンプルを作ってみました。
エントリー・アーカイブの左上に表示されている「親カテゴリーに属する全カテゴリー」が今回紹介するリストです。
エントリー・アーカイブに同一カテゴリーのエントリーを表示する方法は「個別エントリーアーカイブに同一カテゴリーのエントリーを表示」で紹介している通り、よく知られているテクニックですが、エントリーをカテゴリー別に表示したり、同じ親カテゴリーのエントリーを表示する方法は知られていません。
ただしこのカスタマイズには下記の制約があります。
- 親カテゴリー(「植物」や「昆虫」)にエントリーが存在しないこと。
- サブカテゴリーの下にサブカテゴリーが存在しない(「バラ科」の下に「サクラ属」というサブカテゴリーが存在しない)こと。
上記のリストを表示するMTタグです。
<MTParentCategory><MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst><MTIfNonZero tag="MTCategoryCount"><li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$MTCategoryLabel$></a>
<MTEntries><MTEntriesHeader><ul></MTEntriesHeader><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li><MTEntriesFooter></ul></MTEntriesFooter></MTEntries><MTElse><li><$MTCategoryLabel$></MTElse></MTIfNonZero><MTSubCatsRecurse max_depth="3"></li><MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories></MTParentCategory>
ツリー化するには、maketree.js を利用して、下記の青色部分を追加します。
<div class="side">
<div id="parentCategoryEntries">
<MTParentCategory><MTSubCategories include_current="1">
<MTSubCatIsFirst><ul></MTSubCatIsFirst><MTIfNonZero tag="MTCategoryCount"><li><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><$MTCategoryLabel$></a>
<MTEntries><MTEntriesHeader><ul></MTEntriesHeader><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li><MTEntriesFooter></ul></MTEntriesFooter></MTEntries><MTElse><li><$MTCategoryLabel$></MTElse></MTIfNonZero><MTSubCatsRecurse max_depth="3"></li><MTSubCatIsLast></ul></MTSubCatIsLast>
</MTSubCategories></MTParentCategory>
</div>
</div>
<script type="text/javascript">
generateTreeForTreeStructure('parentCategoryEntries');
</script>
CSSは下記です。
ul.tree {
margin: 0px!important;
padding: 0px!important;
font-size: 9px;
list-style: none!important;
}
ul.tree ul {
margin-left: 10px;
padding: 0!important;
}
ul.tree li {
margin: 0;
padding: 0;
background: none;
list-style: none!important;
}
ul.tree li ul li {
margin: 0 0 0 10px;
padding-left: 13px;
background-image: url(tree_lst.gif);
background-repeat: no-repeat;
list-style: none;
}
ul.tree li ul li.end {
background-image: url(tree_end.gif);
list-style: none;
}
このカスタマイズはカテゴリー・アーカイブに適用した場合も同様の動作をします。
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その1)
- ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
- ブログ記事の入力フィールドに初期値を設定するプラグイン
- トップページの最新記事に Google Adsense を貼り付ける
- アーカイブページのリストの表示内容が異なる理由
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)
- 概要と本文を切り替える(Movable Type 4・デフォルトテンプレート版)
- Movable Type で画像挿入時の form 要素について
- 概要と本文を切り替える(公開テンプレート版)
- カテゴリー・アーカイブのカテゴリーリストで該当カテゴリーのエントリーのみを表示する
- 概要と本文を切り替える(デフォルトテンプレート版)
- Updated Now プラグイン v2.1
- Updated Now プラグイン for WordPress
- 最新のエントリーに投稿日付を表示する for WordPress
- Movable Type で全エントリーを表示する方法
- Movable Type のエントリー削除でHTMLファイルも自動的に削除する
- Movable Type で blockquote 要素を記述する時の注意
≫ MovableTypeでYouTubeの動画を簡単にUPする方法 from nogute.com
YouTubeの動画をBlogで良く見かけるようになりました。 興味ある動画は自... [続きを読む]
こんにちわ、いつも参考にさせて頂いております。
サブカテゴリーについてご質問させて頂きたく思います。
環境はmovabletype4.01になります。
現在アーカイブテンプレートを新規に作り、カテゴリーページ(親カテゴリーの先のページ)を作成しているのですが、そのカテゴリーページに、定義リストを使い、下記の様にサブタイトルとサブタイトルに属するエントリーの一覧を表示したいのです。
--------------------------------------------------------------------------------
親カテゴリー1のページ とします。 ↓↓↓
--------------------------------------------------------------------------------
【サブカテゴリー①のタイトル(親カテゴリー1に属する)】
サブカテゴリー①に属するエントリータイトルⅠ
サブカテゴリー①に属するエントリータイトルⅡ
サブカテゴリー①に属するエントリータイトルⅢ
・
・
・
【サブカテゴリー②のタイトル(親カテゴリー1に属する)】
サブカテゴリー①に属するエントリータイトルⅠ
サブカテゴリー①に属するエントリータイトルⅡ
サブカテゴリー①に属するエントリータイトルⅢ
・
・
・
※エントリータイトルは全てリンクするつもりです。
-------------------------------------------------------------------------------
基本となるXHTMLは下記のような感じでいこうと思っています。
<div class="date-news-waku">
<div><!-- 左枠 -->
<img src="左枠のイメージ画像.jpg" width="65" height="60" />
</div>
<div><!-- 右枠 -->
<dl>
<dt>サブカテゴリー1タイトル</dt>
<dd>サブカテゴリー1の記事Ⅰ</dd>
<dd>サブカテゴリー1の記事Ⅱ</dd>
<dd>サブカテゴリー1の記事Ⅲ</dd>
</dl>
</div>
</div>
----------------------------------------------------------------------------------
以上になります。
ちなみに、エントリー(記事)は全てサブカテゴリーのどれかに属させる予定です。
お忙しい中申し訳ございませんが、ご指導ご鞭撻宜しくお願い致します。
>pekoさん
こんばんは。
ご質問の件で確認ですが、何点か確認させてください。
1.親カテゴリーにはエントリーはありますでしょうか。
親カテゴリーにエントリーがない場合、その親カテゴリーのページが存在しないので、親カテゴリーにダミーのエントリーを作成する必要があります。
2.上のご要望で、「サブカテゴリー②のタイトル」の下に「サブカテゴリー①に属する~」とありますが、①は正しくは②でしょうか。
3.サブカテゴリーの階層は2階層、つまり
親カテゴリー - サブカテゴリー
であって、
親カテゴリー - サブカテゴリー - サブカテゴリー
という3階層はないという認識でよろしいでしょうか。
それではよろしくお願いいたします。
yujiroさん>
ご返信ありがとうございます。
1、 今の所、またこれからも全てサブカテゴリーに割り振りしていく予定です。※今あるエントリーは全てサブカテゴリーに属しています。 (親カテゴリー>>サブカテゴリー という感じです。)
ダミーのエントリーはどんな記事でも大丈夫でしょうか?
2、申し訳ないです!yujiroさんのおっしゃるとおり、正しくは2です!
3、はい。サブカテゴリーの階層は全て2階層(目)でいきます。3階層には各エントリーという風にしようと思います。
わかりにくくて申し訳ございません。。
それでは宜しくお願い致します。
※すみません、追記させてください。
今の所、親カテゴリーには、どのエントリー属させないつもりですが、
今後、属させる記事も出てくるかもしれません。
それでは、ご指導ご鞭撻お願いいたします。
>pekoさん
こんにちは。
ご連絡ありがとうございます。
ちなみに、親カテゴリーにダミー(空)のエントリーを投稿した場合、親カテゴリーのページ本文は空白になります(サイドバーにご要望のリストは表示されます)が大丈夫でしょうか。
それではよろしくお願い致します。
yujiro様
お忙しい中返信ありがとうございます。親カテゴリーのページ本文が空白になってしまうとの事ですが、下記のようにする上で問題はありますか?
(私の場合ですが)左160pxを親カテゴリーリストとして表示し、それより右側をメインコンテンツにしようと考えているのですが、そのメインコンテンツの部分に今回お願いしていますリストを表示したいと思っています。
※具体的には下記のようなサイトをイメージしています
http://www.mdn.co.jp/content/blank/17/35/
第◯回と表示されているのがサブカテゴリーで、
その下の第◯話というのが、そのサブカテゴリーに属するエントリーというような感じです。
すみませんが宜しくお願い致します。
※まだまだ未熟な私が考えてやっておりますので、もしこのやり方をするよりも他に良い方法がありましたら是非ご指導宜しくお願い致します。
>pekoさん
こんにちは。
ご連絡遅くなってすいません。
下記のタグでお試し頂けますでしょうか。
<MTTopLevelCategories>
<MTSubCatIsFirst><dl></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<dt><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a></dt>
<MTEntries><dd><a href="<$MTEntryPermalink$>"><$MTEntryTitle encode_html="1"$></a></dd></MTEntries>
<MTElse>
<dt><MTCategoryLabel></dt>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
<MTSubCatIsLast></dl></MTSubCatIsLast>
</MTTopLevelCategories>
div 要素は付与していないので、このタグの外側に付与してください。
それではよろしくお願い致します。
親カテゴリー下のエントリーも表示するようにはできないでしょうか?
自己解決しました。失礼しました。
>8さん
こんばんは。
ご返事おそくなりすいません。
ご質問の件、自己解決されたようで良かったです。
できれば解決された内容をコメントでご連絡頂けないでしょうか。
それではよろしくお願い致します。

