FreeLayoutCustomField

対応バージョン:MovableType7

Data APIについて

更新日:2024.02.06

Data APIでの読み込み

フリーレイアウト型のカスタムフィールドに入力した値を、Data APIで扱うこともできます。
前述したように、フリーレイアウト型のカスタムフィールドの値は、JSON文字列として保存されます。Data APIで記事等のオブジェクトを読み込んだときにも、フリーレイアウト型のカスタムフィールドの値は、JSON文字列の形で読み込まれます。
各プログラム言語からData APIで記事等にアクセスした後、言語ごとのJSON系の関数を使って、その言語に応じたデータ構造に変換することができます。

たとえば、以下のような状況だとします。

  • 記事に、ベースネームが「entry_flcf」というフリーレイアウト型のカスタムフィールドを追加した。
  • このカスタムフィールドに「txt1」と「txt2」のフィールドを追加した。
  • JavaScriptのData APIライブラリを使い、Data APIのオブジェクトを変数apiに割り当てた。

この状況で以下のコードを実行すると、「各記事に対する処理」の中では、「entry.flcf」でこのカスタムフィールドにアクセスすることができます。また、「entry.flcf[番号].txt1」で、txt1フィールドに代入した個々の値にアクセスできます(番号は0~件数-1の数値)。

Data APIで記事を読み込んで処理する例

api.listEntries(サイトID, function(response) {
  var entries = response.items;
  for (var i = 0; i < entries.length; i++) {
    var entry = entries[i];
    for (var j = 0; j < entry.customFields.length; j++) {
      if (entry.customFields[j].basename == 'entry_flcf') {
        entry.flcf = jQuery.parseJSON(entry.customFields[j].value);
      }
    }
    各記事に対する処理
  }
});

Data APIでの保存

Data APIでは、記事等のオブジェクトを保存することもできます。その際に、フリーレイアウト型のカスタムフィールドの値を保存することもできます。読み込みの場合と逆に、保存したいデータ構造をJSON文字列に変換して、対象のカスタムフィールドの値として代入しておくようにします。
たとえば、以下のような状況だとします。

  • 記事に、ベースネームが「entry_flcf」というフリーレイアウト型のカスタムフィールドを追加した。
  • このカスタムフィールドに「txt1」と「txt2」のフィールドを追加した。
  • JavaScriptのData APIライブラリを使い、Data APIのオブジェクトを変数apiに割り当てた。
  • Data APIからMovable Typeにログインする処理はすでに終わっている。

この状況で、記事を新規作成して、このカスタムフィールドに以下の表の値を保存したいとします。

カスタムフィールドに保存する値

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

この処理は以下のように書くことができます。記事のデータ(変数entryData)を作成する際に、「customFields」というプロパティを作り、そこにカスタムフィールドのベースネームと値を代入します。
なお、値を作る際に「jQuery.toJSON」という関数を使っています。この関数は、「jQuery JSON Plugin」というjQueryのプラグインで提供されています。Movable Typeの「mt-static」→「jquery」ディレクトリにある「jquery.json.js」を組み込むことで、この関数を使うことができます。

Data APIで記事を作成する例

var entryData = {
  'title': '記事のタイトル',
  'body': '記事の本文',
  'customFields': [
    {
      basename: "entry_flcf",
      value: jQuery.toJSON(
        [
          { "txt1":"こんにちは", "txt2":"山田", "flcf_row_is_null":"" },
          { "txt1":"さようなら", "txt2":"太郎", "flcf_row_is_null":"" }
        ]
      )
    }
  ]
};
api.createEntry(サイトID, entryData, function(response) {
  記事保存が終わった時の処理
});
前へ
プラグインTOP
次へ