[英]Contentful + Algolia Search using Gatsby Image
我的 Gatsby/Contentful 博客使用 Algolia 来搜索博客文章。 除了显示图像外,一切正常。
这是我使用 Algolia 模板在 Contentful 中创建的 Webhook Payload:
{
"title": "{ /payload/fields/title/en-US}",
"slug": "{ /payload/fields/slug/en-US}",
"price": "{ /payload/fields/price/en-US}",
"category": "{ /payload/fields/category/en-US}",
"usages": "{ /payload/fields/usages/en-US}",
"rating": "{ /payload/fields/rating/en-US}",
"image": "https:{ /payload/fields/image/fields/file/url}"
}
我的 algolia 查询如下所示:
algolia.js
const contentfulQuery = `
{
allContentfulStrains {
nodes {
id
title
price
category
image {
file {
url
}
}
}
}
}
`
function pageToAlgoliaRecords({ id, title, price, image }) {
return { objectID: id, title, price, image }
}
const queries = [
{
query: contentfulQuery,
transformer: ({ data }) => data.allContentfulStrains.nodes.map(pageToAlgoliaRecords),
}
]
module.exports = queries
现在,当我输入 gatsby build 时,algolia 接收的数据结构不正确。 查看下面的图片。 我希望结构为 - image:image.url 以便我可以获取图像的 url 并将其传递到命中组件中以显示图像。
我的查询有问题吗?
我真的不知道我做错了什么..
据我所知,尽管 Algolia 图像和媒体查询本身不支持片段,但需要填充与Gatsby 图像片段相同的数据。 在你的情况下,它看起来像:
image {
childImageSharp {
fluid {
aspectRatio
src
srcSet
sizes
originalImg
originalName
}
}
}
另一方面,你的transformer
在我看来很好。
检查我的 Algolia 配置我意识到我的所有图像路径都是在本地设置的(使用/static
)。 我猜 Algolia 需要填充静态资产而不是外部 URL。 尝试在您的配置中添加downloadLocal: true
:
module.exports = {
plugins: [
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: `your_space_id`,
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
downloadLocal: true,
},
},
],
}
并使用localFile
查询进行分发:
localFile {
publicURL
childImageSharp {
fluid(maxWidth: 500) {
aspectRatio
src
srcSet
sizes
originalImg
originalName
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.