昨晚,我更新了我的blogroll和podroll ,添加了有关网站的描述,而不仅仅是显示最新的帖子;这对于登陆该页面的人来说更有用。然后我意识到我可以添加一个 OPML 文件,这样任何人都可以一次性订阅该卷中的所有提要。
OPML 代表“大纲处理器标记语言”,它对于解释它在这种情况下的作用没有用。它的核心是一个 XML 文档,其中包含可以导入到提要阅读器或播客应用程序中的 RSS 提要列表。它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
< opml version = " 1.0 " >
< head >
< title > A title </ title >
< dateCreated > Sun, 21 Jan 2024 08:13:40 +0000 </ dateCreated >
</ head >
< body >
< outline text = " A Cool Blog " title = " A Cool Blog " type = " rss " xmlUrl = " https://example.com/rss " htmlUrl = " https://example.com/ " />
</ body >
</ opml >
每个outline
元素都是一个提要,具有一些描述它的属性:
-
title
– 提要/网站的标题 text
– 这是导入 OPML 时提要阅读器将显示的内容。这可能与title
不同,但我保持不变type
– 饲料的类型。我不确定是否将 Atom feed 的类型设置为rss
是否重要,大多数 feed 阅读器无论如何都会处理这个问题xmlUrl
– 提要的链接htmlUrl
– 网站的链接
我的卷配置有数据文件:
// src/_data/blogroll.js
module . exports = ( ) => {
return [
{
name : 'A Blog' ,
url : 'https://example.com' ,
feed : 'https://example.com/rss' ,
description : 'A cool blog about things' ,
} ,
// the rest of the sites
]
}
为了从 Eleventy 中的卷生成 OPML 文件,我添加了一个opml.njk
文件并按如下方式配置:
---
permalink : / blog / roll / opml . xml
eleventyExcludeFromCollections : true
---
< ?xml version = "1.0" encoding = "UTF-8" ? >
< opml version = "1.0" >
< head >
< title > RSS Feeds for all Robb Knight ' s Blogroll < / title >
< dateCreated > { { page . date | dateToRfc822 } } < / dateCreated >
< / head >
< body >
{ % - for site in blogroll - % }
< outline text = "" title = "" type = "rss" xmlUrl = "" htmlUrl = "" />
{ % endfor % }
< / body >
< / opml >
dateCreated
中使用的dateToRfc822
过滤器是Eleventy RSS 插件提供的过滤器。然后,我循环浏览博客卷中的所有站点,并为每个站点输出一个outline
元素。
最后,我在每个卷页上添加了一个指向该文件的链接。请注意,我包含了一个download
属性,因此浏览器将(希望)下载该文件,而不是直接显示 XML 文件:
< a href = " opml.xml " download = " download " > Download the OPML file </ a >
您可以在这里查看我的“卷”:
原文: https://rknight.me/blog/creating-an-opml-file-for-my-blogroll/