Hot Swapping of Drupal Themes

◷ 1 minute to read   ⁓   Next post →

At the ParentsClick Network we are soon to be rolling out many more sites on our platform. Because of our unique community API (which I will be detailing in a future post) we are running many sites (many not yet released) on the same install of Drupal, with the same database, and no shared tables. Yes, no typos there. More on just how that works in a later post.

One thing we have to do is change the theme based on the URL, along with a host of other things. ZivTech recently posted about changing themes, but for our setup, we need something more low level. Hence this technique.

Edit your settings.php and stick this in at the bottom:

<?php
// if the URL is an administration page
if (strpos($_GET['q'], 'admin') === 0) {    
  $conf['theme_default'] = 'garland';
}
?>

What this does is tell Drupal to load an entirely different theme then the default one. Bonus points if you noticed the Drupal 5 administration theme bug: it shows the admin theme but if you save any form, the theme switches from the admin one to the default one. The above snippet fixes that.

The only catch? Make sure you initialize this in your system table by visiting the themes page and make sure you theme is in the sites/all directory. Otherwise you can run into some funky issues.

Happy theme hot swapping!


Read this next:

Preventing Drupal from Handling 404s for Performance →