Package: collective.portlet.feedmixer
Introductioncollective.portlet.feedmixer is a portlet forPlone 3which can show one
or multiple content feeds.Feedmixer usesfeedparserto process feeds which allows it to support 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, and CDF feedsInstallingThis package requires Plone 3.0 or later and feedparser.Installing without buildoutFirst install feedparser. You can install this in either the system
python path or in the lib/python directory of your Zope instance. If you
have setuptools installed you can do this using easy_install:easy_install FeedParserIf you do not have setuptools you can install it manually using the setup.py
script in the feedparser source. If you want to install feedparser inside
your Zope instance instead of system wide you can its ‘’–prefix=’’ option
to install in the ‘’lib/python’’ directory of your Zope instance.Next you need to install this package. This can also be done by installing
it in either your system path packages or in the lib/python directory of
your Zope instance. As with feedparser you can do this using either
easy_install or via the setup.py script.After installing the package it needs to be registered in your Zope
instance.  This can be done by putting a
collective.portlet.feedmixer-configure.zcml file in the etc/pakage-includes
directory with this content:<include package="collective.portlet.feedmixer" />or, alternatively, you can add that line to the configure.zcml in a
package or Product that is already registered.Installing with buildoutIf you are usingbuildoutto manage your instance installing
collective.portlet.feedmixer is even simpler. You can install it by adding
it to the eggs line for your instance:[instance]
eggs = collective.portlet.feedmixer
zcml = collective.portlet.feedmixerThe last line tells buildout to generate a zcml snippet that tells Zope
to configure collective.portlet.feedmixer.If another package depends on the feedmixer egg or includes its zcml
directly you do not need to specify anything in the buildout configuration:
buildout will detect this automatically.After updating the configuration you need to run the ‘’bin/buildout’’, which
will take care of updating your system.Using the portletIn order to use the feedmixer portlet you will first need to install the
feedmixer product in your site. This is done through the standard ‘’Add-on
products’’ control panel in the Plone site setup. After this has been done
a new ‘’Feed Mixer’ portlet type will be available.Feedmixer portlets have several configurable options:Portlet TitleThis will be used as the title of the portlet.Maximum time to cache feed dataThis determins how long feeds can be cached before feedmixer will attempt
to refresh the feed data. In order to reduce the load on other servers
it is advisable to set this to a reasonably large value.Number of items to displayHow many items to show in the portlet.URL(s) for all feedsA list of URLs for all feeds. All standard RSS and Atom feeds are
supported as well as CDF feeds.PerformanceThe portlet tries to be very friendly and will only reload a feed if required.
It does this in several different ways.All feeds are stored in a shared cache as defined inplone.memoize. This
defaults to being a Zope RAMCache but you can choose different caches by
registering a different ‘’ICacheChooser’’ utility. The cache key used
is ‘’collective.portlet.feedmixer.FeedCache’’. For example for deployments with
multiple Zope instances you can use amemcachedbased cache which will
allow you to share downloaded feeds amongst all Zope instances.If a feed entry has expired in the cache it needs to be reloaded. However
the feedmixer portlet will try to use bothETAGsand HTTP Last-Modified
headers to check if the feed has been updated since the last time it was
downloaded. If it has not been updated the timeout for the cached feed will
be updated and continue to be used.Copyright and creditscollective.portlet.feedmixer is copyright 2007 byJarn(formerly known
as Plone Solutions).It was written by Wichert Akkerman.Changelog1.6 - 2011-09-13Make it plone 4 compatible, thanks to Rafahela Garcia Bazzanella for fix [martior]Added Portuguese Brazilian transaltions from Rafahela Garcia Bazzanella [martior]Direct import of  IVocabularyFactory for Plone 4.1 compatibility. [lewy]Fix bad cache key on entries(). Previously, the repr of a generator object
was used. This meant effectively no request caching. Worse, it caused intermittent
cache-key overlap with more than one portlet rendered in the same request.
[tmog]1.5 - 2011-03-02Wrap the full feed’s entries in a div so we can visually separate them.
[jbaldivieso]Fix the full feed’s lookup of the feed entries so that the caching decorator
can acquire the request from the view as it expects.
[davisagli]Explicitly include plone.app.portlets’ ZCML to ensure the plone.portlet
directive works in all cases.
[hannosch]Added Spanish translation
[macagua]1.4 - 2009-11-06Removed edit permission as this prevents feedmixer portlet being added to a
user’s dashboard.
[matth]1.3 - 2009-04-03Fix the full_feed view to have fallback when getting description from an feed
item as it is not a required field in the rss2 standard.
[martior]1.2 - 2008-07-10Fix the “More …” link of the portlet. We have to store the path to the
context of the portlet assignment, because plone[.app].portlets doesn’t
expose it. This workaround was taken from ely.portlets.image.
This will only work for newly created feedmixer portlets, existing ones
will still create wrong urls in subfolders.
[fschulze]Added french translation and made some i18n fixes.
[glenfant]1.1 - 2007-11-28Correct caching of mixed feed entries: caching per instance instead of
per request meant we would never update our feed as long as the ZODB
did not expire the assignment. Instead to cache per request and using the
list of feed_urls of the assignment.
[wichert]Fix typo in the portletBottomLeft CSS class name.
[daftdog]1.0 - 2007-11-05Initial release.