TopMovable Typeカスタマイズエントリー > ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)
News
各種ブログテンプレート
2008年2月25日

エントリー本文

ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版・改)

Posted at February 25,2008 2:22 AM
Category:[エントリー, カテゴリー]
Tag:[, , , ]

ブログ記事に同一カテゴリーのブログ記事リストを表示(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"><$MTEntryCategoryID$></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項を追加しました。

Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


コメント

こんばんは。
いつもありがとうございます。
本日4.2の執筆された本をamazonで購入させて頂きました。
明日届くのですが、カスタマイズでその本に記載されていましたらお許しください。

こちらの記事で同じカテゴリの記事をサイドバーに表示させる方法を記載されていますが、同じカテゴリでは無くて同じタグの記事をエントリー欄に表示することは、可能でしょうか?出来るのであれば方法を教えて頂きたいのですが、宜しくお願いいたします。

[1] Posted by kankiti : August 25, 2008 12:21 AM

>kankitiさん
こんばんは。
拙著ご購入ありがとうございます。
ご質問の件は可能です。書籍の447ページ(6.10節)に記載されておりますので、そちらをご確認頂ければ幸いです。
それではよろしくお願い致します。

[2] Posted by yujiro Author Profile Page : August 25, 2008 1:11 AM

こんにちは。
本日本が届きまして6.10節のサンプルテンプレートの01~015を入力しましたが、何も表示されません。

再構築時のエラーも無いのですが、何かやり忘れてるんでしょうか?
お手数おかけしますが、お願いいたします。

[3] Posted by kankiti : August 25, 2008 1:32 PM

>kankitiさん
こんにちは。
ご質問の件ですが、サンプルの、

<mt:entryTags glue=" OR " setvar="tags">
  <mt:tagName />
</mt:entryTags>

の部分は、空白や改行を除去して、

<mt:entryTags glue=" OR " setvar="tags"><mt:tagName /></mt:entryTags>

とされましたでしょうか(書籍に(多分)そのように記載していたと思います)。ご確認頂ければ幸いです。

上記の修正を行うことでサンプルのサブテンプレートが動作することは、改めて確認しております。

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

[4] Posted by yujiro Author Profile Page : August 25, 2008 3:37 PM

はい。下記のように一行で記入しています。
先ほども見直ししたのですが、間違いないと思うのですが・・・

<mt:include module="ブログ記事の詳細" />
</div>
<h3 class="content-header">関連記事</h3>
<div class="content">
<mt:entryTags glue=" OR " setvar="tags"><mt:tagName /></mt:entryTags>
<mt:entries tag="$tags">
  <mt:entriesHeader>
<ul>
  </mt:entriesHeader>
  <li><a href="<mt:entryPermalink valid_html="1" />"><mt:entryTitle encode_html="1" /></a></li>
  <mt:entriesFooter>
</ul>
  </mt:entriesFooter>
</mt:entries>
</div>
<mt:include module="トラックバック" />
 
<mt:include module="コメント" />
[5] Posted by kankiti : August 25, 2008 5:29 PM

すいません。また失敗してしまいました。
申し訳ありません。


先ほどの件ですが、本に書いてあるように1行に直しています。
こちらにUPしていますので見ていただいてよろしいでしょうか?
お手数おかけします。

[6] Posted by kankiti : August 25, 2008 5:47 PM

yujiro様 お手数かけましたが、表示されておりました。
トップページのエントリー下に表示されると思いきってまして(;^_^A アセアセ・・・

それでトップのエントリー下に表示されるようにしたのですが、

・エントリーの日付のような帯をつけたいのです。
・タイトルの前の○マークを画像を使えるようにできますでしょうか?

以上2点宜しくご指導お願い申し上げます。

[7] Posted by kankiti : August 25, 2008 7:56 PM

>kankitiさん
こんにちは。
ご質問の件ですが、スタイルシートに次のような内容を設定すれば大丈夫だと思います(設定値は適宜変更してください)。

.content-header {
    margin-bottom: 5px;
    padding-left: 8px;
    color: #fff;
    background: #ff8c00;
    font-size: 100%;
    font-weight: bold;
    line-height: 2.0;
}
.entry .content ul {
    margin-left: 3px;
    padding-left: 0;
}
.entry .content li {
    list-style: none;
    padding-left: 15px;
    background: url(画像ファイル名) no-repeat 0 5px;
}

書籍のサンプルテンプレートは当ブログで配布しているテンプレートと若干異なりますが、サンプルテンプレート(と6章のカスタマイズ)にはCSSの解説も掲載していますので、可能であればテスト用のブログをひとつ作り、そのブログにサンプルテンプレートを適用して、学んで頂けると幸いです。
それではよろしくお願い致します。

[8] Posted by yujiro Author Profile Page : August 25, 2008 8:39 PM

どうもありがとうございました。

勉強の方も頑張りますが、また宜しくお願いします。

[9] Posted by kankiti : August 25, 2008 10:44 PM
コメントする
greeting

*必須



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

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

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

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

Now loading...
Introduction
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

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

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 4.261