我使用flexblocks创建了一个盖茨比博客。问题是我想为Google News
创建一个网站地图,这将不同于博客的主要网站地图。对于这个站点地图,我需要过滤在过去两天内发布的文章。我正在使用这个插件
allArticle(sort: {order: DESC, fields: date}, filter: {date: {WHAT_SHOULD_I_DO_HERE}}) {
edges {
node {
date
excerpt
title
link
slug
}
}
}
任何帮助将不胜感激,谢谢。
{date: {gte: "2021-08-27T13:11:30.443Z"}}
将过滤文章,但我如何动态地获得这个日期字符串?
Gatsby在处理GraphQL范围内的日期时依赖于底层的momentjs
。您只需要在查询范围内添加从函数返回的变量,例如:
const getTwoDaysAgo=()=> moment().subtract(2, "days");
在您的gatsby-config.js
中,您可以调用此函数并:
要添加一个变量,您可以遵循以下三个答案:
基本上,遵循这个语法:
grapqhl(
`query getImages($fileName: String) {
landscape: file(relativePath: {eq: $fileName}) {
childImageSharp {
fluid(maxWidth: 1000) {
base64
tracedSVG
aspectRatio
src
srcSet
srcWebp
srcSetWebp
sizes
originalImg
originalName
}
}
}
}
`,
{fileName: "knight.jpg"}
)
您可以添加自定义变量。在本例中,请注意查询被包装在graphql()
函数中。适用于您的情况,您可以尝试:
plugins: [
{
resolve: `gatsby-plugin-advanced-sitemap`,
options: {
query: graphql(
`
query allArticle(
sort: {
order: DESC, fields: date
},
filter: {date: {twoDaysAgo}}) {
edges {
node {
date
excerpt
title
link
slug
}
}
}`, {twoDaysAgo: getTwoDaysAgo()}
)
}
}
]
注意:复制/粘贴时要小心,因为我可能会漏掉很多括号
我不确定插件是否支持这种符号,但应该支持。
{日期:{gte:"2021 - 08 - 27 - t13:11:30.443z"}}
给定已编辑的问题,使流和过滤器适应gte
参数。