可以显示多个源的网络部件
项目描述
简介
collective.portlet.feedmixer是一个用于Plone 3的组件,可以显示一个或多个内容源。
Feedmixer使用feedparser来处理feed,这使它能够支持RSS 0.90、Netscape RSS 0.91、Userland RSS 0.91、RSS 0.92、RSS 0.93、RSS 0.94、RSS 1.0、RSS 2.0、Atom 0.3、Atom 1.0和CDF feed。
安装
此包需要Plone 3.0或更高版本以及feedparser。
不使用buildout安装
首先安装feedparser。您可以在系统Python路径或您的Zope实例的lib/python目录中安装它。如果您已安装setuptools,您可以使用easy_install进行安装。
easy_install FeedParser
如果您没有安装setuptools,您可以使用feedparser源中的setup.py脚本来手动安装。如果您想将feedparser安装在Zope实例内部而不是系统范围内,可以使用其“–prefix=’’”选项在Zope实例的“’lib/python’”目录中安装。
接下来,您需要安装此包。这也可以通过在系统路径包或Zope实例的lib/python目录中安装它来完成。与feedparser一样,您可以使用easy_install或通过setup.py脚本进行安装。
安装包后,需要在您的Zope实例中注册。这可以通过将collective.portlet.feedmixer-configure.zcml文件放入etc/pakage-includes目录并包含以下内容来完成:
<include package="collective.portlet.feedmixer" />
或者,您还可以将此行添加到已注册的包或Product的configure.zcml中。
使用buildout安装
如果您使用buildout来管理实例,安装collective.portlet.feedmixer将更加简单。您可以通过将其添加到实例的eggs行来安装它。
[instance] eggs = collective.portlet.feedmixer zcml = collective.portlet.feedmixer
最后一行告诉buildout生成一个zcml片段,该片段告诉Zope配置collective.portlet.feedmixer。
如果另一个包依赖于feedmixer egg或直接包含其zcml,您不需要在buildout配置中指定任何内容:buildout将自动检测这一点。
更新配置后,您需要运行“bin/buildout”,这将负责更新您的系统。
使用小部件
为了使用feedmixer小部件,您首先需要将feedmixer产品安装到您的站点上。这通过Plone站点设置的“添加产品”控制面板来完成。完成后,将出现一个新的“Feed Mixer”小部件类型。
Feedmixer小部件有多个可配置选项
- 小部件标题
这将被用作小部件的标题。
- 缓存feed数据的最大时间
这决定了feed可以在feedmixer尝试刷新feed数据之前缓存多久。为了减少对其他服务器的负载,建议将其设置为合理的较大值。
- 显示的项目数
小部件中显示的项目数。
- 所有feed的URL
所有feed的URL列表。所有标准RSS和Atom feed都受支持,以及CDF feed。
性能
小部件尽可能地友好,并且仅在需要时才重新加载feed。它以几种不同的方式完成此操作。
所有feed都存储在plone.memoize中定义的共享缓存中。默认情况下是Zope RAMCache,但您可以通过注册不同的“ICacheChooser”实用程序来选择不同的缓存。使用的缓存密钥是“collective.portlet.feedmixer.FeedCache”。例如,对于具有多个Zope实例的部署,您可以使用基于memcached的缓存,这允许您在所有Zope实例之间共享下载的feed。
如果缓存中的feed条目已过期,则需要重新加载。但是,feedmixer小部件将尝试使用ETAGs和HTTP Last-Modified标题来检查feed是否自上次下载以来已更新。如果没有更新,则缓存feed的超时将更新并继续使用。
版权和致谢
集体.portlet.feedmixer 版权所有 2007 年,由 Jarn(原名 Plone Solutions)所有。
由 Wichert Akkerman 编写。
变更日志
1.6 - 2011-09-13
使其与 Plone 4 兼容,感谢 Rafahela Garcia Bazzanella 修复 [martior]。
添加了葡萄牙巴西翻译,感谢 Rafahela Garcia Bazzanella [martior]。
直接导入 IVocabularyFactory 以实现 Plone 4.1 兼容性。 [lewy]
修复 entries() 中的不良缓存键。之前,使用生成器对象的 repr。这意味着实际上没有请求缓存。更糟糕的是,它导致在同一请求中渲染的多个 portlet 之间的缓存键间歇性重叠。 [tmog]
1.5 - 2011-03-02
将完整 feed 的条目包裹在一个 div 中,以便我们可以从视觉上区分它们。 [jbaldivieso]
修复完整 feed 的查找 feed 条目,以便缓存装饰器可以像预期的那样从视图中获取请求。 [davisagli]
显式包含 plone.app.portlets 的 ZCML,以确保 plone.portlet 指令在所有情况下都正常工作。 [hannosch]
添加了西班牙语翻译 [macagua]
1.4 - 2009-11-06
移除了编辑权限,因为这会阻止将 feedmixer portlet 添加到用户的仪表板。 [matth]
1.3 - 2009-04-03
修复完整_feed 视图,以便在从 feed 项目获取描述时具有回退功能,因为这不是 rss2 标准中必需的字段。 [martior]
1.2 - 2008-07-10
修复了 portlet 的“更多 ...”链接。我们必须存储指向 portlet 分配上下文的路径,因为 plone[.app].portlets 没有公开它。这个工作区取自 ely.portlets.image。这将仅适用于新创建的 feedmixer portlet,现有的仍然会在子文件夹中创建错误的 URL。 [fschulze]
添加了法语翻译并修复了一些 i18n 问题。 [glenfant]
1.1 - 2007-11-28
正确缓存混合 feed 条目:按实例缓存而不是按请求缓存意味着只要 ZODB 没有使分配过期,我们就永远不会更新我们的 feed。相反,按请求缓存并使用分配的 feed_urls 列表。 [wichert]
修复 portletBottomLeft CSS 类名中的拼写错误。 [daftdog]
1.0 - 2007-11-05
初始发布。