カレンダーの不具合 (毎月1日に404 error)

スポンサーリンク

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

というエントリーが小粋空間にもあるように、月初になるとカレンダーが表示されないという不具合をしっかりと体験しました。なぜそうなるのかという理由は、そちらを参照していただければわかりますが、これをどうにかしようとするならば

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

結構無理矢理です。(笑)

そこでその不具合を直すため、PHPを使用する方法が書かれているのでその通りにしてみたのですが、どうしてもどうしてもうまくいきません。phpファイルにアクセスすると「Parse error」(文法的に致命的欠陥がある)というエラーが出ます。

PHPでスクリプトに文法エラーがあると、

PHP Parse error: parse error, unexpected T_STRING in Command line code on line 1

なんて、エラーメッセージが出されます。 ここで、T_STRINGとは何かって疑問があるようなので、ちょっと取り纏めてみます。このエラーについては、PHPの整理とは無縁なメモ書きに書かれています。

PHPでスクリプトに文法エラーがあると、

PHP Parse error: parse error, unexpected T_STRING in Command line code on line 1

なんて、エラーメッセージが出されます。 ここで、T_STRINGとは何かって疑問があるようなので、ちょっと取り纏めてみます。

 そもそもこれは何?
PHPが吐いているエラーメッセージです。入力されたPHPスクリプトに、文法エラーがある時に出されます。
parse errorというのは「文法的に間違っているよ」というエラーになります。 unexpected XXXXというのは、XXXXがあるけどそれはここにあってはいけないよ、って意味なのですが、困ったことにXXXXで示されているものはPHPの内部での表現であって、スクリプトでの表現とは違っていることです。 詳しくは後述します。
どこにエラーがあるの?
line XXXXと書かれた付近にあります。 しかし、必ずXXXX行目にあるというものではありません。 このエラーメッセージは、「XXXX行目を処理している時に構文エラーが検出されました」ということではありますが、このXXXX行目を直すのが正しいとは限らないのです。

 私の場合は、on line 1で、明らかにパスがおかしい、と出ているのですがそのパスの設定はMTの「公開」設定でしている絶対パスと全く同じなのに、なぜエラーがでるのかがわからない…。困った…これはもう無理矢理毎月テストエントリーをするしかないのか…と諦めていたのですが、コメント部分にH.Fujimoto氏(「「ブログ簡単パワーアップ Movable Type スーパーカスタマイズテクニック」の著者の方だったとは!)が

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

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

と書いておられて、それを早速試してみました。すると最後のエントリーの月のカレンダーが表示されるようになりました。簡単に出来るので、php化が出来ない人はこちらの方法を試してみましょう。

スポンサーリンク
NO IMAGE
この記事をお届けした
sorariumの最新ニュース情報を、
いいねしてチェックしよう!

シェアする