Customizing RSS Output
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