複数ブログで Ajax 月送りカレンダーを利用する方法

複数ブログで Ajax 月送りカレンダーを利用する方法

Posted at March 9,2007 1:28 AM
Tag:[Ajax, Calendar, Customize, MovableType]

Ajax 月送りカレンダー」を複数ブログで利用している場合の変更方法です。

2007.03.20 この方法は元記事に反映しました。

月送りカレンダーは表示月を cookie で保存することで、リロードや次回のブラウザ起動時に前回と同じ月を表示するようにしていますが、複数ブログで利用した場合、同じ cookie データ(=カレンダーの表示年月)にアクセスしてしまうため、一方のブログがもう一方のブログの表示年月を取得してしまう可能性があります。

仮に、ブログAに2007年3月(のエントリー)があり、ブログBにはその月のエントリーが存在しない場合、ブログBの表示でブログAの「2007年3月」という cookie データを取得した場合、ブログBではカレンダーが正常に表示されないという不具合が生じます。

ということで、とりあえずテーブル型カレンダーで複数ブログに対応するためのカスタマイズを紹介します。ここでは「Ajax 月送りカレンダー」との差分のみ説明します。

1.スクリプトのダウンロード・アップロード

下記のリンクより ajaxCalendar.js をダウンロードしてください。

ajaxCalendar.js

このファイルを編集する必要はありませんので、そのままメインページと同じディレクトリにアップロードしてください。

4.2 カレンダー表示部分の設定

カレンダーを表示させたい位置に下記を追加します。
これまでと異なり、パラメータに MTBlogURL と MTBlogID を渡しています。cookie は MTBlogID を付与して保存するようにしているので、他のブログの cookie を取得することはありません。

<div id="calendar"></div>
<script type="text/javascript">
getCalendar("<$MTBlogURL$>", "<$MTBlogID$>", "<$MTBlogURL$><MTEntries lastn="1" sort_order="descend"><$MTEntryDate format="calendar/%Y/%m/" $></MTEntries>");
</script>

アーカイブパス(3.2 以降であれば管理画面の「設定」→「公開」→「アーカイブの設定」)を設定している場合は、上記リストの赤色部分を修正します。
例えば archives というアーカイブパスを設定している場合は下記のようにします。

getCalendar("<$MTBlogURL$>archives/", "<$MTBlogID$>", "<$MTBlogURL$><MTEntries lastn="1" sort_order="descend"><$MTEntryDate format="archives/calendar/%Y/%m/" $></MTEntries>");

以上です。

2007.03.21 追記
元記事の「Ajax 月送りカレンダー」に本カスタマイズを反映させました。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


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

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

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

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