FreeLayoutCustomField

対応バージョン:MovableType7

フィールドの値の内部表現

更新日:2024.02.06

フリーレイアウト型のカスタムフィールドの値は、内部的には以下のようなJSON文字列として保存しています(実際には不要な改行やスペースを詰めて保存します)。
フィールドの組み合わせ(またはユニット)の1件分のデータを、1つのオブジェクトとして扱います。
そして、フィールドの組み合わせ(またはユニット)の複数回の繰り返しを、配列として扱います。

フリーレイアウト型のカスタムフィールドの内部形式

[
  { "フィールド名":"値", "フィールド名":"値", ・・・, "フィールド名":"値", "flcf_row_is_null":XXX },
  { "フィールド名":"値", "フィールド名":"値", ・・・, "フィールド名":"値" "flcf_row_is_null"::XXX },
  ・・・
  { "フィールド名":"値", "フィールド名":"値", ・・・, "フィールド名":"値" "flcf_row_is_null"::XXX }
]

「flcf_row_is_null」は、1件分のフィールドの組み合わせ(またはユニット)が、空であるかどうかを表すフラグです。空ならこの値は1になり、空でなければ「""」(空文字列)になります。
例えば、あるフリーレイアウト型のカスタムフィールドがあり、その中に「txt1」と「txt2」の2つのテキスト型のフィールドを作ったとします。そして、このフィールドの組み合わせを2回作り、以下のようにデータを保存したとします。

フィールドのデータの例

txt1フィールド txt2フィールド
こんにちは 山田
さようなら 田中

この場合、このカスタムフィールドの値の内部形式は、以下のようになります

上記の表に対応するカスタムフィールドの値の内部形式

[
  { "txt1":"こんにちは", "txt2":"山田", "flcf_row_is_null": "" },
  { "txt1":"さようなら", "txt2":"田中", "flcf_row_is_null": "" }
]

ユニットを使う場合も、同様の形でJSON文字列で保存しています。ユニット名は、内部的には「flcf_unit_name」というフィールドに保存しています。
例えば、以下のような状況でデータを保存したとします。

  • フリーレイアウト型のカスタムフィールドがあり、その中に「txt1」と「txt2」の2つのテキスト型のフィールドがある
  • 「unit1」と「unit2」の2種類のユニットを定義していて、「unit1」ユニットでは「txt1」フィールドに値を入力し、「unit2」ユニットでは「txt2」フィールドに値を入力する
  • ユニットを2つ作り、以下の表のように値を入力した

フィールドのデータの例

ユニット txt1フィールド txt2フィールド
unit1 こんにちは 入力なし
unit2 入力なし 田中

この場合、このカスタムフィールドの値の内部形式は、以下のようになります。

上記の表に対応するカスタムフィールドの値の内部形式

[
 { "flcf_unit_name":"unit1", "txt1":"こんにちは", "txt2":"", "flcf_row_is_null": "" },
 { "flcf_unit_name":"unit2", "txt1":"", "txt2":"田中", "flcf_row_is_null": "" }
]
前へ
プラグインTOP
次へ
test