The feed components are configured in
/modules/rssaggregator/templates/components.
combinedFeedsParagraph: Combines all feeds in a channel and displays
them sequentially. Editors can set the number, sort order and character
limit of the entries. Use with standard or planet feeds.
feedListParagraph: Displays a defined number of entries for each
feed in the channel. The external feed title is used if no internal
title is set. Editors can set the number, sort order and character limit
of the entries. Use with standard or planet feeds.
planetFeeds: Displays the entries of all feeds in a channel with the
latest appearing first. Uses the HTML of the source entry. This means
that images and links are preserved and displayed. Allows pagination.
Use with planet feeds only.
feedSyndication: Uses planet
statistics data to display a list of authors with feed subscription
icons and links to the external website. Author list is ordered by post
frequency with top contributors appearing first. Editors can set a title
and subtitle, define the number of authors to include, and whether links
and the post count should be included. Use with planet feeds only.
feedStatistics: Displays Atom and RSS subscription icons and links
that allow users to subscribe to the feed on your site. Editors can add
a title and select a planet feed. Use with planet feeds only.
Creating a custom component
The model class and template script are the important properties that
determine content in the different components. All RSS model classes
extend info.magnolia.module.rssaggregator.templates.components.AbstractFeedModel,
which provides the business logic to retrieve a defined feed and its
data from the rss workspace and supports:
Entry sorting by title or publication data.
Ascending and descending entry sorting.
Maximum results property. Default is `20`.
Search capabilities
Any custom model class should extend AbstractFeedModel.
You can schedule automated imports for all feeds in the Configuration app. The global settings can be overridden for single feeds.
Periodic import:
Disabled: Automated imports are disabled by default. You can switch off them off at any time.
Import every: Quick option to set imports for a specified number of minutes, hours or days.
Use cron time/date defintion: Define a Quartz Cron Pattern to create a suitable import schedule.
For example, the pattern 0 0 6 * * * imports data daily at 6 a.m. See Cron Maker for help.
Fetcher: Substitute the default feed fetcher class if necessary.
See Properties table below for options.
The imports are stored in /modules/rssaggregator/config.
Property
Description
config
required
Module configuration node.
automatedImport
required, default is false
Enables and disables automated imports.
cron
required
The cron pattern for scheduled imports.
fetcherClass
required
info.magnolia.module.rssaggregator.importhandler.FastRSSFeedFetcher
retrieves RSS feed content over HTTP. Fetches all feed channels defined
in an aggregate feed. You can use
info.magnolia.module.rssaggregator.importhandler.SimpleRSSFeedFetcher
as an alternative. This is a simple, single-threaded fetcher that
reduces server load and is suitable when you don’t have many feed
channels and you don’t import often.
importTimingSetter
required
Utility used to build the cron expression.
Setting automated imports for single feeds
You can configure automated import settings for each feed in the Import Settings tab of the edit dialog.
These setting override the global settings.
Periodic import:
Select This feed has different import settings to override the global settings.
Disabled: Stops any scheduled automated imports for the individual feed and the global settings take over.
Import every: Quick option to set imports for a specified number of minutes, hours or days.
Use cron time/date defintion: Define a Quartz Cron Pattern to create a suitable import schedule.
For example, the pattern 0 0 6 * * * imports data daily at 6 a.m. See Cron Maker for help.
Fetcher: Substitute the default feed fetcher class if necessary.
The content of this folder is that same for standard and planet feeds.
This content is used for standard feed components(combinedFeedsParagraph and feedListParagraph) but not by the
planetFeed component. See Generating
planet data for more.
channel-<number>
A channel is created for each RSS feed.
entry-<number>
One entry in the feed such as one blog post.
author
channelTitle
content
….
description
Feed properties retrieved from the internet.
link
….
automatedImport
Internal feed properties.
cron
….
Generating planet data
Planet commands
The module includes two custom commands to generate planet data.
The commands are configured in
/modules/rssaggregator/commands/planet/.
Processes all feeds in the channel and creates an archive of feed
items if the feed is marked as a planet feed.
Stores individual feed items in the planet archive and assigns
author, channelTitle, title, content and description
properties. Posts without these properties are not stored in the archive
Builds checksums to eliminate
duplicates. New items are only added if they don’t already exist in the
archive.
Ensures that the maximum nodes allowed under a single node is not
exceeded.
CRON expression that
sets the scheduled execution time. You can use the pattern
0 0/5 * 1/1 * ? * to generate the initial data five minutes after
changing the settings. Cronmaker is a useful
tool for building expressions
description
optional
Description of the job.
Planet data storage
Planet data is used in planet components. The data is
stored in the planetData folder in the rss workspace. View the data
in your custom JCR.
Structure:
<aggregator name>
planetData
The GeneratePlanetDatacommand reads feed data and stores it here.
posts-<number>
All posts from all feeds. First all entries
from the first feed, newest entry first. Then all posts from the second
feed, and so on.
entry-<number>
One entry in the feed such as one blog post.
author
authorLink
channelTitle
checksum1/2
The module uses
checksums to handle duplicate
entries. Because feed data is deleted and recreated on every run, there
is a high probability that a subsequent run will include entries that
were contained in a previous run. Some entries may only have changed
slightly, for example a different publication date. To avoid duplicates,
the PlanetDataGenerator command uses checksums for each entry. Two
checksum properties are generated. If an archive node with one of the
checksums exists, no data is stored for the new item and an INFO level
entry is written in the logs.
description
hidden
link
pubDate
rssLink
title
Planet statistics storage
Planet statistics are generated from planet
data and stored in the statistics folder in the rss workspace. View
the data in your custom JCR.
Structure:
<aggregator name>
statistics
The CollectPlanetStatisticscommand extracts statistics from the
/planetData node. This node is deleted and recreated on every run of
the command.
authors
All authors from all feeds.
author-<number>
Each author is allocated a number.
counted-posts
Each child node is a reference to a post in
the feed.
<post UUID>
….
author
blogLink
feedLink
postCount
Number of posts by this author in the aggregate
feed.
Configuring how long to keep planet data
Planet data is generated and stored for the last 3 months by default.
You can configure the time period for which the data is retained in
/modules/rssaggregator/config/planetOptions.
Property
Description
planetOptions
required
Planet options
lastMonthsIncluded
required, default is `3`
Number of months.
Feed generators
Feed generators generate RSS feeds from Magnolia content and imported
content stored in the rss workspace.
Four feed generators are registered in
/modules/rssaggregator/config/feedGenerators.
Property
Description
feedGenerators
required
Feed generators node.
<generator name>
required
Generator name.
class
required
Generator class:
rss:
info.magnolia.module.rssaggregator.generator.RSSModuleFeedGenerator
generates a SyndFeed based on
standard aggregation feeds.
planet:
info.magnolia.module.rssaggregator.generator.PlanetFeedGenerator
generates a SyndFeed based on planet
aggregation feeds.
category:
info.magnolia.module.categorization.syndication.CategorySyndicator
is registered by the
Categorization
module. It generates a SyndFeed based on articles tagged with
categories.
templateContent:
info.magnolia.module.rssaggregator.generator.PageSyndicator generates
a SyndFeed based on template
types and
subtypes.
Custom generators should extend the convenience base class
info.magnolia.module.rssaggregator.generator.AbstractSyndFeedGenerator.
Subclasses need to implement the template methods loadFeedEntries()
and setFeedInfo(SyndFeed).
Feed syndication servlet
The feed syndication servlet writes an XML feed to the response.
The servlet is registered in
/server/filters/servlets/FeedSyndicationServlet.
Property
Description
FeedSyndicationServlet
required
Feed syndication servlet node.
servletClass
requiredinfo.magnolia.module.rssaggregator.servlet.FeedSyndicationServlet
writes an XML feed to the response. Based on the request parameters, the
feedGeneratorsconfiguration is resolved and
used to generate the XML feed. The content of the feed is written to the
response with the appropriate character encoding.
Mappings are configured in /modules/rssaggregator/virtualURIMappings.
Property
Description
virtualURIMapping
required
Virtual URI mapping node
<mapping name>
required
Name of mapping.
class
required
info.magnolia.cms.beans.config.RegexpVirtualURIMapping
allows you to specify a regular expression pattern that matches a
sequence of characters.
fromURI
required
Pattern to match in the requested URI.
toURI
required
Concrete URI where the request is mapped to.
Security
Public users
The anonymous
role does not have permissions to the rss workspace on the author or public instance. Public users cannot see the feed content by default.
The RSS Aggregator module installs the rss-aggregator-base role that
provides read permissions to the rss workspace.
Workspace
Permission
Scope
Path
Rss
Read only
Selected and sub nodes
/
To provide public access to feed content, assign the
rss-aggregator-base role to the anonymous systems user on the public
instance.
App access
By default only superuser can access the Feeds app and work with feeds
because the superuser role includes read/write permissions to the
rss and config workspaces.
Here’s how to grant permissions for various feed tasks:.
App launcher access: The Feeds app is in the Setup group and editors
typically cannot access this group. Move the app to the Edit group to
grant access in the app launcher. See
App launcher layout
for more. This allows the user to open the app but not view the content.
Read only access: Assign the rss-aggregator-base role to give read
only access to feed content. This allows the user to view the list of
feeds in the app, select feeds in components and view feed content on
pages.
Read/write access: Create a new role granting read/write access to
the rss workspace and assign it to the user. This allows the user to
create new feeds in the Feeds app, but they cannot access the
Configuration subapp.
Configuration app access: Create a new role granting read/write
access in the config workspace to /modules/rssaggregator to allow
the user to schedule automated
feed imports in the Configuration subapp.