Difference between revisions of "Customizing RSS Output"

From EPrints Documentation
Jump to: navigation, search
m
m (Reverted edit of OmnE71, changed back to last version by Hk)
Line 55: Line 55:
 
Your customized RSS feeds will be located at
 
Your customized RSS feeds will be located at
  
*<nowiki>http://<base_url>/perl/latest_tool?mode=person</nowiki>
+
*<nowiki>http://<base_url>/perl/latest_tool?mode=person&value=<person_id>&output=rss</nowiki>
 +
*<nowiki>http://<base_url>/perl/latest_tool?mode=institution&value=<institution_id>&output=rss</nowiki>

Revision as of 15:54, 11 April 2007

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

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&value=<person_id>&output=rss
  • http://<base_url>/perl/latest_tool?mode=institution&value=<institution_id>&output=rss