views:

69

answers:

1

What is the correct way to change the active Drupal theme programmatically?

+5  A: 

Edit: here is a simpler example.

It uses Garland regardless of the theme setting. Note that this overrides the admin theme setting too.

function MODULENAME_init(){
    global $custom_theme;
    $custom_theme = 'garland';
}

Edit: changing globally.

And if you meant changing the theme setting in the database instead of just on the current page, here is how:

// Changes the theme to Garland
variable_set('theme_default', 'garland');

// Changes only the administration theme to Garland
variable_set('admin_theme', 'garland');
wildpeaks
On the current page.
markdorison
The global $custom_theme variable is probably what you're looking for, but it should be modified early enough for the whole page to use only one theme, and hook_init is a good location to do that.
wildpeaks
What if you just want to make the admin theme active?
markdorison