From EPrints Documentation
Revision as of 16:06, 16 April 2012 by Tdb01r (talk | contribs)
Jump to: navigation, search

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


EPrints::Apache::Template - renders a page using a template


<?xml version="1.0" standalone="no"?>
<!DOCTYPE html SYSTEM "entities.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epc="http://eprints.org/ep3/control">
	  <title><epc:pin ref="title" textonly="yes"/> - <epc:phrase ref="archive_name"/></title>


Templates are used to generate the basic layout of the pages in your repository. Different templates can be used to customise sub-sections, or even individual pages.

A template file is written in XML and contains a mix of HTML element and dynamic pins. Pins are locators for content that, when a page is requested, are replaced with the page's title, content etc.

Some Pins default pins will always be available and include things like the page title and content.

If you need to include dynamic content in the page use a pin generated via Dynamic Pins.

Template files are read from EPrints::Repository/template_dirs. If you want to customise the template you should copy it into your repository, rather than editing the system-wide template.

Static HTML Pages

Static files with the .xpage extension are rendered using templates:

  <?xml version="1.0" encoding="utf-8"  standalone="no"  ?>
  <!DOCTYPE page SYSTEM "entities.dtd" >
  <xpage:page xmlns="http://www.w3.org/1999/xhtml" xmlns:xpage="http://eprints.org/ep3/xpage" xmlns:epc="http://eprints.org/ep3/control">
      <style type="text/css">h1 { text-weight: bold }</style>
    <xpage:title>My first XPage</xpage:title>
      Writing XPages is easy.

<xpage:template> is a special pin that, instead of supplying content to the template, changes the template used for rendering. The content is just the template name (without the .xml extension).

Default Pins

  • title
The title of the page.
  • page
The page content.
  • login_status_header
HTML <head> includes for the login status of the user - currently just some JavaScript variables.
  • head
Page-specific HTML <head> contents.
  • pagetop
  • login_status
A menu containing EPrints::Plugin::Screens that appear in key_tools. The content from each plugin's render_action_link is rendered as a HTML <ul> list.
Historically this was the login/logout links plus key_tools but since 3.3 login/logout are Screen plugins as well.
  • languages
The render_action_link from EPrints::Plugin::Screen::SetLang.

Dynamic Pins

In cfg.d/dynamic_template.pl:

  $c->{dynamic_template}->{function} = sub {
    my( $repo, $parts ) = @_;
    $parts->{mypin} = $repo->xml->create_text_node( "Hello, World!" );

In archives/[archiveid]/cfg/templates/default.xml (copy from lib/templates/default.xml if not already exists):

  <epc:pin ref="mypin" />

Or, for just the text content of a pin:

  <epc:pin ref="mypin" textonly="yes" />



The directories scanned for template sources are in EPrints::Repository/template_dirs.


Copyright 2000-2012 University of Southampton.

This file is part of EPrints http://www.eprints.org/.

EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/.