You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Gatsby GraphQL筛选近两日文章生成Google News站点地图

解决方案

你可以通过原生JS的Date对象动态计算2天前的UTC标准时间字符串,直接传入GraphQL查询的筛选条件即可,操作步骤如下:

步骤1:计算动态日期值

通过以下代码生成48小时前的ISO标准时间字符串,格式和你测试的固定日期格式完全匹配:

const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString();

步骤2:对应不同使用场景插入查询

场景1:在gatsby-config.js中配置gatsby-plugin-advanced-sitemap

直接在配置文件顶部计算日期,插值到查询语句中即可:

// gatsby-config.js 开头先计算日期
const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString();

module.exports = {
  plugins: [
    {
      resolve: `gatsby-plugin-advanced-sitemap`,
      options: {
        additionalSitemaps: [
          {
            // 配置独立的Google News站点地图
            name: 'google-news',
            query: `
              {
                allArticle(sort: {order: DESC, fields: date}, filter: {date: {gte: "${twoDaysAgo}"}}) {
                  edges {
                    node {
                      date
                      excerpt
                      title
                      link
                      slug
                    }
                  }
                }
              }
            `,
            // 其余站点地图输出配置按你的原有需求填写即可
          }
        ]
      }
    }
  ]
}

场景2:在gatsby-node.js中通过GraphQL查询获取数据

可以将计算好的日期作为查询变量传入,写法更规范:

// gatsby-node.js
exports.createPages = async ({ graphql }) => {
  const twoDaysAgo = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString();
  
  const newsArticleResult = await graphql(`
    query($twoDaysAgo: Date!) {
      allArticle(sort: {order: DESC, fields: date}, filter: {date: {gte: $twoDaysAgo}}) {
        edges {
          node {
            date
            excerpt
            title
            link
            slug
          }
        }
      }
    }
  `, { twoDaysAgo });

  // 后续处理查询结果、生成站点地图的逻辑
}

注意:Gatsby为静态站点生成器,该日期会在每次执行gatsby build时计算生成,如需保证站点地图始终包含近2天的内容,你需要设置定时构建任务,每1-2天重新构建部署一次站点即可。

内容的提问来源于stack exchange,提问作者Harshit Rastogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:45:04