top

カレンダーを追加する(3.2版 ダイナミック用)

こちらでカレンダーを追加しましたが、この例の基本形のままでは3.2の動的頁でリンクが正常に生成されません。3.2のダイナミック・パブリッシングでカレンダーを正常生成させるためには、カレンダーの日付から飛ぶリンク先を<$MTEntryPermalink$>ではなく、頁のアドレスを直接記入すればいいことがネットの情報から分かりました。

ただ、その方法では何故か私の環境では上手く動作しないようです。いろいろ試した結果、個別頁へのリンクURLはアーカイブマッピングで定めた<$MTArchiveDate$>でhttp://からしっかり指定すること、<MTEntries>は残しておかないといけない、ただし lastn="1"があると動作がおかしくなる、ということが判明。そこでこれらの条件を満たすダイナミック・パブリッシング用のカレンダータグを考えてみました。以下に覚え書きを載せておきます。

■下準備
ダイナミック下ではカレンダータグ内で<MTEntries>に lastn="1"属性が付くと全部同じ頁へのリンクになってしまいます。しかし lastn="1"を取ってしまうと、リンクは正常生成される代わりに、同じ日に複数投稿があった場合は 1 2 3 3 3 4 …みたいにエントリーの数だけ数字が増えてしまうので見た目が崩れます(^^;。

で、その回避策ですが、リンクの飛ぶ先を個別頁ではなく、日別頁に変更します。ダイナミックならアーカイブが増えても問題ないので、「設定」から「アーカイブマッピング」へ進み、日別アーカイブを使う設定にし、リンクURLも定めておきます。ここでは日別頁のアドレスをアーカイブマッピングで<$MTArchiveDate format="%Y%m%d"$>.htmlと定めたものとして進めます。

■カレンダーの設置

1.以下の記述をカレンダーを表示させたい箇所に追加します。

<div class="module-calendar module">
<h2 class="module-header">カレンダー</h2>
<div class="module-content">
<table summary="投稿されたエントリーへのリンク付き月間カレンダー">
<caption><$MTDate format="%B %Y"$></caption>
<tr>
<th abbr="日曜日">日</th>
<th abbr="月曜日">月</th>
<th abbr="火曜日">火</th>
<th abbr="水曜日">水</th>
<th abbr="木曜日">木</th>
<th abbr="金曜日">金</th>
<th abbr="土曜日">土</th>
</tr>
<MTCalendar>
<MTCalendarWeekHeader><tr></MTCalendarWeekHeader>
<td><MTCalendarIfEntries><MTEntries><MTDateHeader>
<a  href="<$MTBlogArchiveURL$><$MTArchiveDate  format="%Y%m%d"$>.html" title="</MTDateHeader>[<$MTEntryTitle$>]<MTDateFooter>">
<$MTCalendarDay$></a>
</MTDateFooter>
</MTEntries></MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
<MTCalendarIfBlank>&nbsp;</MTCalendarIfBlank></td>
<MTCalendarWeekFooter></tr></MTCalendarWeekFooter>
</MTCalendar>
</table>
</div></div>

赤字の部分が日別頁へのリンクURLになります。http://~からの指定になるよう、<$MTBlogArchiveURL$>を使ってフルアドレスで書き出します。

2.スタイルシート

…は静的生成版と同じなので、好きに飾ってやって下さい~。

.module-calendar table { width: 100%; }
.module-calendar caption { }
.module-calendar th { }
.module-calendar td { }

私の環境ではこれで正常にカレンダーがダイナミック生成できることを確認しています。これで駄目だよ?という方は上のリンク先の方法なども試してみて下さい。