gatsby-plugin-feed的internals似乎表明,我们可以限制提要中显示的帖子数量:
{
// 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+帖子了?
发布于 2020-04-10 11:46:29
@AlbertSkibinski在他的评论中的documentation link帮助我意识到RSS feed只在gatsby build上生成。我正在进行更改并尝试运行gatsby develop,这对我在public文件夹中检查的输出没有任何影响。
我不太喜欢重写不需要重写的默认值,所以我通过从gatsby-plugin-feed/internals导入默认值来拼凑自己的配置代码
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)上工作得很好。
发布于 2020-04-03 17:12:39
我在我的个人项目中使用gatsby-plugin-feed。按照您在问题中的建议,我尝试在GraphQL查询中使用limit,它在我的例子中有效。
我的猜测是项目中的一些其他插件或代码干扰了xml的生成。调试您的问题的唯一方法可能是创建一个barebone项目,并尝试首先限制您的项。我记得我错误地列出了两次gatsby-plugin-feed,从而删除了第一个清单中的说明。
这是我的代码。也许它会对你有所帮助:
// 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/",
},
],
},
},https://stackoverflow.com/questions/60973854
复制相似问题