有没有办法用 Jekyll 解析外部 RSS 提要?
Is there a way to parse external RSS Feeds with Jekyll?
我有几个网站,想通过 RSS 显示内容,例如 Jekyll 项目中的标题。是否可以使用 jekyll 解析外部 rss 提要并使用它们?
好吧,我不认为 Jekyll 本身可以做到这一点...因为 Jekyll 更像是一个 CMS。然而,Jekyll 是用 Ruby 编写的,我相信你可以使用 Jekyll 轻松地完成 运行 ruby/rake 任务(这甚至可能是你构建 Jekyll 站点时使用的),所以我相信你应该可能作为 ruby 脚本来做。
是的。您可能想要创建一个插件来在 jekyll build
期间获取和解析外部提要,或者,计划 B,您始终可以使用 AJAX 获取和解析客户端的提要。由于您要求 Jekyll 回答,这里是前一种方法的粗略近似值:
# Runs during jekyll build
class RssFeedCollector < Generator
safe true
priority :high
def generate(site)
# TODO: Insert code here to fetch RSS feeds
rss_item_coll = null;
# Create a new on-the-fly Jekyll collection called "external_feed"
jekyll_coll = Jekyll::Collection.new(site, 'external_feed')
site.collections['external_feed'] = jekyll_coll
# Add fake virtual documents to the collection
rss_item_coll.each do |item|
title = item[:title]
content = item[:content]
guid = item[:guid]
path = "_rss/" + guid + ".md"
path = site.in_source_dir(path)
doc = Jekyll::Document.new(path, { :site => site, :collection => jekyll_coll })
doc.data['title'] = title;
doc.data['feed_content'] = content;
jekyll_coll.docs << doc
end
end
end
然后您可以像这样访问模板中的集合:
{% for item in site.collections['external_feed'].docs %}
<h2>{{ item.title }}</h2>
<p>{{ item.feed_content }}</p>
{% endfor %}
主题有很多可能的变体,但就是这样。
我有几个网站,想通过 RSS 显示内容,例如 Jekyll 项目中的标题。是否可以使用 jekyll 解析外部 rss 提要并使用它们?
好吧,我不认为 Jekyll 本身可以做到这一点...因为 Jekyll 更像是一个 CMS。然而,Jekyll 是用 Ruby 编写的,我相信你可以使用 Jekyll 轻松地完成 运行 ruby/rake 任务(这甚至可能是你构建 Jekyll 站点时使用的),所以我相信你应该可能作为 ruby 脚本来做。
是的。您可能想要创建一个插件来在 jekyll build
期间获取和解析外部提要,或者,计划 B,您始终可以使用 AJAX 获取和解析客户端的提要。由于您要求 Jekyll 回答,这里是前一种方法的粗略近似值:
# Runs during jekyll build
class RssFeedCollector < Generator
safe true
priority :high
def generate(site)
# TODO: Insert code here to fetch RSS feeds
rss_item_coll = null;
# Create a new on-the-fly Jekyll collection called "external_feed"
jekyll_coll = Jekyll::Collection.new(site, 'external_feed')
site.collections['external_feed'] = jekyll_coll
# Add fake virtual documents to the collection
rss_item_coll.each do |item|
title = item[:title]
content = item[:content]
guid = item[:guid]
path = "_rss/" + guid + ".md"
path = site.in_source_dir(path)
doc = Jekyll::Document.new(path, { :site => site, :collection => jekyll_coll })
doc.data['title'] = title;
doc.data['feed_content'] = content;
jekyll_coll.docs << doc
end
end
end
然后您可以像这样访问模板中的集合:
{% for item in site.collections['external_feed'].docs %}
<h2>{{ item.title }}</h2>
<p>{{ item.feed_content }}</p>
{% endfor %}
主题有很多可能的变体,但就是这样。