2011-11-16 18 views

Respuesta

8

Puede utilizar hook_custom_theme():

function mymodule_custom_theme() { 
    if ($some_condition_is_true) { 
    return 'my_theme'; 
    } 
} 

Si tiene que basar su selección en el camino, entonces la mejor manera de ir es para anular el theme callback para elementos particulares del enrutador de menú. See here for an example.

1

Aunque no estoy seguro de cuál es la condición cuando desea cambiar el tema, pero si desea cambiar el tema según una url, tipo de nodo, término de taxonomía, página de visualización, etc., puede manejar eso utilizando Contexto módulo que hará esto por usted y ni siquiera tiene que escribir una sola línea de código. Mira esto: http://drupal.org/project/context

Este es un módulo muy útil y tiene buena integración con módulos casi todos los famosos como paneles, tema omega, delta, etc.

0

Drupal variable de theme_default es el que usted tiene que configurar para cambiar el tema usando la función variable_set.

variable_set('theme_default', 'your_theme_name'); 

Puede cambiar el tema por defecto a través de un hook_update_N si tiene un módulo personalizado ya instalado. También asegúrese de llamar al código en hook_install para ejecutarlo durante el tiempo de instalación en caso de que desee compartir su módulo con otra persona y desee cambiar el tema activo durante el tiempo de instalación.

/** 
* Implements hook_update_N(). 
*/ 
function mymodule_update_7000() { 
    $theme_list = array(
    'bootstrap', 
    'mytheme', 
    'shiny', 
); 
    theme_enable($theme_list); 
    $theme_default = 'mytheme'; 
    // The below code would change the default active theme to 'mytheme' 
    variable_set('theme_default', $theme_default); 
    $admin_theme = 'shiny'; 
    variable_set('admin_theme', $admin_theme); 
} 
0

Mientras variable_set() va a trabajar para hook_install() o hook_update_N(), que no se debe utilizar dentro de un módulo. Llamar al variable_set() vacía la tabla cache_bootstrap, que es un golpe de rendimiento serio en sitios ocupados.

Recomendaría el ThemeKey module si no necesita toda la potencia de Context. Sin embargo, los contextos son fácilmente exportables para el control de versiones, mientras que, por lo que sé, no hay forma de exportar las reglas de ThemeKey.

Cuestiones relacionadas