Overrides for templates go in a directory that parallels the structure of the default templates directory. The overrides then get pulled in via the Apache configuration.
In the following example, we demonstrate how to create a file that overrides
the default "Advanced search page" (advanced.tt2) by adding a new templates
directory and editing the new file in that directory.
Adding an override for the Advanced search page (example).
bash$ mkdir -p /openils/var/templates_custom/opac
bash$ cp /openils/var/templates/opac/advanced.tt2 \
/openils/var/templates_custom/opac/.
bash$ vim /openils/var/templates_custom/opac/advanced.tt2
We now need to teach Apache about the new templates directory. Open eg.conf
and add the following <Location /eg> element to each of the <VirtualHost>
elements in which you want to include the overrides. The default Evergreen
configuration includes a VirtualHost directive for port 80 (HTTP) and another
one for port 443 (HTTPS); you probably want to edit both, unless you want the
HTTP user experience to be different from the HTTPS user experience.
Configuring the custom templates directory in Apache’s eg.conf.
<VirtualHost *:80>
# <snip>
# - absorb the shared virtual host settings
Include eg_vhost.conf
<Location /eg>
PerlAddVar OILSWebTemplatePath "/openils/var/templates_algoma"
</Location>
# <snip>
</VirtualHost>
Finally, reload the Apache configuration to pick up the changes:
Reloading the Apache configuration.
bash# /etc/init.d/apache2 reload
You should now be able to see your change at http://localhost/eg/opac/advanced
You can define multiple layers of overrides, so if you want every library in your consortium to have the same basic customizations, and then apply library-specific customizations, you can define two template directories for each library.
In the following example, we define the template_CONS directory as the set of
customizations to apply to all libraries, and template_BR# as the set of
customizations to apply to library BR1 and BR2.
As the consortial customizations apply to all libraries, we can add the
extra template directory directly to eg_vhost.conf:
Apache configuration for all libraries (eg_vhost.conf).
# Templates will be loaded from the following paths in reverse order. PerlAddVar OILSWebTemplatePath "/openils/var/templates" PerlAddVar OILSWebTemplatePath "/openils/var/templates_CONS"
Then we define a virtual host for each library to add the second layer of customized templates on a per-library basis. Note that for the sake of brevity we only show the configuration for port 80.
Apache configuration for each virtual host (eg.conf).
<VirtualHost *:80>
ServerName br1.concat.ca
DocumentRoot /openils/var/web/
DirectoryIndex index.html index.xhtml
Include eg_vhost.conf
<Location /eg>
PerlAddVar OILSWebTemplatePath "/openils/var/templates_BR1"
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName br2.concat.ca
DocumentRoot /openils/var/web/
DirectoryIndex index.html index.xhtml
Include eg_vhost.conf
<Location /eg>
PerlAddVar OILSWebTemplatePath "/openils/var/templates_BR2"
</Location>
</VirtualHost>