category

Craft CMS に GraphQL でエントリを作成する #craftcms

2019-12-12

このエントリは Craft CMS Advent Calendar 2019 12日目のエントリーです。
昨日は @tinybeans の『カラフルボックスで始める - はじめての Craft CMS (2) 「サーバーとデータベースの作成」』でした。


Craft CMS へ GraphQL でエントリを作成してみた。

GraphQL でエントリを作成する場合、 Craft 3.3 だとまだ対応できないため、 CraftQL プラグインを使うことになる。

2019-12-08

基本的な使い方は CraftQL のドキュメントを参照すれば問題ない。

markhuot/craftql: A drop-in GraphQL server for Craft CMS
https://github.com/markhuot/cr...

CraftQLの設定

mutationを使うためには CraftQL の設定で許可しておく必要がある。

Token を生成して、その Settings から設定する。

必要なセクションを許可する。

エントリを作成する

試しにエントリを作成してみる。

Altair GraphQL Client でシンプルにタイトルとテキストエリアのフィールド(c_textarea01)に投げるサンプル。

Query と Variables はこんな感じで。

// Query
mutation createNewEntry($title:String, $c_textarea01:String) {
  upsertNews(
    title:$title,
    c_textarea01:$c_textarea01,
  ) {
    id
    url
  }
}

// Variables
{
  "title": "My first mutation!",
  "c_textarea01": "値です値です値です値です値です"  
}

これで投げるとレスポンスに id, url が帰ってくる

{
  "data": {
    "upsertNews": {
      "id": 1427,
      "url": "https://bp1-test.craft-demo.mixh.jp/news/my-first-mutation"
    }
  }
}

ドキュメントにも書いてあるが、mutationするときは

upsert{EntryType}

と、入力タイプを指定して投げる。

無事エントリも作成されている。

マトリックスの時とかアセット周りとか複雑そうなところはもう少し調べてみる。

CraftQL の設定をみる限りはエントリとユーザー、グローバルが現状は対応してる・・・っぽい??