MT5で月送りカレンダーウィジェット作った
お世話になっております、たかおファンです。
今、MovableType 5(正確にはMTO5だけど)で複数のブログを複合したサイト作ってるんすけど、
カレンダーの構築で超苦戦しました。なぜだ。。。
標準でカレンダーウィジェット付いてるけど、なんともお粗末で、
月送り機能や、カレントの月以外の表示ができんのです。WordPressではデフォなのになんでや!
おそらく記事数が増えると再構築のコストが半端無いからでしょうね。
さてそんなことは放っておいてガシガシ組んでみました。
<mt:SetVarTemplate name="calendar">
<div class="lNavisec01 inlineC">
<h3 class="h3_style02">Calendar</h3>
<p class="inlineC mb12 fS"><$mt:ArchiveDate language="en" format="%B %Y"$></p>
<table cellpadding="0" cellspacing="0">
<tr>
<th>M</th>
<th>T</th>
<th>W</th>
<th>T</th>
<th>F</th>
<th>S</th>
<th>S</th>
</tr>
<mt:Calendar month="this">
<mt:CalendarWeekHeader><tr></mt:CalendarWeekHeader>
<td>
<mt:CalendarIfToday><span class="stay"></mt:CalendarIfToday>
<mt:CalendarIfEntries>
<mt:Entries lastn="1"><a href="<$mt:EntryPermalink archive_type="Daily"$>"><$mt:CalendarDay$></a></mt:Entries>
</mt:CalendarIfEntries>
<mt:CalendarIfNoEntries><$mt:CalendarDay$></mt:CalendarIfNoEntries>
<mt:CalendarIfBlank> </mt:CalendarIfBlank>
<mt:CalendarIfToday></span></mt:CalendarIfToday>
</td>
<mt:CalendarWeekFooter></tr></mt:CalendarWeekFooter>
</mt:Calendar>
</table>
<div class="div_lNavicalendar clearfix">
<p class="div_lNavicalendarL"><mt:ArchivePrevious archive_type="Monthly"><a href="<$mt:ArchiveLink archive_type="Monthly"$>"><$mt:ArchiveDate language="en" format="%B"$></a></mt:ArchivePrevious></p>
<p class="div_lNavicalendarR"><mt:ArchiveNext archive_type="Monthly"><a href="<$mt:ArchiveLink archive_type="Monthly"$>"><$mt:ArchiveDate language="en" format="%B"$></a></mt:ArchiveNext></p>
<!-- /div_lNavicalendar --></div>
<!-- /lNavicalendarsec01 --></div>
</mt:SetVarTemplate>
<mt:IfArchiveType archive_type="Monthly">
<$mt:Var name="calendar"$>
<mt:Else>
<mt:IfArchiveType archive_type="Daily">
<$mt:Var name="calendar"$>
<mt:Else>
<mt:ArchiveList archive_type="Monthly" lastn="1">
<$mt:Var name="calendar"$>
</mt:ArchiveList>
</mt:IfArchiveType>
</mt:IfArchiveType>
そのままコピペしたのでclassとか見出しとかカレンダーと直接関係無いものも混じってます。
すごい苦労した。そして改めてMT公式のリファレンスが言葉足らず過ぎると実感しました。
ポイントは月別、日別アーカイブページの時とは違って、インデックスページの場合でarchive_typeの変更が必要な事ですね。
カレンダー表示するには特定の月のアーカイブの走査が必要なので、インデックスページではカレンダーのテリトリー内だけarchive_type=”Monthly”とする必要があります。
そして、lastn=1として最新月に設定。
という感じでした。
眠いのでこれでさよなら。
タグ: MovableType, MTOS















