1

我正在通过 CraftQL 插件在无头模式下使用 Craft。我的前端是使用 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.

我尝试在 CMS 中使用 CraftQL 浏览器,并且可以成功查询全局变量:

在此处输入图像描述

我确信我遗漏了一些东西,但在Gatsby-Source-CraftCraftQL的文档中找不到任何东西。

有人知道我在这里做错了什么吗?

4

1 回答 1

2

因此,昨天与 CraftQL 的制造商交谈后,我的错误是假设我需要gatsby-source-craftcms用作我的源插件。实际上,该标准gatsby-source-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
      }
    }
  }
}

这更理智,更接近普通的 Twig API

您可以在此处查看 Twitter 交流

于 2018-11-07T10:07:56.803 回答