Запрос глобальных полей в Craft CMS с помощью CraftQL и Gatsby JS - PullRequest
0 голосов
/ 06 ноября 2018

Я использую Craft в автономном режиме с плагином CraftQL. Мой внешний интерфейс построен с использованием Gatsby JS.

Я могу запрашивать записи и выводить данные в мои шаблоны, однако глобальные поля недоступны. Вот мой код:

// gatsby-config.js
plugins: [
  {
        resolve: `gatsby-source-craftcms`,
        options: {
            endpoint: `http://cms.local/api`,
            token: `REDACTED`,
            query: `{
                globals: globals {
                    contact {
                        address
                    }
                },
                home: entries(section:[home]) {
                    id
                    title
                    ... on Home {
                        subHeading
                        intro
                        ctaButton {
                            ... on CtaButtonButton {
                                __typename
                                text
                                linkUrl
                            }
                        }
                    }
                },
// etc

А потом в моем шаблоне:

export const query = graphql`
  query {
    home {
        title
        subHeading
        intro
        ctaButton {
            text
            linkUrl
        }
    }
    globals {
        contact {
            address
        }
    }
  }
`

В моей консоли я получаю:

error  Cannot query field "global" on type "Query"

Если я удаляю global из запроса, я могу успешно построить и вывести data.home.title.

Я пытался использовать браузер CraftQL в CMS и могу успешно запрашивать глобальные переменные:

enter image description here

Я уверен, что что-то упустил, но ничего не могу найти в документации для Gatsby-Source-Craft или CraftQL .

Кто-нибудь имеет представление о том, что я здесь делаю неправильно?

1 Ответ

0 голосов
/ 07 ноября 2018

Итак, поговорив вчера с создателем CraftQL, моя ошибка заключалась в том, что мне нужно было использовать gatsby-source-craftcms в качестве исходного плагина. На самом деле стандарт gatsby-source-graphql был намного лучше и более абстрактным, то есть вам не нужно создавать гигантские запросы graphQL в gatsby-config. Кроме того, документы для этого гораздо лучше объяснены.

теперь мой gatsby-config.js выглядит так:

plugins: [
    {
        resolve: `gatsby-source-graphql`,
        options: {
    typeName: "Craft",
    fieldName: "craft",
    // Url to query from
    url: "http://cms.local/api",
    // HTTP headers
    headers: {
      Authorization: `bearer ACCESSTOKENHERE`,
    }
        },
    },

и мой запрос выглядит так

{
  craft {
    globals {
      contact {
        address
      }
    }
  }
}

, что намного разумнее и ближе к нормальному API Twig

Вы можете посмотреть Twitter обмен здесь

...