STARTING OVER日記。
« 2007年05月30日 |
インデックス
| 2007年06月14日 »
2007年06月01日(金)
以前は趣味(=びくでん)でしか使っていなかったMovableType。
最近仕事で使うようになって気がつくことも多く、ちょこちょことテンプレートを修正しているのですが(多分気づかない程度ですが)、少し前から困っていたのが「カレンダーの表示」。
カレンダーが、月替わりの時に、ある一定の条件にかち合うと表示されなくなるんですね。
カレンダーは別ファイルのものを<iframe>というタグを使って表示させているのですが、その中身を以下のように設定していたんですね。
<iframe name="cal-iframe" src="<$MTBlogURL$>calendar/<$MTDate format="%Y%m"$>.html" frameborder="0" marginwidth="0" marginheight="0" width="160" height="170" title="calendar"></iframe>
これはどこかのサイトから頂いてきたカレンダーのソースなんですけど、そのまま使ってまして。
どういうことかというと、cal-iframeという名前のフレームに、%Y%m.htmlという名前を持つファイルを読み込ませますよー、ということ。
%YはMTで年を4桁で出力、%mはMTで月を2桁で出力するということなので、今月の場合は200706.html。
<$MTDate$>というのは再構築した日時を表示するタグ。
ちなみに<$MTBlogURL$>というのはMTで設定するブログのURLを入れるタグ。
その後のarchiveだとかcalendarだとかはブログURLの下のフォルダ名ね。
そんなわけで。
ブログの再構築=更新された月のカレンダーが自動的に表示されるわけです。
それが、例えば…。
・ブログの最終記入は12/31、その後、コメントが1/1についた
・5/1に4/30の後追い日記を書いた
なんてことになると、更新した月と記入した月にズレが生じ、カレンダーがエラー…。
どうすればいいのかわからないまま放置してたんですが、MovableTypeって更新日じゃなくて、記載日を出力するタグも用意されてまして。
それに気づいたのは仕事で使うようになってから。
で、変更。
<MTEntries lastn="1"><iframe name="cal-iframe" src="<$MTBlogURL$>calendar/<$MTEntryDate format="%Y%m"$>.html" frameborder="0" marginwidth="0" marginheight="0" width="160" height="170"></iframe></MTEntries>
<MTEntries>はブログの記事一覧を出力するタグですが、 lastn="1"をつければ「最新の1つ」。
で、日付の部分を<$MTEntryDate~$>に変更すれば、最新のエントリーの投稿日時になるわけで。
先の日付のエントリーを書くような事さえしなければこれでOKのようです。
…わたしゃ、カレンダーを表示させるためのCGIを組む事も検討していたので、一安心。
(↑いや、本当はiframe使いたくないので、これはそのうちやってみようと思ってますが。)
ま、なんにしても無事表示できてよかったです。
…というわけで、おぼえがき。