What is Themekey?
Many Powerbase sites have more than one custom theme.
Themekey allows you to choose which of your custom themes should be used for a given page. For example, if you have a special event, you could create a custom theme for that event and only display that theme for the given event's registration page.
To use themekey, click (from the left sidebar)
Administration -> Configuration -> User Interface -> Themekey
By default, your themekey settings page will look like this:
There are four settings the indicate which theme is used by default for:
- mailings (unsubscribe links, etc)
Typically, all of these pages will use your main custom theme (in the screen grab above it displays a theme called "demo" - your main custom theme will likely be named after your site).
However, suppose you have a second theme called special event and you want that theme to show up only for the event with id 34 (hint - you can see which IDs are assigned to your event when you view the Manage Events page and look in the parentheses next to the event name).
You can add a new entry by selected "civicrm:event:event_id" from the New Rule drop down.
Next, click save.
At this point, the rule will be at the bottom. Themekey will pick the first theme that matches a rule. So, if you leave it at the bottom, it will never match because the default settings will always take precedence.
So, next grab your new rule by the snowflake-like button and drag it to the top of the page. Then click Save Configuration again.
Using this method, you can specify a different theme for pages by contribution id, contribution type, event id and even event type:
Sometimes things can get complicated. You might want to run a lot of events or contributions at the same time. Adding a single line for each event or contribution will make your page grow bigger and bigger.
So, a short cut is to use a language called "regular expressions."
You can choose a regular expression by selecting the tilde (~) character instead of the equals (=) character.
All regular expressions should be wrapped in parentheses. Insert a pipe character (|) to mean OR. So the expression:
Means, 4 or 15 or 18.
Below is an example of regular expressions in action:
Sometimes, the page you want is not available from the drop down. For example, if you want a particular Personal Campaign Page to display with a different theme or if you want a particular profile displayed a certain way.
For these cases, you can nest criteria to ensure that both the top (outer) criteria and the bottom (inner) criteria match for the theme to be used:
The main rule types used (besides the obvious ones) are:
- drupal:get_q - this checks the path part of the URL or web address (e.g.
- system:query_string - this checks the part of the web address after the question mark (e.g.
The main options for comparison are:
- equals (=) - must be an exact match
- tilde (~) - uses a regular expression match. This is quite powerful and allows you to specify a complicated rule for matching. For more information on writing more complex regular expressions, see this excellent regular expressions tutorial.
- asterisk (*) - this is called a "glob" matcher. It matches the result anywhere in the string. So, if your query_string was:
id=12&test=0&reset=1and your search string was "test=0" then you would have a match.