月送りカレンダー・1日に表示されなくなる不具合を改善

月送りカレンダー・1日に表示されなくなる不具合を改善

Posted at June 5,2005 9:31 PM
Tag:[Bug, Calendar, Customize, MovableType, PHP]

月送りカレンダーには、毎月1日にエントリーが投稿されてない状態でコメントまたはトラックバックを受信すると、カレンダーが表示されない(「404 Not Found」が表示)という既知の不具合があります。このようになる原因は次の通りです。

例えばメインページは、コメントまたはトラックバックの受信を契機に全ての情報が再構築されます。その際、メインページに埋め込まれている月送りカレンダー表示用の iframe タグ

<iframe name="cal-iframe" src="<$MTBlogURL$>archives/calendar/<$MTDate format="%Y/%m/index" $>.php" ...(中略)... marginheight="0"></iframe>

にある MTDate(赤色)も更新され、新しい月が設定されることになります。ただしパスが示す先には新しい月のカレンダーが生成されていないため、結果的に「404 Not Found」となります。

新しい月のカレンダーはエントリー投稿によって生成されますので、この不具合を避けるためには、1日になると同時にエントリーするか、事前に次月の日付でテストエントリーを投稿し、即削除します(生成されたカレンダーは削除されません)。
で、月初めにこのエラーが出る度に「来月こそ早めにテストエントリーを」と固く誓うのですが、日が経つと忘れてしまい、同じ失敗の繰り返しです。そもそも力任せな解消方法なのが不本意です。

ということで解消方法です。以前はPHPによる対処を掲載していましたが、The blog of H.Fujimoto さんに MTタグによる解消方法を教えて頂きましたので(コメント No.22)、それをそのまま使わせて頂きます。

1.テンプレート修正

iframe タグの src 属性を下記のように変更します。これで常に最新エントリーの最終月を取得することができますので、1日にカレンダーが表示されなくなる不具合が解消します。

<iframe name="cal-iframe" src="<$MTBlogURL$>archives/calendar/<MTEntries lastn="1" sord_order="descend"><$MTEntryDate format="%Y/%m/index" $></MTEntries>.php" ...(中略)... marginheight="0"></iframe>

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


トラックバック

毎月1日に慌ててエントリしなくていい月送りカレンダー from やむやむ
小粋空間 さん 「月送りカレンダー・1日に表示されなくなる不具合を改善」 を拝読... [続きを読む]

Tracked on June 6, 2005 10:36 AM

月送りカレンダーの不具合解消 from grumble
やりましたね?yujiroさん♪(゚▽^*)ノ⌒☆ やっと1日に「404 Not... [続きを読む]

Tracked on June 6, 2005 5:10 PM

月送りカレンダー・・・月初めの???を解消! from TOY COZY MUSEUM 別館
何もエントリーしないまま新しい月を迎えると、カレンダー部分に“Not Found”というエラー表示になっていました。デイ... [続きを読む]

Tracked on June 7, 2005 2:15 AM

月送りカレンダーの不具合を改善 from Luna's*PaPa
以前のエントリー月送りカレンダー(横型・リアルタイム版)設置で無事に設置できていたカレンダーですが、この度、小粋空間さんが不具合を改善する方法をエントリーされて... [続きを読む]

Tracked on June 7, 2005 10:23 AM

カレンダーの自動生成 from SWEET WATER Web Server
今までの月送りカレンダーの弱点。 「月が変わる日にエントリーがないと、コメントや... [続きを読む]

Tracked on June 7, 2005 6:25 PM

カレンダーの不具合を改善。 from :: monamona* ::
こないだ設置したカレンダーの不具合改善対策が出ているという事で 早速実施。 見た目には変わってないけど・・・ 月が変わったときにエラーが出ていたらしいが、今のと... [続きを読む]

Tracked on June 8, 2005 11:41 PM

月めくりカレンダーphp版 from あやの雑記
月めくりカレンダーのphp版です。 新しい月になったとき、その月の記事がないまま... [続きを読む]

Tracked on June 20, 2005 10:37 PM

「月送りカレンダー」の改善 from Sealion's Weblog
 メイン画面右上に表示されている「月送りカレンダー」ですが、月が変わってから新規... [続きを読む]

Tracked on July 1, 2005 6:35 PM

月送りカレンダー from blog:ponpon-village.net
月も替わり、7月となりました。 ふとカレンダーを見ると、7月が表示されているのだ... [続きを読む]

Tracked on July 4, 2005 12:40 AM

[喜] 月送りカレンダー・1日にちゃんと表示させよ! from 喜怒哀楽
5月1日にトップにカレンダーが表示されません。 過去に、このようなエントリーをし... [続きを読む]

Tracked on July 4, 2005 11:03 AM

月送りカレンダーの不具合を修正 from 気ままなコメント
月送りカレンダーにてその月のエントリーがない状態で コメント、トラックバックを受信すると、カレンダーが表示されなくなっていました。 [続きを読む]

Tracked on September 4, 2005 3:39 PM

9月 from うだうだうだ
もう9月ですか、2005年入って4分の3年が過ぎたわけですね・・・。... [続きを読む]

Tracked on September 15, 2005 11:17 PM

MTでカレンダーを自動更新するには from たかネット
MTが提供するカレンダーは、サイトの再構築が行われない限り、 MTCalenda... [続きを読む]

Tracked on November 11, 2005 11:10 PM

月めくりカレンダーが月初めにNotFound404になってしまう問題を解決 from 一体どうなんでしょう
小粋空間さんのトコに行ったら、... [続きを読む]

Tracked on October 1, 2006 7:44 PM

月送りカレンダー。 from Melodies of Pianoman
遅まきながら、毎月1日にエントリが投稿されていないと、 月送りカレンダーが表示さ... [続きを読む]

Tracked on August 20, 2007 8:39 PM
コメント

おはようございます。なんだかコンガラガッテわけがわからなくなったのですが、
ぴぃかぶぅは PHP化してないのに 月送りカレンダーにできてます。
これと、今回の「カスタマイズ対象のテンプレートファイルの拡張子が .php になっていることが前提」
っていうのとは、別物なんですよね?ひょっとして的外れなこと聞いてますか?
やむやむの方だけ、毎月1日に慌てて新しいエントリしなくてもいいようにしておきました。
カレンダーがちゃんと表示されてるので、たぶんOKだと思います。

[1] Posted by さえら : June 6, 2005 10:13 AM

>さえらさん
こんばんは。
早速のご利用ありがとうございます。

ご質問の件ですが、「別物」で正解です。例えば index.html でも月送りカレンダーは利用できるのですが、今回は index.html 自体にPHPスクリプトを埋め込みますので、index.php に変更する必要があります(説明が難しいですが、iframe を利用してPHPファイルを表示させる場合、呼び出し元のファイル(つまり index.html)はPHPでなくても問題ないのです)。

話を戻しまして、カレンダーが表示されていればOKです。
一応自宅のPCで何回も動作確認しましたが、あとは月初めにこのカスタマイズのバグが出ないことを祈ってます。(笑)

[2] Posted by yujiro : June 6, 2005 11:11 PM

こんばんは。
早速変更させていただきました。有り難うございます。来月を迎える真夜中を楽しみにしてます(笑)。

[3] Posted by toycozy : June 7, 2005 2:24 AM

こんばんわ?

おおっ!
以前から気になっていた「月が変わった時にエントリーがないと修正等が入ってもあくまでエントリーしないと自動的にカレンダーが作成されない問題(長いΣ('◇'*))」が改善できるのですね♪

いつもながらタイムリーなエントリー!挑戦してみます♪

[4] Posted by WIND : June 7, 2005 3:00 AM

おはようございます。月送りに リアルタイムもくっ付けてます。
ここまでは、index.htmlでもOKってことなんですよね?ぴぃかぶぅで 正常に動いてるから・・・
意味もよくわからずカスタマイズしてることも多いので、
何段階かに分けて手を加えると、なにがなんだかわかんなくなったりするんです、
修行が足りませぬなぁ。。。。┐( ̄ー ̄)┌

[5] Posted by さえら : June 7, 2005 5:51 AM

おはようございます。

1日に表示されなくなる不具合が改善されたのですかー!
嬉しいですぅ!

カスタマイズは、来月1日に皆さんのブログを確認後、挑戦させていただきたいと思います(笑)
慎重なミッチで申し訳ありませんー。

またその時は改めてエントリー等させていただきます。

よろしくお願いいたしまっす!

[6] Posted by ミッチ : June 7, 2005 6:05 AM

おはようございます。
改善方法、早速修正させていただきました。
いつもありがとうございます^^

来月0時過ぎ、ドキドキしながら自分のブログ観察してみたいと思います♪

[7] Posted by Miray : June 7, 2005 6:41 AM

おはようございます。
早速月送りカレンダーの不具合を修正してみました。
見た目に変化がないので、本当にできてるかどうか不安ですが・・・(;´Д`)

[8] Posted by Take : June 7, 2005 10:26 AM

はじめまして。
カレンダーを1行にすることも含め、参考にさせていただきました。ありがとうございます。

[9] Posted by mueru : June 7, 2005 3:25 PM

>toycozyさん
こんばんは。
ご利用ありがとうございます。
一人失敗したら全員失敗という可能性も。(笑)

>WINDさん
こんばんは。
ご利用ありがとうございます。
パス変更されていたようですが、うまくできたようでよかったです!

>さえらさん
こんばんは。
どういたしまして。
私はかなり訳がわからなくなっています(笑)。

>ミッチさん
こんばんは。
コメントありがとうございます。
それではまたのご利用お待ち申し上げます。(笑)

>Mirayさん
こんばんは。
ご利用ありがとうございます。
ちなみに月跨りで表示できなくなったら私のせいです(笑)。
結構プレッシャーだったりします(笑)。

>Takeさん
こんばんは。
ご利用ありがとうございます。
正常に表示できていれば8割成功です(意味不明)。あとは運を天に任せましょう!

>mueruさん
はじめまして。
ご利用ありがとうございます。
本カスタマイズで不具合ありましたらご連絡ください。
それでは今後ともよろしくお願い致します。

[10] Posted by yujiro : June 8, 2005 1:10 AM

mueruからweblogのハンドル名と同じにhayakaに変更した者です。
iframeを使わずにカレンダー及びこの「1日に表示されなくなる不具合を改善」を実現できるやり方はありますか?
あったら教えていただけませんか。よろしくお願いします。

[11] Posted by hayaka : June 10, 2005 2:06 PM

>hayakaさん
こんばんは。

ご質問の件ですが、iframe を使わない方法(横型)はリアルタイムカレンダー(改)の2.3項で実現できます。この場合、月送りはできません。
またこの方法であれば、本記事のカスタマイズは不要です(不具合は発生しません)。

以上です。
それではどうぞよろしくお願い致します。

[12] Posted by yujiro : June 10, 2005 10:32 PM

ちゃんと探さなくてすみません。
ありがとうございます。
お手数をおかけしました。やってみます。

[13] Posted by hayaka : June 11, 2005 2:39 PM

>hayakaさん
こんばんは。
ご連絡ありがとうございました。
ではでは!

[14] Posted by yujiro : June 12, 2005 12:06 AM

リアルタイムカレンダー(改)で実現できました。
メインページにしかカレンダーを表示していないのでこの内容で十分でした。
ありがとうございます。

[15] Posted by hayaka : June 12, 2005 1:31 PM

>hayakaさん
こんばんは。
ご連絡ありがとうございました。
ではでは!

[16] Posted by yujiro : June 12, 2005 11:42 PM

参考にさせていただき月変わりしましたが、無事動作しているようです。ありがとうございました。

[17] Posted by sealion : July 1, 2005 6:37 PM

yujiroさん、*オメデトーゴザイマス♪c(*゚ー^)ノ*・'゚☆。.:*:・'☆'・:*:.。.:*:・'゚:*:・'゚☆キラキラ
無事エントリーしなくても1日に表示されました。
ご報告まで。

[18] Posted by やむ : July 1, 2005 10:55 PM

>sealionさん
こんばんは。
ご連絡ありがとうございました。
密かにドキドキしてましたが無事に効いたようで良かったです。

>やむさん
こんばんは。
コメントありがとうございました。
これで毎月1日が楽になりますね。

[19] Posted by yujiro : July 2, 2005 2:15 AM

yujiroさん、お久しぶりですv

うちも、ようやくこちらの改善策を導入しましたー。
多分、成功と思われます(笑)

記事の紹介とTBも打たせて頂きました。

ありがとうございましたー

[20] Posted by ミッチ : July 4, 2005 11:20 AM

>ミッチさん
こんばんは。
ご利用&トラックバックありがとうございます。

7/1が無事に過ぎてよかったです(笑)。

[21] Posted by yujiro : July 5, 2005 1:18 AM

こんにちは。

最後のエントリーの月のカレンダーを表示するのであれば、PHPを使わなくても、テンプレートタグを組み合わせて、src属性を以下のようにすれば良いのではないかと思います。

src="<$MTBlogURL$>archives/calendar/<MTEntries lastn="1" sord_order="descend"><$MTEntryDate format="%Y/%m/index" $></MTEntries>.php"

[22] Posted by : August 5, 2005 4:48 PM

>壱さん
こんばんは。
なるほど、そういう手がありましたか。

アドバイスありがとうございます!

[23] Posted by yujiro : August 6, 2005 12:45 AM

こんにちは。
いつもお世話になっております。
固定3カラムのテンプレートと月送りリアルタイム(横型)カレンダーを利用させていただいております、sleepyといいます。

今日9月1日に、エントリーがない状態でコメントを受信して、カレンダーが表示されなくなってしまいました(^^;。当記事の件を知らなかったものですから、最初は月送りカレンダー(横型)を入れなおしたりしていたのですが、いろいろ見ていたら、当記事を発見して、ほっとして処理しました。しかし・・・訂正されません(T^T)。相変わらず、「404 Not Found」が表示されてしまいます。これは、いったんこのような不具合が発生してしまったら、次の日になるまでと反映されないものなのでしょうか・・・。

それから、関連性のある問題なのかはわかりませんが、突然「個別エントリーアーカイブ」だけ突然再構築できなくなってしまいました。ほかのはできるのですが、「個別エントリー」を再構築すると、「サーバーがみつかりません。ページを表示できません」となってしまいます。もし、このような不具合について何かご存知でしたら、アドバイスいただけますと大変ありがたく存じます。よろしくお願いします・・・。

[24] Posted by sleepy : September 1, 2005 10:18 AM

>sleepyさん
こんにちは。
こちらこそお世話になります。

ご質問の件ですが、現在メインページのファイル名は index.php になっていると思いますが、ローカル・サイト・パスにある index.html に優先的にアクセスしてしまっているようです(これはレンタルサーバの仕様です)ので、index.html を削除してあげれば(index.php が)正常に表示されると思います。

なお、個別エントリーアーカイブ再構築の件は、500エラーでしたら、おそらくサーバの負荷によって発生するようです(再構築のタイムアウト・エラー)。
ということで、mt.cfg にある個別エントリーアーカイブ再構築単位

# EntriesPerRebuild 40

EntriesPerRebuild 20

等に変更されると症状が改善される可能性があります(再構築単位を40から20に減らして応答を早くするという策です)。行頭の「#」と半角空白は削除してください。
サーバの性能に依存するので時間帯(夜間等)によって発生することが多いようです。
問題内容の解釈が誤っていたらお許しください。

以上です。

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

[25] Posted by yujiro : September 1, 2005 10:58 AM

>yujiroさん

早速のお返事、ありがとうございました!!
おっしゃるとおり、index.htmを削除したら、うまくゆきました。ほかのアーカイブテンプレートなども、上記のページで.phpに変更したら、うまく作動しました。ただ、個別エントリーだけは変更方法がわからなかったのですが・・・。

個別エントリーアーカイブ再構築の件も、こちらのサイトの過去ログで検索して見つけたのですが、そちらに書かれてあった解決用プラグインは3.171-jaバージョンでは作動しないようだったので導入をあきらめ、yujiroさんの上記アドバイスにしたがって変更してみたら、なんとか再構築するようになりました。でも、データベース(MySQL)の使用経験はないため、とりあえずこのまま運行させることに・・。将来的には、容量が大きいFC2ブログなどに、過去ログを移行させるなどして、サーバー負荷を軽減するしかないかもしれませんね。(^^;

取り急ぎ、お礼まで!(^^)
これからもどうぞよろしくお願いいたします!

[26] Posted by sleepy : September 1, 2005 2:47 PM

まずはメインページだけで、この月送りカレンダーが1日表示しなくなる件の修正を上記の例の通りに行ってみたのですが・・・

上記のPHPスクリプトでは、/×××/archives/calendar/年/月/index.phpファイルが存在しない場合は、カレンダーが表示されないですよね。

それではと、/×××/archives/calendar/年/月/index.htmlファイルをindex.php名前を変更すると、カレンダーは表示されるのですが、月送りができません。

なので/×××/archives/calendar/年/月/index.htmlファイルは、そのままにして、月送りカレンダーのときに設定した、アーカイブの設定画面で、Calendarテンプレートの拡張子をphpにして再構築してみました。
そうすると、/×××/archives/calendar/年/月/ディレクトリには、index.htmlとindex.phpの両方できるので、8月以前の月に関しては月送りできるのですが、9月1日の記事を作成すると、8月から9月への月送りのリンクが表示されません。

・/×××/archives/calendar/年/月/ディレクトリの下には、index.htmlとindex.phpの両方必要なんでしょうか?

・アーカイブの設定画面で、Calendarテンプレートの拡張子をphpにする必要はあるのでしょうか?

・カレンダーテンプレートの<MTArchivePrevious>タグと<MTArchiveNext>タグ内にあるリンク先の拡張子はhtmlからphpにするに必要があるのでしょうか?

よくしくみを分からないまま修正しているので(^^;的外れなこともあるかと思いますが、うまくいく設定方法を教えてくださいm(_ _)m

[27] Posted by Minako : September 1, 2005 5:37 PM

ちゃんと質問の文字が表示されてなかったので、訂正します。

・カレンダーテンプレートのタグとタグ内にあるリンク先の拡張子はhtmlからphpにするに必要があるのでしょうか?

・CalendarテンプレートのMTArchivePreviousタグとMTArchiveNextタグ内にあるリンク先の拡張子はhtmlからphpにするに必要があるのでしょうか?

[28] Posted by Minako : September 1, 2005 5:41 PM

>sleepyさん
ご連絡ありがとうございました。
個別エントリーアーカイブの拡張子を php に変更する方法は「管理メニュー」の「ウェブログの設定」をクリックし右上の「アーカイブの設定」をクリックします。次ページ下の「個別」欄の「アーカイブ・ファイルのテンプレート」に、

<$MTEntryID pad="1"$>.php

を設定し、保存・再構築すれば同じディレクトリに .php ファイルが生成されます。個別エントリーアーカイブはURLにファイル名まで指定する筈ですので、旧ファイルを削除しなくてもので大丈夫だと思います。

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

>Minakoさん
こんばんは。
ご利用ありがとうございます。
ご質問の件ですが、前提として月送りカレンダーは通常版とリアルタイム版があり、前者はカレンダー用ファイルの拡張子は .html 後者は .php です。

それを踏まえてお答えします。

>index.htmlとindex.phpの両方必要なんでしょうか?

どちらか片方で結構です。ただしファイル名を index.html から index.php に変更された場合は、index.html を削除してください(サーバの仕様で .html という拡張子を優先して表示します)。

>Calendarテンプレートの拡張子をphpにする必要はあるのでしょうか?

リアルタイムカレンダーであれば php になっている必要がありますが、通常の月送りカレンダーであれば変更は不要です。この記事がリアルタイムカレンダーを前提に書いてしまっているのでその部分については不足していました。すいません。

>タグ内にあるリンク先の拡張子はhtmlからphpにするに必要があるのでしょうか?

カレンダーファイルの拡張子にあわせてください。
php に変更された場合はこの部分も変更する必要があります。

まとめると以下のようになります。

メインページ等の拡張子:php
カレンダーファイルの拡張子:
  通常カレンダー:html
  リアルタイムカレンダー:php

本文でPHPに変更と書いてあるのはメインページ・カテゴリーアーカイブ・日付アーカイブ・個別エントリーアーカイブを指しています。

なお、上のコメントの8/5の壱さんの方法でも可能です。

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

[29] Posted by yujiro : September 3, 2005 1:54 AM

お返事、ありがとうございました!
個別エントリーの月送りカレンダー表示の件も、yujiroさんのご指示とおりに設定して、うまく表示されるようになりました。感謝感激です(^^)。

これからもどうぞよろしくお願いいたします。

[30] Posted by sleepy : September 4, 2005 7:09 PM

>sleepyさん
こんにちは。
ご連絡ありがとうございました。
うまくできたようで良かったです。

こちらこそ今後ともどうぞよろしくお願い致します。

[31] Posted by yujiro : September 5, 2005 3:21 PM

カレンダーが表示されなくなり、修正を試みましたがやはり表示されませんでした。
こちらの修正箇所などが違っていたのでしょうか?
分からないため、おしえていただけないでしょうか?

[32] Posted by 25hours : May 21, 2007 1:11 AM

>25hoursさん
こんにちは。
ご質問の件ですが、カレンダーを表示する iframe の src 属性(=カレンダーを表示するURL)が
http://25hours.jp/archives/calendar/2007/05/index.index
となっています。
拡張子が適正でないようですので、ここに対応する部分を修正すれば表示されるかもしれません。

なお修正例はタグの最後の方に ".php" とありますが、25hours さんの場合は、この部分を ".html" にしてください。
それではよろしくお願い致します。

[33] Posted by yujiro : May 22, 2007 4:56 PM

index.index になっていたとは気づきませんでした。
直したところ、きちんと表示されているようです。
どうもありがとうございました。

[34] Posted by 25hours : May 22, 2007 11:08 PM

>25hoursさん
こんにちは。
ご連絡ありがとうございました。
無事に直ったようで良かったです。
ではでは!

[35] Posted by yujiro : May 24, 2007 10:13 AM
コメントする
greeting

*必須

*必須(非表示)


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

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

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

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