%SHORTDESCRIPTION%
---++ Description
This plugin displays RSS and ATOM feeds from news sites. Use it to build news portals that show headline news.
__Notes:__
* [[Wikipedia:RSS][RSS]] (Rich Site Summary) is an XML standard used to publish frequently updated works such as blog entries, news headlines and audio.
* [[Wikipedia:Atom_%28standard%29][Atom]] is an XML syndication format used for web feeds.
* Syndic8.com at http://www.syndic8.com/ lists many RSS and ATOM feeds.
#SyntaxRules
---++ Syntax Rules
=%HEADLINES{"..."}%=
| *Parameter* | *Explanation* | *Default* |
| ="..."= | Source of RSS or ATOM feed; this can be an url (starting with http) or a web.topic location for internal feeds | None; is required |
| =href="..."= | (Alternative to above) | N/A |
| =refresh="60"= | Refresh rate in minutes for caching feed; ="0"= for no caching | Global =REFRESH= setting |
| =limit="12"= | Maximum number of items shown | Global =LIMIT= setting |
| =header="..."= | Header. May include these variables: %BR% \
- =$channeltitle=, =$title=: title of channel (channel.title) %BR% \
- =$channellink=, =$link=: link of channel (channel.link) %BR% \
- =$channeldescription=, =$description=: description (channel.description) %BR% \
- =$channeldate=, =$date=: publication date of the channel (channel.pubDate) %BR% \
- =$rights=: copyrights of the channel (channel.copyright) %BR% \
- =$imagetitle=: title text for site (image.title) %BR% \
- =$imagelink=: link for site (image.link) %BR% \
- =$imageurl=: URL of image (image.url) %BR% \
- =$imagedescription=: description of image (image.description) \
| Global =HEADER= setting |
| =format="..."= | Format of one item. May include these variables: %BR% \
- =$title=: news item title (item.title) %BR% \
- =$link=: news item link (item.link) %BR% \
- =$description=: news item description (item.description) %BR% \
- =$date=: the publication date (item.pubDate, item.date) %BR% \
- =$category=: the article category (item.category) \
| Global =FORMAT= setting |
| =newline="$br"= | Convert newlines in feed; ="$br"= becomes =<br />= tag | ="$n"= (newline) |
| =filter="..."= | Filter out content from feed; for example to delete an encoded break tag specify ="<br>"= | =""= |
| =touch="..."= | Touch (edit/save) topics if the feed has updates. Specify a comma-space delimited list of !TopicNames or !Web.TopicNames, such as ="%TOPIC%, !NewsLetter"=. Useful to send out newsletter using MailerContrib, showing new feeds since last newsletter. To update feeds, visit topics with feeds in regular intervals (using cron with wget or the like). | N/A |
The =header= and =format= parameters might also use variables rendering the =dc=, =image= and =content= namespace information. Note, that only bits of interest have been implemented so far and those namespaces might not be implemented fully yet.
---+++ Rendering the =dc= namespace
The following variables are extracting the =dc= namespace info, that could be used in =header= and =format=. Note that some of the variables are already used above. This is done by purpose to use different feeds with the same formatting parameters. If there's a conflict the non-dc tags have higher precedence, i.e. a =<title> content </title>= is preferred over =<dc:title> content </dc:title>=.
* =$title=: channel/article title (dc:title)
* =$creator=: channel creator (dc:creator)
* =$subject=: subject text; this will also add an image according to the subject hash
list, see [[#Subject_Images][above]] (dc:subject)
* =$description=: ... (dc:description)
* =$publisher=: the channel/article publisher (dc:publisher)
* =$contributor=: ... (dc:contributor)
* =$date=: ... (dc:date)
* =$type=: ... (dc:type)
* =$format=: ... (dc:format)
* =$identifier=: ... (dc:identifier)
* =$source=: ... (dc:source)
* =$language=: ... (dc:language)
* =$relation=: ... (dc:relation)
* =$coverage=: ... (dc: coverage)
* =$rights=: ... (dc: rights)
---+++ Rendering the =image= namespace
An =image:item= is converted into an <img> tag using the following mappings:
* =src=: image url (rdf:about attribute of the image.item tag)
* =alt=: image title (title)
* =width=: image width (image:width)
* =height=: image height image:height)
---+++ Rendering the =content= namespace
The variable =$content= is referring to the =<content:encoding> content </content:encoding>=.
---++ Examples
---+++ Slashdot News
Write
%HEADLINES{ "http://slashdot.org/slashdot.rdf"
header="*[[$link][$title]]:* $description"
format="$t* [[$link][$title]]"
limit="4"
}%
to get the latest Slashdot news as a bullet list format:
%HEADLINES{ "http://slashdot.org/slashdot.rdf" header="---+!! [[$link][$title]]$n $description" format="$t* [[$link][$title]]" limit="4" }%
---++ Plugin Settings
Plugin settings are stored as preferences settings. Do __not__ change the settings here, they are here only for illustration purposes showing the default values. Define the settings in [[%LOCALSITEPREFS%]]. For example, to customize the =HEADLINESPLUGIN_USERAGENTNAME= setting, add a =* Set HEADLINESPLUGIN_USERAGENTNAME = ...= bullet in [[%LOCALSITEPREFS%]].
* Refresh rate in minutes for cached feeds. Set to =0= to disable caching:
* Set HEADLINESPLUGIN_REFRESH = 60
* Maximum number of items shown:
* Set HEADLINESPLUGIN_LIMIT = 100
* Use LWP::UserAgent if set to =1=, or fallback to TWiki's internal =getUrl()= method if set to =0=:
* Set HEADLINESPLUGIN_USELWPUSERAGENT = 1
* Timeout fetching a feed using the LWP::UserAgent:
* Set HEADLINESPLUGIN_USERAGENTTIMEOUT = 20
* Name of user agent:
* Set HEADLINESPLUGIN_USERAGENTNAME = TWikiHeadlinesPlugin/2011-07-08
* Default header: (variables are explained in the syntax rules)
* Set HEADLINESPLUGIN_HEADER =
* Allow HTML in header and format parameters of the HEADLINES variable. If set to =0=, HTML is *not* allowed those in parameters. This is to guard against Cross-Site Scripting (XSS) attacks. The HEADLINESPLUGIN_HEADER and HEADLINESPLUGIN_FORMAT plugin settings allow HTML regardless of this setting.
* Set HEADLINESPLUGIN_ALLOWHTML = 0
* Values taken from configure: (only supported if CPAN:LWP is installed)
* =$TWiki::cfg{PROXY}{HOST}= - proxy host, such as ="proxy.example.com";=
* =$TWiki::cfg{PROXY}{PORT}= - proxy port, such as ="8080";=
* =$TWiki::cfg{PROXY}{SkipProxyForDomains}= - domains excluded from proxy, such as ="intra.example.com, bugs.example.com";=
---++ Style Sheets
The default HEADER and FORMAT settings use the following styles. See the [[%ATTACHURL%/style.css][style.css]] file defining the default CSS properties (indentation illustrates enclosure).
* =headlinesRss=: output of the HeadlinesPlugin (div)
* =headlinesChannel=: channel header (div)
* =headlinesLogo=: channel logo (div)
* =headlinesTitle=: channel title (div)
* =headlinesDate=: channel date (div)
* =headlinesDescription=: channel description (div)
* =headlinesRight=: channel copyright (div)
* =headlinesArticle=: one news item (div)
* =headlinesTitle=: article title (div)
* =headlinesDate=: article date (span)
* =headlinesCreator=: author of article (span)
* =headlinesSubject=: subect category of the article (span)
* =headlinesText=: article text (div)
---++ Plugin Installation Instructions
This is a pre-installed plugin. TWiki administrators can upgrade the plugin as needed on the TWiki server.
%TWISTY{
mode="div"
showlink="Show details %ICONURL{toggleopen}% "
hidelink="Hide details %ICONURL{toggleclose}% "
}%
__Note:__ You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the TWiki server.
* For an __automated installation__, run the [[%SCRIPTURL{configure}%][configure]] script and follow "Find More Extensions" in the in the __Extensions__ section.
* Or, follow these __manual installation__ steps:
* Download the ZIP file from the Plugins home (see below).
* Unzip ==%TOPIC%.zip== in your twiki installation directory. Content:
| *File:* | *Description:* |
| ==data/TWiki/%TOPIC%.txt== | Plugin topic |
| ==pub/TWiki/%TOPIC%/style.css== | Default CSS |
| ==lib/TWiki/Plugins/%TOPIC%.pm== | Plugin Perl module |
| ==lib/TWiki/%TOPIC%/Core.pm== | Plugin core |
* Set the ownership of the extracted directories and files to the webserver user.
* Make sure the dependencies listed in the table below are resolved.