• 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);
    });
  });
});

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

以上です。

MTAppjQuery について

Movable Type の管理画面をフロントエンドの知識だけで簡単にカスタマイズすることができます。

クライアントの満足度を高めるためにぜひお使いください。

MTAppjQuery の詳細を見る

Iamge Description

Recent Entries

Pickup Categories

Movable Type

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

Craft CMS

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