【Movable Type 6】プラグインを使わずにイベントカレンダーを実装出来るか!?【実装】

以前に【考察】を載せた「プラグインを使わずにイベントカレンダー」の実装編になります。
(以前の記事:プラグインを使わずにイベントカレンダーを実装出来るか!?【考察】

結局、プラグイン0とはいきませんでした。
今回使用したのは
プラグイン「Split」
プラグイン「JapaneseHoliday」

実装した結果、
以下のようになりました。

今回行きついた結果
▼カスタムフィールド

カスタムフィールド

イベントは記事として入力します。

「連続でない場合に入力(開始日・終了日も記載)」に関しては、
年は4ケタで記載。月と日の数字が 1ケタの場合には、前に「0」を入れる運用としています。
「1月2日」なら「0102」、「8月15日」なら「0815」。年月日の区切りには「, 」を使用。
例:20180102, 20180404, 20180815, 20181225
プラグイン「Split」を使用して、上記日付を使用します。

「記事の種類」は、選択肢に「記事,カレンダー用カラ記事」を入れています。

記事通常のイベント記事。
カレンダー用カラ記事チェックをすると、カレンダー用カラ記事として登録。
カレンダーには掲載されません。(イベント記事の「公開日」がイベント開始日とずれる為、カレンダー出力用として。カレンダー用カラ記事の「公開日」を使用してカレンダーを生成します。)

テンプレート「カレンダー」
アーカイブテンプレートの作成 :記事リスト
アーカイブマッピング :月別

<h1><$MTArchiveTitle remove_html="1" decode_html="1"$></h1>
<mt:SetVarBlock name="thismonthlydate"><$MTArchiveTitle format="%B %Y"$></mt:SetVarBlock>
	<table class="eventList"><mt:JPHolidayDefaultTag tag="CalendarDate"><mt:Calendar month="this"><mt:CalendarIfBlank><mt:Else>
<mt:IfJPHoliday>
<mt:SetVarBlock name="class"> holiday</mt:SetVarBlock>
<mt:SetVarBlock name="title"><$mt:CalendarDate format="%Y年%m月%d日"$>(<$mt:JPHolidayName$>)</mt:SetVarBlock>
<mt:Else>
<mt:SetVarBlock name="title"><$mt:CalendarDate format="%Y年%m月%d日"$></mt:SetVarBlock>
<mt:If tag="CalendarDate" format="%w" eq="0">
<mt:SetVarblock name="class"> sunday</mt:SetVarBlock>
<mt:ElseIf tag="CalendarDate" format="%w" eq="6">
<mt:SetVarBlock name="class"> saturday</mt:SetVarBlock>
<mt:Else>
<$mt:SetVar name="class" value=""$>
</mt:If>
</mt:IfJPHoliday>
	<tr class="day">
		<th class="col<$mt:GetVar name="class"$>"><$mt:CalendarDay$><span><$mt:CalendarDate format="%a"$></span></th>
		<td class="col"><MTsetVar name="count" value="0"><$mt:CalendarDate format="%Y%m%d" setvar="CalendarEventDay"$><mt:ArchiveList type="Individual"><MTEntries lastn="0"><MTSetVarBlock name="articleType"><mt:EntryDataArticleType></MTSetVarBlock><MTIf name="articleType" eq="記事"><$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:eventNotContinue setvar="eventContinue"><mt:If name="eventContinue" eq=""><MTSetVar name="count" value="1" op="+"><mt:If name="count" eq="1">
			<div class="newsList"></mt:If>
				<article class="block">
					<a href="<$MTEntryLink archive_type="Individual"$>"><h2 class="title"><$mt:EntryTitle$></h2></a>
				</article><MTElse><mt:SetVarBlock name="CalendarEventDays">^(<mt:eventNotContinue regex_replace="/(/g","" regex_replace="/)/g","" regex_replace="/ /g","" regex_replace="/,/g","|">)</mt:SetVarBlock><MTIf name="CalendarEventDay" like="$CalendarEventDays"><MTSetVar name="count" value="1" op="+"><mt:If name="count" eq="1">
			<div class="newsList"></mt:If>
				<article class="block">
					<a href="<$MTEntryLink archive_type="Individual"$>" class="table"><h2 class="title"><$mt:EntryTitle$></h2></a>
				</article></MTIf></MTIf></MTIf></MTIf></MTIf></MTEntries><mt:ArchiveListFooter><mt:If name="count" ge="1">
			<!-- /newsList --></div>
		</MTIf></mt:ArchiveListFooter></mt:ArchiveList></td>
	</tr></mt:CalendarIfBlank></mt:Calendar></mt:JPHolidayDefaultTag>
</table>
<div class="pagination">
	<ul><mt:ArchivePrevious>
		<li class="prev"><a href="<$mt:ArchiveLink encode_html="1"$>"><$MTArchiveTitle regex_replace="/: /g","|" remove_html="1" decode_html="1"$></a></li></mt:ArchivePrevious><mt:ArchiveNext>
		<li class="next"><a href="<$mt:ArchiveLink encode_html="1"$>"><$MTArchiveTitle regex_replace="/: /g","|" remove_html="1" decode_html="1"$></a></li></mt:ArchiveNext>
	</ul>
</div>

吐き出しイメージ
カレンダー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です