输出 RSS Feed (供稿种子)已经成为许多网站的标准功能,drupal 作为世界上最受欢迎的站点框架“内容管理系统”(CMS)之一,当然也有输出 RSS Feed 的功能。但是 drupal 自带的输出 RSS 功能不太完善,很不方便自定义。如果想自己制作 Feed,比如为某个分类的文章单独发布 RSS,或是为评论生成 Feed,要怎么做呢?我搜了一下,在网上居然没有找到完整介绍的文章,所以我就自己来写一篇如何为 drupal 站点烧制 RSS Feed 的简单教程吧。
一、容易误解的地方
在 drupal 的“模块”(module)设置中,有一个“聚合内容(RSS、RDF 与 Atom feeds)”(aggregator)。一般人很容易以为这个就是负责生成 RSS 的模块。我开始也是这么想的。摸索了半天才发现,这个 aggregator 并不是输出 RSS 的模块。恰恰相反,它其实是一个阅读器。开启了 aggregator 模块之后,就可以订阅其他站点的 RSS Feed,并以自定义的形式显示在自己的 drupal 站点上。所以,如果你想做混烧网站(mashup),利用别人站点的内容搭自己的网站,倒可以试试 aggregator 模块。
二、drupal 自带的 RSS
drupal 默认生成的 RSS 地址是 http://mysite.com/?q=rss.xml 。如果开启了简洁链接(clean URL),就是 http://mysite.com/rss.xml 。理论上说,这个 RSS 的内容就是站点首页的内容,但是实践上它可能并不是你首页的实际内容。如果你自制了一个页面并设定为首页,该页的内容并不会反映在该 RSS 中。这个 RSS 的实际内容是什么呢?可以说是 drupal 默认首页的内容,也就是你在发表文章时选择了“推荐到首页”(Promoted to front page)的那些文章。显然,这个 RSS 设置、修改、维护起来非常麻烦,这种简陋的功能不能满足我们自定义 RSS 的需求。
更新:如果仅仅是想为某个分类输出 RSS,drupal 默认就有。比如分类的 URL 是 http://example.com/taxonomy/term/7/0/ 的话,其 Feed 地址就是 http://example.com/taxonomy/term/7/0/feed 。如果需要更多的自定义设置,请用下面的方法。
三、为 drupal 制作自定义 RSS
自定义 RSS 需要用到 drupal 的 views 模块(非常强大的模块,关于如何安装 drupal module 的教程请 google,这里不赘述)。下面以 views 2.x 版本为例,讲一下如何为某个分类的文章生成单独的 RSS,为其他文章输出 RSS 的办法都可以依此类推。如果之前你已经用过 views,创建好了页面,请直接跳到第(四)小步。
(一)
安装、开启好 views 之后,在“站点创建”(site building)中进入 views 设置页面。
点 add 新增一个 view。
名字、描述等根据自己的情况填写,view type 选择 node,然后点击 next 进入详细设置页面。
(二)
views 的详细设置页面选项非常多,乍看起来令人眼花缭乱,不知所措。不过别着急,这里面的大部分设置我们都不用管。
首先选择要在 RSS 中包含哪些文章。点击 filter (过滤器)旁边的加号,添加一个过滤器。
下面会列出非常多的条件,我们就用这些条件筛选出需要包括在 RSS 中的内容。这些条件是可以多选的,它们之间是“与”的关系,也就是说,只有同时满足这些条件的文章才会包括进来。
我们希望为某个分类的文章输出 RSS,所以这里我们选择 taxonomy: term (分类:术语)作为条件。实际上,这里的条件非常丰富,我们可以选择自己所需的条件,精确地筛选出要展示的文章,比如某个作者的文章、某个时间发表的文章等。
点 add 确定之后,还会根据该网站所设置的分类列出一些选项。dropdown 方式是它列出所有的分类让你选择,autocomplete 方式是你自己输入分类的名称,按需求选择即可。然后点 update 确定。
然后就可以选择分类了。如果有的文章同时属于多个分类的话,就会重复出现,为了避免重复,可以勾选 reduce duplicates 选项,不过重复文章太多的话可能会影响效率的哦。
需要注意的是,最好再添加一个过滤器,勾选上 Node: published (节点:已发表)。因为我们只希望 Feed 中包括已经发表的文章,不想让草稿或隐藏的文章也出现在 RSS 中。
在published 前面打勾,点 update 确定。
(三)
下面是设置在 RSS 中每个节点(node)显示哪些字段,一般就是标题和正文(或摘要)。点击 fields(字段)旁边的加号。
勾选上 node: title (节点:标题)和node: body (节点:正文),如果只想输出摘要的话就勾选 node: teaser (节点:摘要),点 add 确定。
下面会提示对这些字段作进一步的设置。
label 是在该字段前面显示的字段名字,比如每篇文章的标题前面都会显示“标题”两个字,一般来说很少有网站会这么做,所以我们把这个框留空,里面本来的字删掉。
exclude from display 是说最后结果里不显示这个字段,但不显示我还费这个劲干吗?所以这项别勾选。
link this field to its node 是给标题加上链接,链向原文所在页面。这个很有用,最好选上。
点 update 按钮确定。
这时我们会看到页面下方已经可以预览结果了。
(四)
这是制作 RSS 种子最关键的一步,或者说,从现在开始,我们才真正开始设置 RSS 本身。在左上角的下拉选单中选择 Feed,然后点击下面的 add display 按钮。
这个 Feed 现在还没有 URL 地址,我们来设置地址。点击 path 旁边的 none。
在文本框中输入地址。URL 中最好包含 RSS 或 Feed 的字样,这样别人和自己都能一目了然地看出这是 RSS Feed,不是一般的页面。
这时我的 drupal 会提示缺少一个插件,但只要点击 missing style plugin,一路点下去,就一切完好了。
(五)
最后的关键一步,一定要点击 save 保存!不然前面所有的心血就全部付之东流啦。
忙了这么半天,早就迫不及待地想看看最后成果了吧?打开阅读器,把刚才设置的 URL 输入进去,是不是看到辛苦制作的 RSS Feed 完美呈现出来了?
如果以上的你已经可以全部掌握,那么就试着摆弄 views 里的其他选项吧,它们可以让你对显示结果有更精细的控制。比如 title 是 Feed 的标题,items to display 是 Feed 包含的文章数目,sort criteria 是文章排列顺序等,基本上都是比较一目了然的,试一下就知道怎么用了。
四、感想
drupal 是个优秀的框架,但其原生的输出 RSS 功能比较弱。views 是个强大的模块,但是它太强大了,可配置的选项太多,让新人有点无所适从。Wordpress 在这方面做的倒是比较好,默认就为几乎一切输出了 RSS,比如每个分类、每篇文章都有自己的 RSS,无需任何配置,虽然可定制性没有 views 那么强,但用起来很方便,很傻瓜化。当然,drupal 和 WordPress 的定位都不同,有各种差异都很正常,两者都是很受欢迎的程序,我可没有在说谁优谁劣哦。
本文作者:Betty | 本文地址: https://myfairland.net/make-rss-feed-for-drupal/
本站文章除特殊标明者外均为原创,版权所有,如需转载,请以超链接形式注明作者和原始出处及本声明
受教了
太客气啦
其实用WP就能当一个简单的CMS来用哦,drupal貌似还是太强大了点
不错我搜藏了。应该会用到
@Elton Disney:
是啊,drupal“太”强大了……
@esr2587758:
有用就好 ^^
好东西 !
个人比较懒,直接用feedsky烧制了
@林晨:
…feedsky得需要你本来就输出rss才能重新烧制吧?feedsky只是feed托管,不会为本来不输出rss的站点提供feed
好东西啊,得慢慢消化
还有元旦快乐!
@煎鱼:
新年快乐~
老大,我正需要呢。非常感谢!
好文,学习了
太棒了!不但教会了怎么弄rss,还教会了怎么用view。
牛人啊,拜你为师!!!
很实用的,谢谢!
好东西,收藏了
[…] 自定义显示各种内容。功能强大,设置复杂,参见我以前写的教程:为 drupal 站点制作 RSS Feed(暨Views模块用法简介) […]
[…] 自定义显示各种内容。功能强大,设置复杂,参见我以前写的教程:为 drupal 站点制作 RSS Feed(暨Views模块用法简介) […]
[…] 自定义显示各种内容。功能强大,设置复杂,参见我以前写的教程:为 drupal 站点制作 RSS Feed(暨Views模块用法简介) […]
[…] 自定义显示各种内容。功能强大,设置复杂,参见我以前写的教程:为 drupal 站点制作 RSS Feed(暨Views模块用法简介) […]
好文