首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制gatsby-plugin-feed中的项目数

限制gatsby-plugin-feed中的项目数
EN

Stack Overflow用户
提问于 2020-04-01 22:56:47
回答 2查看 224关注 0票数 1

gatsby-plugin-feedinternals似乎表明,我们可以限制提要中显示的帖子数量:

代码语言:javascript
复制
{
  // Create a default RSS feed. Others may be added by using the format below.
  feeds: [
    {
      query: `
      {
        allMarkdownRemark(
          limit: 1000,
          sort: {
            order: DESC,
            fields: [frontmatter___date]
          }
        ) {
          edges {
            node {
              frontmatter {
                title
                date
              }
              fields {
                slug
              }
              excerpt
              html
            }
          }
        }
      }
    `,
    ...
  ]
}

当我在gatsby-config.js中尝试将自己的定义中的limit更改为10时,似乎没有效果。有没有一种标准的方法来限制RSS feed中的条目数量,这样我就不会在那里发布250+帖子了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-10 11:46:29

@AlbertSkibinski在他的评论中的documentation link帮助我意识到RSS feed只在gatsby build上生成。我正在进行更改并尝试运行gatsby develop,这对我在public文件夹中检查的输出没有任何影响。

我不太喜欢重写不需要重写的默认值,所以我通过从gatsby-plugin-feed/internals导入默认值来拼凑自己的配置代码

代码语言:javascript
复制
const gatsbyFeedOpts = require('gatsby-plugin-feed/internals')

// Copy and replace limit in default options
let feedOpts = gatsbyFeedOpts.defaultOptions
feedOpts.feeds[0].query = feedOpts.feeds[0].query.replace(
  'limit: 1000',
  'limit: 10'
)

module.exports = {
  siteMetadata: {
    // Excluded for brevity
  },
  plugins: [
    // Other plugins excluded for brevity
    {
      resolve: `gatsby-plugin-feed`,
      options: feedOpts,
    },
  ],
}

有趣的是,尽管文档说我们需要在提要配置中实现一个serialize方法,但我在这里使用的导入默认值中并没有包括它。这可能会在未来的gatsby-plugin-feed版本中造成问题,但它在我当前使用的版本(2.4.1)上工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2020-04-03 17:12:39

我在我的个人项目中使用gatsby-plugin-feed。按照您在问题中的建议,我尝试在GraphQL查询中使用limit,它在我的例子中有效。

我的猜测是项目中的一些其他插件或代码干扰了xml的生成。调试您的问题的唯一方法可能是创建一个barebone项目,并尝试首先限制您的项。我记得我错误地列出了两次gatsby-plugin-feed,从而删除了第一个清单中的说明。

这是我的代码。也许它会对你有所帮助:

代码语言:javascript
复制
// gatsby-config.js

{
  resolve: `gatsby-plugin-feed`,
  options: {
    query: `
      {
        site {
          siteMetadata {
            title
            description
            siteUrl
            site_url: siteUrl
          }
        }
      }
    `,
    feeds: [
      {
        serialize: ({ query: { site, allMarkdownRemark } }) => {
          return allMarkdownRemark.edges.map(edge => {
            return Object.assign({}, edge.node.frontmatter, {
              description: edge.node.excerpt,
              url: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
              guid: site.siteMetadata.siteUrl + "/blog" + edge.node.fields.slug,
              categories: ["Startup"],
              custom_elements: [
                { "content:encoded": edge.node.html },
                { "author": edge.node.frontmatter.author },
                { "language": "en" },
              ],
            });
          });
        },
        query: `
          {
            allMarkdownRemark(
              sort: { order: DESC, fields: [frontmatter___date] },
              filter: {fileAbsolutePath: {regex: "content/blog/"}},
              limit: 2
            ) {
              edges {
                node {
                  excerpt
                  html
                  fields { slug }
                  frontmatter {
                    title
                    date
                    author
                  }
                }
              }
            }
          }
        `,
        output: "/rss.xml",
        title: "Blog",
        match: "^/blog/",
      },
    ],
  },
},
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60973854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档