¿Cuál es la forma correcta de cambiar el tema activo de Drupal 7 mediante programación? Solía $custom_theme
en Drupal 6, pero no está funcionando en Drupal 7.cambie el tema activo de Drupal 7 programáticamente
Respuesta
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.
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.
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);
}
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.
- 1. ¿Tema de inicio para Drupal 7? ¿Rígido? ¿Zen?
- 2. Cómo crear un nuevo tema en drupal 7
- 3. ¿Cómo cerrar un usuario programáticamente en Drupal 7?
- 4. Android: cambie el recurso de cadenas programáticamente
- 5. ¿Debo usar Drupal 6 o Drupal 7?
- 6. Módulo Drupal 7 OpenID
- 7. Drupal 7 Default .htaccess
- 8. Desactivando el caché de Drupal 7
- 9. ¿Cambia el tema de la aplicación programáticamente?
- 10. Cambiar el tema de la actividad programáticamente
- 11. Obtendrá colores de tema programáticamente
- 12. Cambiar un tema de Highcharts (parcialmente activo)
- 13. Cambio de Drupal 7 Enviado por formato
- 14. Drupal 7 cómo representar el campo personalizado
- 15. Drupal 7 preprocess_views no trabajar
- 16. Drupal 7 drupal_mail eliminando HTML?
- 17. no se puede detectar el tema clásico de Windows activo
- 18. Drupal 6 contraseña de usuario importada a Drupal 7
- 19. ¿Interrumpir un protector de pantalla activo programáticamente?
- 20. Drupal 7: Mejor práctica para una lista de selección dinámica en Drupal 7
- 21. ¿Drupal 7 es más lento que Drupal 6?
- 22. Drupal procesar el formulario de inicio de sesión programáticamente
- 23. Uso de JQuery en Drupal 7
- 24. Configuración de Gmail smtp para Drupal 7
- 25. Estilo Drupal 7 página de inicio de sesión
- 26. El elemento de caché temporal de Drupal 7 no caducará
- 27. Tema de Windows 7 para WPF?
- 28. Actualizar la tabla {node_counter} programáticamente en drupal
- 29. JBoss 7 MySQL tema fuente de datos
- 30. Drupal 7 hook_menu para el tipo de contenido específico