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 と組み合わせて変数に格納し、keyyear / 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>
        &mdash;
      </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 を実行してください。