The Feed module can import RSS or Atom feeds from (almost) any web location and display them in a customizable way. It can also combine feeds from multiple sources.
attribute | required | allowed values | default | description |
---|---|---|---|---|
src | yes | single URL address or semicolon-separated list of URL addresses | none | points to the location of source RSS or Atom feed(s) |
limit | no | any reasonable number | none | limits the number of news items |
offset | no | any reasonable number | 0 | which item number to start from |
If no format is specified all the news items are displayed using the default format. To specify a custom format one should use module invocation:
[[module Feed src="somesource"]]
<custom format>
[[/module]]
where the inner <custom format> element is any block of text following the wiki-syntax, where special variables can be used:
variable | aliases | description |
---|---|---|
%%title%% | title of the news item | |
%%linked_title%% | %%title_linked%% | title of the news item linking to the original web page |
%%channel_title%% | title of the news channel (useful when combining multiple feed sources) | |
%%linked_channel_title%% | %%channel_title_linked%% | title of the channel linking to the feed source page |
%%link%% | URL address to the original news item | |
%%description%% | %%short%%, %%summary%% | short summary of the item |
%%content%% | %%long%%, %%body%% | full content of the item (only when available; falls back to description if not) |
%%date%% | date of the item publication | |
%%date|format%% | prints date with a custom format. Most tokens from php's strftime are accepted. You may find the howto contributed by community useful. | |
%%custom%% | gives access to any field in the feed (see below) |
The default format is:
++ %%linked_title%%
%%date%%
%%description%%
To access any field in the feed environment, use
%%custom <pointer>%%
where pointer is a path to the requested element. It is easier to learn this by example:
Look at fragment of an item from Digg:
<item> <title>UFO gathering draws believers and belittlers</title> <link> http://digg.com/space/UFO_gathering_draws_believers_and_belittlers </link> <description> The 37th annual Mutual UFO Network symposium is being held this weekend in Denver, attracting throngs of believers and the downright curious — as well as upright skeptics and debunkers. </description> <pubDate>Sat, 15 Jul 2006 15:32:45 GMT</pubDate> <guid isPermaLink="true"> http://digg.com/space/UFO_gathering_draws_believers_and_belittlers </guid> <digg:diggCount>72</digg:diggCount> <digg:submitter> <digg:username>capn_caveman</digg:username> <digg:userimage>http://digg.com/userimages/capn_caveman/medium.jpg</digg:userimage> </digg:submitter> <digg:category>Space</digg:category> <digg:commentCount>13</digg:commentCount> </item>
To access the <digg:diggCount> and display it use:
digg counts: %%custom digg:diggCount%%
To access a nested element <digg:username> use:
submitted by %%custom digg:submitter/digg:username%%
Now to access any element starting from the root feed element: look at the fragment of the digg feed code again:
<rss version="2.0"> <channel> <title>digg</title> <language>en-us</language> <link>http://digg.com/</link> <description>digg</description> ...
%%custom feed/channel/title%%
You can also use %%custom%% inside [[image ...]] and some other places. In some cases however a space character must be replaced with an underscore not to confuse the parser, e.g. to display user submitter image from the digg feed you can use:
[[image %%custom_digg:submitter_userimage%%]]
URL for the feeds are:
Simply do:
[[module Feed src="http://rss.slashdot.org/Slashdot/slashdot;http://digg.com/rss/containertechnology.xml"]]
More advanced example:
[[module Feed src="http://rss.slashdot.org/Slashdot/slashdot;http://digg.com/rss/containertechnology.xml" limit="20"]]
++ %%linked_title%% (%%linked_channel_title%%)
%%date%%, submitted by %%custom digg:submitter_username%% %%custom dc:creator%%
%%description%%
[[/module]]
[[module Feed src="http://rss.slashdot.org/Slashdot/slashdot;http://digg.com/rss/containertechnology.xml" offset="20" limit="20"]]
**%%linked_title%%** (%%linked_channel_title%%, %%date%% by %%custom digg:submitter_username%% %%custom dc:creator%%)
[[/module]]
which displays first 20 items in detail and next 20 items just printing the title, channel title, date and submitter.
BTW: a very nice digg feed import is presented at our snippets code repository here.