Graphql 使用CraftQL和Gatsby JS查询Craft CMS中的全局字段
我在CraftQL插件的无头模式下使用Craft。我的前端是使用盖茨比JS构建的 我可以查询条目并将数据输出到模板,但是全局字段不可用。这是我的密码:Graphql 使用CraftQL和Gatsby JS查询Craft CMS中的全局字段,graphql,gatsby,craftcms,Graphql,Gatsby,Craftcms,我在CraftQL插件的无头模式下使用Craft。我的前端是使用盖茨比JS构建的 我可以查询条目并将数据输出到模板,但是全局字段不可用。这是我的密码: // gatsby-config.js plugins: [ { resolve: `gatsby-source-craftcms`, options: { endpoint: `http://cms.local/api`, token: `REDACTED`,
// 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"
如果我从查询中删除全局
,我可以成功构建并输出data.home.title
我已经尝试在CMS中使用CraftQL浏览器,我可以成功地查询全局:
我相信我遗漏了一些东西,但在或的文档中找不到任何东西
有人知道我做错了什么吗?所以昨天和CraftQL的制造商谈过之后,我的错误是假设我需要使用
gatsby source craftcms
作为我的源插件。事实上,该标准更好、更抽象,这意味着您不需要在gatsby config
中构造巨大的graphQL查询。此外,它的文档解释得更好
现在我的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
您可以查看