【问题标题】:Returning an image from RSS in gatsby-plugin-feed在 gatsby-plugin-feed 中从 RSS 返回图像
【发布时间】:2020-03-30 12:05:34
【问题描述】:

我正在尝试从博客文章的前端返回作者图片。前面的事情是这样安排的;

---
title: XXX
date: "XXX"
description: "XXX"
featuredImage: './featured-image.jpg'
avatar: './author.jpg'
author: 'XXX'
---

在 gatsby-config 中,我设置了这样的 gatsby-plugin-feed -

{
      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?

谢谢

【问题讨论】:

    标签: graphql rss gatsby gatsby-image


    【解决方案1】:

    初始查询需要调用 image_urlrssMetadata,并且缺少作为 RSS 插件查询一部分的代码,这是正常工作所必需的

    guid: rssMetadata.site_url + edge.node.fields.slug

    Gatsby RSS Feed Docs也很有帮助

    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 }
    
    

    【讨论】:

    • 感谢您的回复。我遇到了错误 - 错误:无法在“SiteSiteMetadata”类型上查询字段“rssMetadata”。
    • 确保 .md 文件按顺序排列标题日期作者描述头像
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多