FreeLayoutContentField

対応バージョン:MovableType7

テンプレートの書き方

更新日:2024.02.07

FreeLayoutContentFieldプラグインで入力したデータは、テンプレートタグで出力することができます。この節では、テンプレートタグの書き方を解説します。
なお、当面の間、静的出力のみ対応です(Movable Type 7本体がコンテンツタイプのダイナミックパブリッシングに対応していないため)。

個々のコンテンツフィールドに対応するブロックタグ

フリーレイアウト型のコンテンツフィールドの値を出力するには、まずそのコンテンツフィールド全体を表すブロックタグを書きます。これは、Movable Type 7標準のMTContentFieldタグのブロックで表します。そして、そのタグのブロックの中で、それぞれのフィールドの値を出力します。

基本的なタグの組み方

<mt:ContentField content_field="コンテンツフィールド名">
  個々のフィールドの値を出力するテンプレートタグやHTML等
</mt:ContentField>

同一フィールドの組み合わせを複数回入力できるようにしている場合や(「同一フィールド群の複数回追加の概要」参照)、ユニットを複数回入力できるようにしている場合、その回数分だけ、ブロックの内部が繰り返されます。
また、Movable Typeの他の繰り返し系テンプレートタグと同様に、ブロック内では__first__/__last__/__odd__/__even__/__counter__の各変数を使うことができます。
さらに、ユニットを使っている場合、同じユニットの連続に関係して、以下の各変数も定義されます(各変数とも、先頭と最後の「__」はアンダースコア2つで、間の「_」はアンダースコア1つ。同じユニットが複数回連続するときに、その部分の前後を何かのタグで囲みたい場合などに使うことができます。

同じユニットの連続に関して定義される変数

変数内容
__unit_first__最初のユニットの時は1、そうでなければ0
__unit_last__最後のユニットの時は1、そうでなければ0
__unit_odd__奇数番目のユニットの時は1、そうでなければ0
__unit_even__偶数番目のユニットの時は1、そうでなければ0
__unit_counter__カウンター

例えば、あるコンテンツフィールドで、「header」と「text」の2つのユニットを定義しているとします。そして、あるコンテンツではheader→text→text→text→header→text→textの順にユニットを追加したとします。この場合、__unit_first__等の変数の値は以下のようになります。

MTFLCFValueタグ

コンテンツフィールド内の個々のフィールドの値を出力するには、「MTFLCFValue」というテンプレートタグ(ファンクションタグ)を使います(ただし、アセット系のフィールドを出力する際は、後述の「MTFLCFAsset」タグを使用)。「field」または「name」というモディファイアを使って、出力するフィールドの名前を指定します。
例えば、「サンプル」という名前のコンテンツフィールドを作り、「text」という名前のフィールドを定義したとします。この場合、このtextフィールドの値を出力するには、以下のようにテンプレートを組みます。MTFLCFValueタグの「field="text"」のモディファイアは、「name="text"」でも同じ動作になります。

textフィールドの出力

<mt:ContentField content_field="サンプル">
  ‧‧‧
  <$mt:FLCFValue field="text"$>
  ‧‧‧
</mt:ContentField>

なお、フィールドの型によって、値の出力方法は以下の表のようになります。

フィールドの値の出力方法

フィールドの型出力方法
1行テキスト(text)
セレクト(select)
ラジオボタン(radio)
値をそのまま出力
複数行テキスト(textarea)値に含まれる改行を<br />タグに変換し、空の改行が出るたびにp要素で囲んで出力(コンテンツを作成する際に、出力フォーマットを「改行を変換」にした場合と同じ動作)。
チェックボックス(checkbox)チェックがオンの場合は1、チェックがオフの場合は空文字
日付と時刻(datetime)
日付(date)
時刻(time)
日付/時刻として書式づけて出力
MTEntryDate等の日付系テンプレートタグと同様に、formatモディファイアで書式を指定することも可能

MTFLCFOptionLabelタグ

セレクト(optgroupありも含む)とラジオボタンのフィールドでは、MTFLCFOptionLabelというテンプレートタグを使うこともできます。このテンプレートタグは、選択された項目に対応する表示値を出力するのに使います。
例えば、「sel」という名前のセレクト(ラジオボタン)のフィールドを作った時に、MTXXXBlockタグのブロック内に以下のようなテンプレートを組むと、そこで選択された項目の送信値と表示値を両方出力することができます。

送信値と表示値の両方を出力する

送信値:<$mt:FLCFValue field="sel"$> 表示値:<$mt:FLCFOptionLabel field="sel"$>

MTFLCFAssetタグ

アセット系(画像/オーディオ/ビデオ/ファイル)のフィールドを出力するには、「MTFLCFAsset」というテンプレートタグ(ブロックタグ)を使います。
fieldまたはnameモディファイアを使って、出力するフィールドの名前を指定します。また、MTFLCFAssetタグのブロックの中では、Movable Type標準のMTAsset系のテンプレートタグを使って、アセットの各種の情報を出力することができます。
例えば、前述の例のように、コンテンツフィールドの名前を「サンプル」にしたものとします。また、このコンテンツフィールドに「image」という名前の画像型のフィールドを定義したとします。この場合、このimageフィールドの画像のURLを出力するには、以下のようにテンプレートを組みます。

imageフィールドの画像のURLを出力

<mt:ContentField content_field="サンプル">
  ‧‧‧
  <mt:FLCFAsset field="image">
    <$mt:AssetURL$>
  </mt:FLCFAsset>
  ‧‧‧
</mt:ContentField>

MTFLCFIfUnitNameタグ

ユニット機能を使う場合、ユニットの種類によって、値の出力方法を変えることになります。そこで、ユニットの種類で条件判断するテンプレートタグとして、「MTFLCFIfUnitName」というブロックタグがあります。nameモディファイアを使って、判断するユニットの名前を指定します。
例えば、以下のような状況だとします。

  1. コンテンツフィールドの名前を「サンプル」にしたものとします。

  2. このコンテンツフィールドに「u_header」「u_text」「u_image」の3つのユニットを定義したとします。

この場合、ユニットの種類によって出力を分けるには、以下のようにテンプレートを組みます。

MTFLCFIfUnitNameタグでユニットごとに出力を分ける

<mt:ContentField content_field="サンプル">
  ‧‧‧
  <mt:FLCFIfUnitName name="u_header">
    u_headerユニットの場合の出力
  </mt:FLCFIfUnitName>
  <mt:FLCFIfUnitName name="u_text">
    u_textユニットの場合の出力
  </mt:FLCFIfUnitName>
  <mt:FLCFIfUnitName field="u_image">
    u_imageユニットの場合の出力
  </mt:FLCFIfUnitName>
  ‧‧‧
</mt:ContentField>

MTFLCFCountタグ

フィールドの組み合わせやユニットを複数回入力できるようにしている場合(32ページ参照)、MTFLCFCountタグで、その個数を出力することができます。
例えば、コンテンツフィールドの名前を「サンプル」にした場合、そこに入力したフィールドの組み合わせ(またはユニット)の個数は、以下のように出力することができます。

フィールドの組み合わせ(またはユニット)の個数を出力

<mt:ContentField content_field="サンプル">
  <$mt:FLCFCount$>
</mt:ContentField>

MTFLCFOptionsタグ/MTFLCFOptionValueタグ/MTFLCFIfOptionSelectedタグ

セレクト型のフィールドで、選択肢の一覧を出力したいときには、「MTFLCFOptions」というブロックタグを使います。fieldまたはnameモディファイアで、フィールドの名前を指定します。
このブロックの中では、個々の選択肢の送信値/表示値を、それぞれMTFLCFOptionValue/MTFLCFOptionLabelのファンクションタグで出力することができます。また、個々の選択肢が選択されているかどうかを判断するには、MTFLCFIfOptionSelectedというブロックタグを使います。
例えば、「sel」というフィールドの送信値/表示値を順に出力し、また選択されている選択肢には「○」の記号を出力したい場合、以下のようにテンプレートを組みます。

MTFLCFOptionsタグの例

<mt:FLCFOptions field="sel">
  <mt:If name="__first__"><ul></mt:If>
  <li>送信値 = <$mt:FLCFOptionValue$>, 表示値 = <$mt:FLCFOptionLabel$>, 選択 = <mt:FLCFIfOptionSelected>○</mt:FLCFIfOptionSelected></li>
  <mt:If name="__last__"></ul></mt:If>
</mt:FLCFOptions>

フィールドの値による条件判断

フィールドの値で条件判断して出力方法を変えたい場合、MTIfタグを以下のように書きます。「比較用モディファイア」のところには、MTIfタグで使える比較用の各種のモディファイアを指定します(eqやgtなど)。

フィールドの値で出力を変える

<mt:If tag="FLCFValue" field="フィールド名" 比較用モディファイア="値">
  条件を満たしているときに出力する内容
<mt:Else>
  条件を満たしていないときに出力する内容
</mt:If>

例えば、「sel」というフィールドの値が「tokyo」であるかどうかで出力を分けたいときには、以下のようにテンプレートを組みます。

「sel」フィールドの値が「tokyo」であるかどうかで出力を分ける

<mt:If tag="FLCFValue" field="sel" eq="tokyo">
  「sel」というフィールドの値が「tokyo」のときに出力する内容
<mt:Else>
  「sel」というフィールドの値が「tokyo」でないときに出力する内容
</mt:If>

その他のテンプレートタグ

ここまでに解説した以外に、「MTFLCFRawValue」と「MTFLCFUnitName」というテンプレートタグもあります。
MTFLCFRawValueタグは、フィールドの生の値を出力するファンクションタグです。MTFLCFValueタグでは、フィールドのタイプによって出力を調整していますが、MTFLCFValueタグではその調整を行いません。
また、MTFLCFUnitNameタグは、ユニットを使っている場合に、個々のユニットの名前を出力します。

前へ
プラグインTOP
次へ