添加 RSS Feed
示例
什么是 RSS Feed?
RSS Feed 是一种标准的 XML 文件,它以可订阅的格式列出网站的内容,允许读者在新闻聚合器(也称为 feed reader 应用)中阅读您的内容。
将其视为您网站内容的联合发布渠道。
安装
要生成 RSS Feed,您可以使用 gatsby-plugin-feed 包。要安装此包,请运行以下命令
如何使用 gatsby-plugin-feed
安装完成后,您现在可以像这样将此插件添加到您站点的配置文件中
这里有一个示例,说明您如何使用 Markdown 实现此插件,但对于其他来源,您需要一种方法来唯一标识内容 — 通常是 URL 或 slug。
接下来运行构建 (npm run build),因为 RSS Feed 生成仅适用于生产构建。默认情况下,生成的 RSS Feed 路径是 /rss.xml,但该插件提供了选项来配置此默认功能。
对于像 gatsby-starter-blog 这样的 Markdown 内容的常见设置,这就足够了!但是,您可以通过在 gatsby-node.js 和 gatsby-config.js 文件中使用自定义代码来制作自定义 RSS Feed 模式。
自定义 RSS Feed 插件
您的内容可能不完全符合博客入门场景,原因如下:
- 您的内容不是 Markdown 格式,所以插件不知道它的存在
- 您的 Markdown 文件文件名中包含日期,这会导致 slug URL 出现 404 错误
好消息是,您可以在 gatsby-config.js 和 gatsby-node.js 中处理这些情况以及更多情况。
要自定义插件输出的默认 Feed 模式(又名结构)以适用于您网站的内容,您可以从以下代码开始
此代码片段在 gatsby-config.js 中包含一个自定义的 gatsby-plugin-feed 设置,用于查询您站点的元数据,例如其 title 和 siteUrl。它还包含一个 feeds 数组,其中至少有一个对象包含 GraphQL 查询和 serialize 方法,这允许您输出自定义 RSS Feed 结构。在此示例中,RSS 内容来自您站点中的 Markdown 文件,并通过键 allMarkdownRemark 及其关联的过滤器和字段进行查询。
您的 Feed 对象中的 output 字段允许您自定义 RSS Feed 的文件名,而 title 用于您站点 RSS Feed 的名称。
默认情况下,Feed 会在每个页面中引用。您可以通过提供一个类型为 string 的额外字段 match 来自定义此行为。此字符串将用于构建一个 RegExp,该正则表达式将用于测试当前页面的 pathname。只有满足正则表达式的页面才会包含 Feed 引用。
如果您的站点包含非英文链接(或非 ASCII 链接),您可能需要提前编码 URI。您可以使用内置函数 encodeURI(string) 来处理您的链接。
要查看您的 Feed 运行情况,请运行 gatsby build && gatsby serve,然后您就可以在 https://:9000/rss.xml 处的 RSS 文件中检查内容和 URL 了。您可以在 W3C Feed Validation Service 上检查您的 RSS Feed 的有效性。
注意:如果您的博客具有自定义的永久链接,例如包含或不包含日期的链接,您可能需要 自定义
gatsby-node.js以在您的 RSS Feed 中输出正确的 URL。如果您需要任何帮助,请 与我们联系!
iTunes RSS 块的语法
如果您正在为播客创建一个 RSS Feed,您可能希望包含 iTunes RSS 块。它们的格式为 itunes:author,GraphQL 无法读取。以下是如何使用此插件实现 iTunes RSS 块的示例
祝您博客愉快!
借助 Gatsby feed 插件,您可以轻松地与订阅了 Feedly 或 RSS Feed Reader 等 RSS 阅读器的用户分享您的文章。现在您的 Feed 已经设置好了,您基本上不需要再考虑它了;发布新文章,您的 RSS Feed 就会自动更新您的 Gatsby 构建。瞧!
更多资源
Jason Lengstorf 和 Amberley Romo 在直播中构建了一个由 RSS Feed 驱动的播客网站.