イベントカレンダー機能をプラグインを使わずに実装出来るかいろいろやってみた記録になります。
環境はMovable Type Pro version 6.2.6になります。
どんなイベントカレンダーにしたいのか
当初の構想
今回行きついた結果
▼カスタムフィールド
「連続ではない場合に入力」に関して補足、現状以下の様な人力運営に頼って進めます。
「/」は、使用しないでください。例:20180404, 20180408(年4ケタ月2ケタ日2ケタ)
▼テンプレート
アーカイブテンプレート・記事リスト・月別
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title><$MTArchiveTitle encode_html="1"$></title> </head> <body> <$MTArchiveTitle$> <table> <tr> <td>日</td> <td>曜日</td> <td>記事</td> </tr> <mt:Calendar month="this"> <mt:CalendarIfBlank> <mt:Else> <tr> <td><$mt:CalendarDay$></td> <td><$mt:CalendarDate format="%a"$></td> <td><$mt:CalendarDate format="%Y%m%d" setvar="CalendarEventDay"$> <mt:ArchiveList type="Individual"> <MTEntries lastn="0"> <$mt:eventStartDate format="%Y%m%d" setvar="eventStartDate"$> <$mt:eventEndDate format="%Y%m%d" setvar="eventEndDate"$> <MTIf name="eventStartDate" le="$CalendarEventDay"> <MTIf name="eventEndDate" ge="$CalendarEventDay"> <mt:If tag="eventContinue"> <a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>(2) <MTElse> <mt:SetVarBlock name="CalendarEventDays">^(<mt:eventNotContinue regex_replace="/ /g","" regex_replace="/,/g","|">)</mt:SetVarBlock> <MTIf name="CalendarEventDay" like="$CalendarEventDays"> <a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>(3) </MTIf> </MTIf> </MTIf> </MTIf> </MTEntries> </mt:ArchiveList> </td> </tr> </mt:CalendarIfBlank> </mt:Calendar> </table> <mt:ArchiveList archive_type="Monthly"><mt:ArchiveListHeader> <nav> <ul></mt:ArchiveListHeader> <li><a href="/navi/event/calendar/<mt:ArchiveDate format="%Y/%m"$>/"><$mt:ArchiveTitle$></a></li><mt:ArchiveListFooter> </ul> </nav></mt:ArchiveListFooter></mt:ArchiveList> </body> </html>
▼ブラウザ画面キャプチャ
とりあえずの結論
記事の登録が無い月のカレンダーが生成されませんね。。
「連続で開催されるイベント」は開始日:2017/12/24・終了日:2018/04/04が登録されているのですが
このままだと2月3月に登録した記事が無いので、表示されていません。
ちなみに1月は毎日繰り返しで「連続で開催されるイベント」がぎっしり入っています。
この機能うざいかも?
とりあえず、
カレンダーを連続的に生成するなら
アーカイブテンプレート・記事リスト・月別 以外の他の方法も含めて、もうちょっと検討しようと思います。