Movable Type で1日午前0時のエントリーがカレンダーに反映されない不具合について

Movable Type で1日午前0時のエントリーがカレンダーに反映されない不具合について

Posted at April 4,2006 12:30 AM
Tag:[Calendar, MovableType, TroubleShooting]

「1日のエントリーがカレンダーに反映されませんというご質問を頂いて」調べたところ、エントリーの投稿日を1日の00時00分00秒で保存した場合、カレンダーに該当エントリーのリンクが反映されないことが判明しました。月末の23時59分59秒についても同様のようです。

コードを調査したところ、カレンダーの生成を行っているのは

lib/MT/Template/ContextHandlers.pm

にある _hdlr_calendar で、1ヶ月分のエントリーを取得する処理で該当の投稿日のエントリーだけ除外されてしまうのが原因です。これについては Movable Tyep 3.0 から発生していた現象のようです。

この不具合を解消するには、1日の投稿日に00時00分00秒、月末の投稿日に23時59分59秒を用いないか、下記のパッチをあててください。

--- lib\MT\Template\ContextHandlers.pm.bak      Tue Oct 11 16:47:22 2005
+++ lib\MT\Template\ContextHandlers.pm  Tue Apr 04 09:40:46 2006
@@ -2459,7 +2459,7 @@
     my $iter = MT::Entry->load_iter({ blog_id => $blog_id,
                                       created_on => [ $start, $end ],
                                       status => MT::Entry::RELEASE() },
-        { range => { created_on => 1 },
+        { range_incl => { created_on => 1 },
           'sort' => 'created_on',
           direction => 'ascend', });
     my @left;

上記のパッチは安直な発想ですので、適正な修正方法がございましたら情報お待ち申し上げます。Ogawa::memoranda さんのご指摘を頂きましたのでパッチを差し替えました。ありがとうございました。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

月初だけでなく月末も同じ問題があります。

$start - 1にするのではなく、以下のように修正すると「$start以上$end以下」のcreated_onを持つエントリーをload_iterできます。

-{ range => { created_on => 1 },
+{ range_incl => { created_on => 1 },

[1] Posted by (o) : April 4, 2006 1:57 AM

>(o)さん
こんにちは。
ご無沙汰しております。
アドバイスありがとうございました!

[2] Posted by yujiro : April 4, 2006 12:58 PM
コメントする
greeting

*必須

*必須(非表示)


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

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

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

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