我正在尝试从博客文章的开头返回作者图像。前言的结构是这样的;
---
title: XXX
date: "XXX"
description: "XXX"
featuredImage: './featured-image.jpg'
avatar: './author.jpg'
author: 'XXX'
---
在盖茨比配置中,我有这样的盖茨比插件提要设置 -
{
resolve: `gatsby-plugin-feed`,
options: {
query: `
{
site {
siteMetadata {
title
author
siteUrl
site_url: siteUrl
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMarkdownRemark } }) => {
return allMarkdownRemark.edges.map(edge => {
return Object.assign({}, edge.node.frontmatter, {
description: edge.node.frontmatter.description,
date: edge.node.frontmatter.date,
url: site.siteMetadata.siteUrl + edge.node.fields.slug,
avatar: edge.node.frontmatter.avatar,
custom_elements: [{ "content:encoded": edge.node.html }],
})
})
},
query: `
{
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___date] },
) {
edges {
node {
excerpt
html
fields { slug }
frontmatter {
title
date
author
description
avatar
}
}
}
}
}
`,
output: "/rss.xml",
title: "Your Site's RSS Feed",
},
],
},
},
这会导致错误Error: Field "avatar" of type "File" must have a selection of subfields. Did you mean "avatar { ... }"?
如何更改此设置,以便在 RSS 源中返回图像 URL?
谢谢
初始查询需要调用image_url
和rssMetadata
,并且缺少代码,这是RSS插件查询的一部分,需要正常工作
guid: rssMetadata.site_url + edge.node.fields.slug
盖茨比RSS提要文档也非常有用
query: `
{
site {
siteMetadata {
rssMetadata {
site_url
title
author
image_url
}
}
}
}
`,
feeds: [
{
serialize: ({ query: { site, allMarkdownRemark } }) => {
return allMarkdownRemark.edges.map(edge => {
return Object.assign({}, edge.node.frontmatter, {
description: edge.node.frontmatter.description,
date: edge.node.frontmatter.date,
url: rssMetadata.site_url + edge.node.fields.slug,
guid: rssMetadata.site_url + edge.node.fields.slug,
avatar: edge.node.frontmatter.avatar,
custom_elements: [{ "content:encoded": edge.node.html }],
})
})
},
最后,avatar
可能需要被称为custom_element
custom_elements: [
{ "avatar": edge.node.frontmatter.avatar},
{ "content:encoded": edge.node.html }