HOME > ETC. > STARTING OVER日記。 > 2007年06月01日

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使いたくないので、これはそのうちやってみようと思ってますが。)

ま、なんにしても無事表示できてよかったです。

…というわけで、おぼえがき。