• Home
  • Data API
  • MTの管理画面 から Data API v4 でコンテンツデータを更新するときにハマった

MTの管理画面 から Data API v4 でコンテンツデータを更新するときにハマった

MT 7 の管理画面で下記のように実行して、 取扱店舗 というコンテンツデータフィールドの関連付けを削除したり変更したりしたかったのですが、どうにもコンテンツデータが更新できませんでした。

mtappVars.DataAPI.getToken(function () {
  mtappVars.DataAPI.getContentData(31, 3, 3, function (cd) {
    for (let i = 0; i < cd.data.length; i++) {
      if (cd.data[i].label === "取扱店舗") {
        cd.data[i].data = [];
      }
    }
    mtappVars.DataAPI.updateContentData(31, 3, 3, cd, function (newCd) {
      console.warn(newCd);
    });
  });
});

ここで、POST されたデータを見てみると、、、

content_data: {"author":{"displayName":"tinybeans","id":"1","userpicUrl":null},"basename":"06bed0e01cb73fa5040e2e726f03de7335617791","blog":{"id":"31"},"createdDate":"2018-10-26T11:14:03 09:00","data":"[{\"data\":[],\"id\":\"41\"}]","date":"2018-10-19T06:51:14 09:00","id":3,"label":"桜並木を自宅で楽しめる歴史ある建築物件","modifiedDate":"2018-11-09T02:04:40 09:00","status":"Publish","unpublishedDate":null,"updatable":true}

更新したい部分だけ、 "data":"[{\"data\":[],\"id\":\"41\"}]" のように値がオブジェクト全体が文字列になっていました。 そこで、下記のようにすべて文字列にしてから送信したら成功しました。

mtappVars.DataAPI.getToken(function () {
  mtappVars.DataAPI.getContentData(31, 3, 3, function (cd) {
    for (let i = 0; i < cd.data.length; i++) {
      if (cd.data[i].label === "取扱店舗") {
        cd.data[i].data = [];
      }
    }
    const param = Object.toJSON(cd);
    mtappVars.DataAPI.updateContentData(31, 3, 3, param, function (newCd) {
      console.warn(newCd);
    });
  });
});

結構な時間ハマったので、共有しておきます。

以上です。

Recent Entries

Pickup Categories

Movable Type

CMSとして国内5万サイト以上に導入されている Movable Type に関する記事です。

Craft CMS

CMS 業界で注目の Craft CMS に関する記事です。Craft CMS はチーム全体をハッピーにしてくれる素晴らしい CMS です。