ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)」や、これまでの似たようなカスタマイズでは、次の問題あることが判明しました。
1.問題点
異なる親カテゴリーに同名のサブカテゴリーがある場合、対応できない。
具体的には、次のようなカテゴリー構成を想定します。
cat-A
├ cat-1
└ cat-2
cat-B
├ cat-1
└ cat-2
この構成で「ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)」を行うと、cat-A/cat-1 に属するブログ記事と、cat-B/cat-1 に属するブログ記事は「同一カテゴリーのブログ記事リスト」とみなされてしまいます。
2.原因
「同一カテゴリーのブログ記事リスト」のキー情報として、MTEntryCategory という、ブログ記事に属するメインカテゴリー名のみ使っており、カテゴリーの親カテゴリーまで含めた情報やID番号でサーチしていないためです。
こうなった経緯は、そもそも、Movable Type 3 の途中まで「サブカテゴリー」という概念が存在しませんでした。つまり、親カテゴリーしか作れなかったため、同名のカテゴリーの存在が許されず、これまでのサブテンプレートを使えば「同一カテゴリーのブログ記事リスト」を実現できた、という訳です。
3.対処
3.1 EntryCategoryID プラグインを使う
「EntryCategoryID プラグイン」を使い、ブログ記事のメインカテゴリーのID番号と、ブログ記事リストのカテゴリーIDを比較し、同一カテゴリーID のブログ記事のみリスティングします。
<mt:setvarblock name="entrycategoryid"><$MTEntryCategoryID$></mt:setvarblock>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTCategories>
<mt:setvarblock name="currentcategoryid"><$MTCategoryID$></mt:setvarblock>
<mt:if name="currentcategoryid" eq="$entrycategoryid">
<MTEntries>
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</mt:if>
</MTCategories>
</ul>
</dd>
3.2 MTParentCategories タグを使う(その1)
これは後から気がついたのですが、MTParentCategories タグを使い、ブログ記事のメインカテゴリーの親カテゴリーを取得すれば、3.1項と同じことができます。
<MTParentCategories glue="/" setvar="entrycategories"><$MTCategoryLabel$></MTParentCategories>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTCategories>
<MTParentCategories glue="/" setvar="currententrycategories"><$MTCategoryLabel$></MTParentCategories>
<mt:if name="currententrycategories" eq="$entrycategories">
<MTEntries>
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</mt:if>
</MTCategories>
</ul>
</dd>
MTParentCategories のカテゴリーのセパレータには "/"、また MTSetvarBlock タグの代わりに setvar モディファイアを利用しています。
3.3 MTParentCategories タグを使う(その2)
こちらは、MTEntries タグに category モディファイアを与えて、とりあえず自カテゴリーで絞り込んでから親カテゴリーと比較します。
<mt:setvarblock name="entrycategory"><$MTEntryCategory$></mt:setvarblock>
<MTParentCategories glue="/" setvar="entrycategories"><$MTCategoryLabel$></MTParentCategories>
<dt class="sidetitle">
Entries of this Category
</dt>
<dd class="side">
<ul>
<MTEntries category="$entrycategory">
<MTParentCategories glue="/" setvar="currententrycategories"><$MTCategoryLabel$></MTParentCategories>
<mt:if name="currententrycategories" eq="$entrycategories">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</mt:if>
</MTEntries>
</ul>
</dd>
2008.02.25
3.3項を追加しました。
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その2)
- Movable Type 4 でカテゴリー別にブログ記事ページのデザインを切り替える方法(その1)
- ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する
- ブログ記事の入力フィールドに初期値を設定するプラグイン
- トップページの最新記事に 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 要素を記述する時の注意
- エントリー・アーカイブで親カテゴリーに含まれる全エントリーをサブカテゴリー別に表示

