Modifying Themes

Overriding default templates

Omeka has a set of default template files that all themes use, and override when the desired page structure is different from the default.

The default theme files are in the folder /application/views/scripts in your Omeka installation. Subfolders correspond to the pages that are seen along url patterns. For example, the page displayed at {YourOmekaSite}/items/show is produced by the file in /application/views/scripts/items/show.php.

Themes might or might not override these files. The default theme, for example, has an items directory that overrides two of the default templates: random-featured.php and show.php


If you want to modify a file in a theme, the first place to look is in the theme’s own directories. But notice that that will only work if the theme has overridden the default template. In many cases, then, you will need to copy the default template files into the theme, taking care to maintain the directory structure.

So, for example, imagine wanting to modify the show page for items, the browse page for items, and the show page for collections in the default theme.

The /items/show.php file is easy, since the default theme already includes it.

For the browse page for items, we need to copy /application/views/scripts/items/browse.php to /default/items/browse.php

For the browse page for collections, we need to first create the directory: /default/collections

Then we can copy /application/views/scripts/collections/browse.php to /default/collections/browse.php

The result in the default theme will look like:


Adding custom configuration variables to a theme

For interface elements in a theme that you want site administrators to be able to edit from the Omeka UI (like homepage text, footer text, etc.), you may want to create new custom theme configuration variables. Theme configuration items are controlled by the config.ini file in your theme’s root directory.

To add a new variable to your theme’s configuration, you’ll need to add lines like the following to the [config] section of your theme’s config.ini file (at a minimum)

my_custom_theme_variable.type = "text"
my_custom_theme_variable.options.label = "Label for this variable which will be displayed on the theme config page"
my_custom_theme_varaible.options.value = "Default value"
my_custom_theme.variable.options.description = "Description for this variable which will be displayed on the theme config page"

The theme config interface uses the Zend Framework Form API on the back-end, and the type option defines which subclass of Zend\Form\Element\ will be used to render this config item in the UI. So for example, you can use textarea, text, color, checkbox, etc. Each of these different element types will have their own config options. You may want to look through some of the different Omeka themes to see how these different elements are used (for example, Thanks Roy makes use of the color element).

The config.ini file also has a [groups] section which defines groupings by which the config is displayed in the user interface. To add a new element to an existing grouping, just add a new line of the form

grouping.elements[] = "my_new_element"

To access theme variables in a theme file, you’ll call get_theme_option using either the machine name of the variable from the config.ini file (e.g. get_theme_option('my_custom_theme_variable')), or a human-readable version of the same, replacing underscores with spaces and capitalizing each letter (get_theme_option('My Custom Theme Variable')).