Last updated 17 August 2015. Created on 13 November 2013.
Edited by krina.addweb, kay_v, Shane Birley. Log in to edit this page.

Themekey is a powerful theme switching system. You can create all kinds of recipes to

  • Install
  • Mobile Detect
  • Properties
  • Operators
  • Configure
  • Theme Switching Chain
  • Redirecting Rule Chain


General Tab

These are some general settings for how rules interact with cache, authenticated, and anonymous users.

  • Property drupal:path is case sensitive
    Drupal paths are case insensitive by default. Modules like Global Redirect might change this behavior. Use this to enforce case sensitivity with URLs that you create and use to do any kind of switching.
  • Provide all themes for selection
    Make all installed themes available for selection, not enabled ones only. By default, only the themes enabled on the appearance page will be listed for switching.
  • Retain the theme until a new theme is set
    Select this option, to have logged-in users stay in the same theme until they browse to a new page with an explicit themes set. Your community users (logged in users) view one theme over any switching until your theme switching chain has an explicit requirement. This allows administrators and themers to conduct switching on certain pages for anonymous users while authenticated users are ignored.
  • Retain the theme until a new theme is set for anonymous users
    Select this option to have anonymous users stay in the same theme until they browse to a new page with an explicit theme set. This is the reverse of the above retention rule. Anonymous users ignore theme switching rules while authenticated users obey switching rules.
  • Cron cleans up page cache
    Select this option if ThemeKey should check rules containing time-based properties when cron runs. ThemeKey will carefully clean up the page cache if necessary to provide the right theme to anonymous users automatically, for example, a Christmas theme. This tells cron to clean up any caching on cache-enabled theme switching rules. This is on by default and is recommended.

Ajax Tab

Ajax requires a little more love from the caching system and this section has a few options for just that.

  • Use current theme for Ajax responses
    Many different pages can invoke an Ajax request to system/ajax or another generic Ajax path. It is almost always desired for an Ajax response to be rendered using the same theme as the base page, because most themes are built with the assumption that they control the entire page, so if the CSS for two themes are both loaded for a given page, they may conflict with each other. Drupal provides a generic functionality to handle this issue. Unfortunately some modules do not use it the right way. Therefor ThemeKey provides a generic workaround which solves the issue for some modules.

User Interface Tab

Redirect Tab

  • Only evaluate once
    Only evaluate the rule chain for one time. The evaluation happens immediately when the user hits the site and never again until the user closes the browser.
  • Don't evaluate if the user comes back
    Don't evaluate the rule chain again if the user comes back after a redirect. This state is saved until the user closes the browser.
  • Append drupal compatible path
    Uses urls like index.php?q=node/1 instead of clean urls or translated paths.

Looking for support? Visit the forums, or join #drupal-support in IRC.