MT タグで出力する
get_items モディファイアで items をテンプレート変数にセットし、mt:Loop で 1 日ずつ出力します。年月は json_decode で取り出せます。
基本の書き方
<mt:ContentField content_field="営業日">
<mt:ContentFieldValue get_items="1" />
<mt:ContentFieldValue trim="1" json_decode="1" setvar="schedule" />
<h2><mt:Var name="schedule" key="year" />年<mt:Var name="schedule" key="month" />月の営業日</h2>
<table>
<thead>
<tr><th>日付</th><th>営業</th><th>開店</th><th>備考</th></tr>
</thead>
<tbody>
<mt:Loop name="items">
<tr>
<td><mt:Var name="date" />日(<mt:Var name="day" />)</td>
<td><mt:Var name="open" /></td>
<td><mt:Var name="openTime" /></td>
<td><mt:Var name="note" /></td>
</tr>
</mt:Loop>
</tbody>
</table>
</mt:ContentField>
content_field には、コンテンツタイプで設定したフィールドのラベルを指定します。
使用しているモディファイア
| モディファイア | 提供元 | 働き |
|---|---|---|
get_items="1" |
MTAppjQuery | JSON を解析して items テンプレート変数に日ごとのデータをセットします。このタグ自体は何も出力しません |
json_decode="1" |
MTAppjQuery | JSON を解析した結果を返します。setvar と組み合わせて変数に格納し、key で year / month を取り出します |
trim="1" |
Movable Type | 前後の空白を除去します |
ループ内で使える変数
<mt:Loop name="items"> の内側では、その日のデータの各キーがテンプレート変数になります。
| 変数 | 内容 |
|---|---|
date |
日(1〜31) |
day |
曜日(日〜土) |
| (ハンドル名) | 入力項目のハンドルごとの値 |
__counter__ |
1 から始まる連番 |
__first__ / __last__ |
最初 / 最後の行かどうか |
__odd__ / __even__ |
奇数行 / 偶数行かどうか |
テンプレート変数名は大文字と小文字を区別しません。ハンドルが openTime の場合、<mt:Var name="opentime" /> と書いても同じ値が出力されます。
値が入っていない項目を判定する
一度も入力されていない項目はキーが存在しない場合があります。値の有無で出力を分けるには mt:If を使います。
<mt:Loop name="items">
<tr>
<td><mt:Var name="date" />日</td>
<td>
<mt:If name="note">
<mt:Var name="note" />
<mt:Else>
—
</mt:If>
</td>
</tr>
</mt:Loop>
チェックボックスの値を出力する
チェックボックスの値は配列です。glue で区切り文字を指定して連結します。
<mt:Var name="plans" glue="、" />
曜日で表示を変える
<mt:Loop name="items">
<tr<mt:If name="day" eq="日"> class="sunday"</mt:If><mt:If name="day" eq="土"> class="saturday"</mt:If>>
<td><mt:Var name="date" />(<mt:Var name="day" />)</td>
<td><mt:Var name="open" /></td>
</tr>
</mt:Loop>
定休日だけを一覧にする
<mt:ContentField content_field="営業日">
<mt:ContentFieldValue get_items="1" />
<ul>
<mt:Loop name="items">
<mt:If name="open" eq="×">
<li><mt:Var name="date" />日(<mt:Var name="day" />)</li>
</mt:If>
</mt:Loop>
</ul>
</mt:ContentField>
複数のコンテンツデータをまとめて出力する
月ごとにコンテンツデータを分けている場合は、mt:Contents でループします。
<mt:Contents content_type="営業日カレンダー">
<mt:ContentField content_field="営業日">
<mt:ContentFieldValue get_items="1" />
<mt:ContentFieldValue trim="1" json_decode="1" setvar="schedule" />
<h2><mt:Var name="schedule" key="year" />年<mt:Var name="schedule" key="month" />月</h2>
<mt:Loop name="items">
<p><mt:Var name="date" />日(<mt:Var name="day" />)<mt:Var name="open" /></p>
</mt:Loop>
</mt:ContentField>
</mt:Contents>
items 変数はコンテンツデータごとに上書きされるため、ループの内側で get_items を実行してください。