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>