TopMovable Typeカスタマイズ新着表示 > 新着エントリーの New マークを親カテゴリーに表示する
News
各種ブログテンプレート
2006年2月28日

エントリー本文

新着エントリーの New マークを親カテゴリーに表示する

Posted at February 28,2006 2:22 AM
Category:[新着表示]
Tag:[, , , , ]

新着エントリーの New マークを親カテゴリーに表示する先日エントリーした「新着エントリーに New マークをつける」で「サブカテゴリーリストを折りたたんだ状態で親カテゴリーにもNewマークを表示させたい」というご要望をいただきましたので、本エントリーにてご紹介します。
このカスタマイズを行うことで、スクリーンショットのように子カテゴリー [Linux] を新規エントリーした際、最上位の親カテゴリー [趣味] にも New マークを表示します(折りたたみマークは割愛)。

以下、カスタマイズ方法です。

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') {
        if (spans[i].childNodes[0]) {
            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
記事を全面修正しました。

2009.01.06
スクリプトを修正しました。

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


コメント

早速の対応、ありがとうございます!

ですが・・・
なぜか親カテゴリーに表示されないのです(T△T)
記事のとおりにしているつもりなのですが・・・。

折りたたみ・ツリー化・親カテゴリーに合計数表示を全部使っているのですが
これがいけないのかと思い、
記事内の「2.2階層のみのサブカテゴリー構成の場合」を全部コピー&ペーストしてみても
親カテゴリーにnewがつかないのです( ノД`)シクシク…

もしよろしければ、考えられる原因を教えていただけないでしょうか?
お手数をおかけしてしまって、申し訳ありません・・・

[1] Posted by ちゅん : February 28, 2006 5:00 PM

ありがとうございました!
修正版のタグで無事に表示されました!

いろいろお手数をかけてしまってすいませんでした。

[2] Posted by ちゅん : February 28, 2006 9:26 PM

>ちゅんさん
こんばんは。
いえいえ、確認不足ですいませんでした。
無事にできてよかったです。
ではでは!

[3] Posted by yujiro : February 28, 2006 11:08 PM

こんにちは^^

何故かこのスプリクトだと 表示されません

トラックバック用のだと 子カテゴリーにだけ 表示されました

色々入れ替えて試してみましたが

原因不明なので お時間ありましたら

教えて頂けると うれしいです

[4] Posted by MELL : August 15, 2006 4:33 PM

>MELLさん
こんばんは。
ご返事遅くなってすいません。
このエントリーの記事を見直しましたので再度設定してみて頂けますでしょうか。
それではよろしくお願い致します。

[5] Posted by yujiro : August 20, 2006 1:26 AM

初めまして、七海と申します。

New表示をさせたくこのスプリクトを使用させていただいたのですが、
MT4.23-ja でウィジットとして使用した場合、カテゴリ月間アーカイブの再構築時に、
Can't call method "id" on unblessed reference
と言ったErrorを吐き出して再構築されません。
Errorを吐き出すのはカテゴリ月間アーカイブのみで、ほかの所ではErrorを吐くことはありません。


なにぶんかなり前の記事ですので申し訳ないのですが、回避する方法があれば教えていただきたいのです。

よろしくお願いします。

[6] Posted by 七海 : December 26, 2008 10:30 PM

>七海さん
こんばんは。
ご返事遅くなってすいません。
MTTopLevelCategories タグの中で MTEntriesWithSubCategories タグを使用するとNGになるようなので、次の部分を変更してください。

変更前

<span><MTEntriesWithSubCategories lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$></MTEntriesWithSubCategories></span>

変更後

<span><MTCategoryLabel setvar="cat"><MTEntries category="$cat" include_subcategories="1" lastn="1"><$MTEntryDate format="%Y:%m:%d:%H:%M:%S"$></MTEntries></span>

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

[7] Posted by yujiro : January 5, 2009 1:16 AM

お忙しい中、回答いただきありがとうございました。

エラーはでなくなったのですが、今度はNewが表示されなくなりました。

クラス指定を外すと更新時間の表示はされるのですが、とすると表示が無くなります。

どうしたらよいでしょう?

よろしくお願いします。

[8] Posted by 七海 : January 5, 2009 11:23 PM

>七海さん
こんばんは。
ブログ記事のないカテゴリーがあると、JavaScript が正常に動作していないようでした。
2.2項のスクリプトを修正しましたのでお試しください。
それではよろしくお願い致します。

[9] Posted by yujiro : January 6, 2009 12:35 AM

何度もすみません。

今度はちゃんと表示できるようになりました。

本当にありがとうございました。

[10] Posted by 七海 : January 6, 2009 3:16 AM

たびたびすみません。

Javaスプリクトの修正を行ったのですが、親カテゴリの方に付くNewマークが、子カテゴリとは無関係の親カテゴリに付いてしまいます。

別の親カテゴリを持つ子カテゴリの記事を同じ日に編集した場合、一番上の親カテゴリのみNewマークが表示され、ほかの親カテゴリには表示されません。

折りたたみを行っているので、その影響でしょうか?

お忙しいところ、何度もすみません。

教えていただけると助かります。

[11] Posted by 七海 : January 13, 2009 4:47 AM

>七海さん
こんにちは。
ご質問の件ですが、事象が発生しているページのURLをお知らせください。
それではよろしくお願い致します。

[12] Posted by yujiro : January 14, 2009 3:01 PM

こんばんは。

http://nf-nanami.com/arekore/
このページです。

よろしくお願いします。

[13] Posted by 七海 : January 14, 2009 10:02 PM

>七海さん
こんにちは。
ページのソースコードだけでは原因が分からないため、ご利用中のテンプレート(該当部分)をメールにてご送付ください。
それではよろしくお願い致します。

[14] Posted by yujiro : January 15, 2009 11:19 AM
コメントする
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 5.02