新着エントリーの New マークを親カテゴリーに表示する
Category:[新着表示]
Tag:[Customize, Entry, MovableType, Sidebar, SubCategory]
以下、カスタマイズ方法です。 |
1.サブカテゴリー構成が2階層の場合
サブカテゴリー構成が2階層の場合、親カテゴリーに子カテゴリーの新着エントリーの日付を反映させることで、New マークを表示させます。ただし New マークは全ての親カテゴリーに反映されるので、3階層以上のカテゴリー構成の場合は2項をご利用ください。
1.1 サブカテゴリーリストの修正
サブカテゴリーリストの折りたたみ用タグ(下記)に青色部分を追加します。
<!-- サブカテゴリー用 -->
<div class="side">
<div id="categories">
<MTTopLevelCategories>
<MTSubCatIsFirst><MTHasParentCategory><div id="subcategories<MTParentCategory><$MTCategoryID$></MTParentCategory>list"></MTHasParentCategory><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>] <span class="new"><MTEntriesWithSubCategories lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$></MTEntriesWithSubCategories></span><MTHasSubCategories></div></MTHasSubCategories>
<MTElse>
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><MTCategoryLabel> <span class="new"><MTEntriesWithSubCategories lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$></MTEntriesWithSubCategories></span>
<MTHasSubCategories></div></MTHasSubCategories>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul><MTHasParentCategory></div></MTHasParentCategory></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</div>
<!-- サブカテゴリー用 -->
1.2 スクリプトの設定・CSSの設定
スクリプトの設定・CSSの設定については新着エントリーに New マークをつけるを参照ください。
2.サブカテゴリー構成が3階層以上の場合
サブカテゴリー構成が3階層以上の場合は、途中の親カテゴリーに New マークを表示させないようにするため、1項とは設定内容が異なります。
2.1 サブカテゴリーリストの修正
サブカテゴリーリストの折りたたみ用タグ(下記)に青色部分を追加してください。
<!-- サブカテゴリー用 -->
<div class="side">
<div id="categories">
<MTTopLevelCategories>
<MTSubCatIsFirst><MTHasParentCategory><div id="subcategories<MTParentCategory><$MTCategoryID$></MTParentCategory>list"></MTHasParentCategory><ul></MTSubCatIsFirst>
<MTIfNonZero tag="MTCategoryCount">
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><a href="<$MTCategoryArchiveLink$>" title="<$MTCategoryDescription$>"><MTCategoryLabel></a> [<$MTCategoryCount$>] <span class="new"><MTEntries lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$>:</MTEntries><MTTopLevelParent><$MTCategoryID$></MTTopLevelParent></span><MTHasSubCategories></div></MTHasSubCategories>
<MTElse>
<li><MTHasSubCategories><div class="subcategories" id="subcategories<$MTCategoryID$>name"></MTHasSubCategories><MTCategoryLabel> <span class="new">00:00:00:00:00:00:<MTTopLevelParent><$MTCategoryID$></MTTopLevelParent></span><MTHasSubCategories></div></MTHasSubCategories>
</MTElse>
</MTIfNonZero>
<MTSubCatsRecurse>
</li>
<MTSubCatIsLast></ul><MTHasParentCategory></div></MTHasParentCategory></MTSubCatIsLast>
</MTTopLevelCategories>
</div>
</div>
<!-- サブカテゴリー用 -->
2.2 スクリプトの追加
下記のスクリプトを2.1項のタグの下に追加してください。
<script type="text/javascript">
<!--
// passage time
var pass = 24;
// display content
var content = 'New!!';
var currentDate = new Date();
var spans = document.getElementById('categories').getElementsByTagName('span');
var list = new Array();
for (i = 0; i < spans.length; i++) {
if(spans[i].getAttribute('class') == 'new' ||
spans[i].getAttribute('className') == 'new') {
time = spans[i].childNodes[0].nodeValue.split(":");
var entryDate = new Date(time[0], time[1]-1, time[2], time[3], time[4], time[5]);
list.push(time[6]);
var now = (entryDate.getTime() - currentDate.getTime())/(60*60*1000);
now = Math.ceil(now);
if(-now <= pass){
spans[i].innerHTML = content;
spans[i].style.display = 'inline';
for(j = 0; j < list.length; j++){
if(list[j] == time[6]){
spans[j].innerHTML = content;
spans[j].style.display = 'inline';
break;
}
}
}
}
}
//-->
</script>
このスクリプトの動作ですが、各カテゴリーの日付の最後に最上位の親カテゴリーIDを予め付与しておき、新着エントリーがあった場合にその親カテゴリーIDのカテゴリーを再検索して、New マークを与えています。
2.3 CSSの設定
CSSの設定については新着エントリーに New マークをつけるを参照ください。
2006.02.28 追記
2.2項、3項でエントリーが存在しない親カテゴリーの考慮がもれていましたのでタグを修正しました。
2006.08.19 追記
記事を全面修正しました。
- 新着表示プラグイン(投稿者情報版) for Serene Bach
- 投稿者情報に New マークをつける
- 新着トラックバックに New マークをつける
- 新着表示プラグイン(最新記事リスト版) for Serene Bach
- 新着表示プラグイン(サブカテゴリーリスト版) for Serene Bach
- New マーク表示カスタマイズ改善のお知らせ
- 新着コメントに New マークをつける
- 新着エントリーのあるカテゴリーに New マークをつける
早速の対応、ありがとうございます!
ですが・・・
なぜか親カテゴリーに表示されないのです(T△T)
記事のとおりにしているつもりなのですが・・・。
折りたたみ・ツリー化・親カテゴリーに合計数表示を全部使っているのですが
これがいけないのかと思い、
記事内の「2.2階層のみのサブカテゴリー構成の場合」を全部コピー&ペーストしてみても
親カテゴリーにnewがつかないのです( ノД`)シクシク…
もしよろしければ、考えられる原因を教えていただけないでしょうか?
お手数をおかけしてしまって、申し訳ありません・・・
ありがとうございました!
修正版のタグで無事に表示されました!
いろいろお手数をかけてしまってすいませんでした。
>ちゅんさん
こんばんは。
いえいえ、確認不足ですいませんでした。
無事にできてよかったです。
ではでは!
こんにちは^^
何故かこのスプリクトだと 表示されません
トラックバック用のだと 子カテゴリーにだけ 表示されました
色々入れ替えて試してみましたが
原因不明なので お時間ありましたら
教えて頂けると うれしいです
>MELLさん
こんばんは。
ご返事遅くなってすいません。
このエントリーの記事を見直しましたので再度設定してみて頂けますでしょうか。
それではよろしくお願い致します。
先日エントリーした「

