在 gatsby-plugin-feed 中从 RSS 返回图像



我正在尝试从博客文章的开头返回作者图像。前言的结构是这样的;

---
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_urlrssMetadata,并且缺少代码,这是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 }

最新更新