Customizing RSS Output

From EPrints Documentation
Revision as of 20:03, 2 August 2016 by Tomasz.neugebauer@concordia.ca (talk | contribs) (Default Feed Export Plugins)
Jump to: navigation, search

Default Feed Export Plugins

EPrints comes with three feed export plugins: ATOM (Atom.pm), RSS 1.0 (RSS.pm) and RSS 2.0 (RSS2.pm). They are export plugins that use the EPrints::Plugin::Export::Feed class. An export plugin can be used with the /cgi/latest_tool script to output results sorted by date (most recent first). For example, on a static page (such as index.xpage), the following code would show a link to an Atom feed:

<a href="/cgi/latest_tool?output=Atom">Atom</a>

The generated browse view pages (e.g.: browse by year > 2015) will include links to these default feed formats. Whether or not a feed link is shown on the browse page for a particular export format is controlled by the is_feed function in EPrints::Plugin::Export::Feed class which returns 1 for "feed" export plugins.

The maximum number of items that the latest_tool script includes in its "feed' export is controlled with the following variable set in Latest Tool Configuration file /cfg/cfg.d/latest_tool.pl:

$c->{latest_tool_modes} = {
	default => { citation => "result", max => 20}
};

If you want to export more than the max, you can increase this number in the configuration, but keep in mind that server performance may be effected since the latest_tool script needs to sort, and the link is generated and crawled by search engines for all browse view pages.

How to customize RSS output to show an institution's or person's last n publications.

Warning This page contains out of date information and may no longer work or be superseded by a better technique.

The following section applies to EPrints 2. In EPrints 3, author feed links are included on the creators browse view pages.

RSS output is generated by /opt/eprints2/cgi/latest_tool (URL: http://<base_url>/perl/latest_tool). In the default configuration latest_tool will generate output for fixed searches (filters) only. These filters define both metadata fields and values searched in the archive configuration. One would have to add a filter to the archive configuration for every person or institution that would like its own RSS feed.

Instead, we add a new parameter allow_user_value to a latest_tool mode's configuration. When allow_user_value is set to "true" in the filter definition the value of the CGI parameter value will be searched for in the metadata fields that are defined in the archive configuration.

1. Edit /opt/eprints2/archives/<archive_id>/cfg/ArchiveConfig.pm's "Latest_tool Configuration" section to read:

$c->{latest_tool_modes} = {
	default => { citation => "neat" },
	person => {
		citation => "neat",
		filters => [
			{ meta_fields => [ "creators.id", "editors.id" ], value => "" }
		],
		allow_user_value => 1,
		max => 10
	},
	institution => {
		citation => "neat",
		filters => [
			{ meta_fields => [ "institutions" ], value => "" }
		],
		allow_user_value => 1,
		max => 20
	}
};


2. Alter /opt/eprints2/cgi/latest_tool (starting from line 45) to read:

if( defined $conf )
{
	my $allow_user_value = 0;
	foreach my $key (keys %{$conf} )
	{
		$citation = $conf->{"citation"} if( $key eq "citation" );
		$filters = $conf->{"filters"} if( $key eq "filters" );
		$allow_user_value = $conf->{"allow_user_value"} if( $key eq "allow_user_value" );
		$max = $conf->{"max"} if( $key eq "max" );
	}
	if ( $allow_user_value ) {
		my $value = $session->param( "value" );
		if ( defined $value ) {
			@$filters[0]->{"value"} = $value;
		}
	}
	$class.= "_".$mode;
}
...

3. Restart Apache.


Your customized RSS feeds will be located at

  • http://<base_url>/perl/latest_tool?mode=person