Theme Switcher Rules
Permite el cambio automático de temas basado en reglas configurables utilizando el sistema de Conditions de Drupal.
theme_switcher
Instalar
composer require 'drupal/theme_switcher:^2.1'
Overview
El módulo Theme Switcher Rules proporciona un mecanismo potente para cambiar automáticamente los temas basándose en reglas y condiciones personalizables. Aprovecha el sistema de Condition Plugin de Drupal, permitiendo a los administradores definir lógica compleja de cambio de temas usando cualquier condition plugin disponible, incluyendo los proporcionados por módulos contribuidos.
Cada regla puede especificar diferentes temas para páginas regulares y páginas de administración, y las reglas se evalúan en un orden configurable (por peso). Cuando las condiciones de una regla se cumplen, se aplica el tema correspondiente. Esto hace posible usar diferentes temas basados en el tipo de contenido, rol de usuario, idioma, ruta de solicitud, dominio, o cualquier otro condition plugin disponible en el sistema.
El módulo es extensible a través de hooks, permitiendo a los desarrolladores filtrar qué condiciones están disponibles en el formulario de configuración de reglas.
Features
- Crear reglas de cambio de tema con una interfaz de administración fácil de usar
- Aplicar diferentes temas basados en el sistema de Condition plugin de Drupal (rol de usuario, idioma, ruta de solicitud, tipo de nodo, etc.)
- Especificar temas separados para rutas de administración y no administración dentro de la misma regla
- Ordenamiento de reglas mediante arrastrar y soltar para controlar la prioridad de evaluación
- Sistema de condiciones extensible - funciona con cualquier condition plugin de core o módulos contribuidos
- Acciones rápidas de habilitar/deshabilitar directamente desde la lista de reglas
- Limpieza automática cuando se eliminan roles o idiomas referenciados
- API basada en hooks para filtrar las condiciones disponibles
Use Cases
Diferente tema por idioma
Crea una regla para cada idioma en tu sitio multilingüe. Por ejemplo, crea una regla con la condición de Idioma configurada en 'Inglés' y selecciona un tema moderno de estilo occidental, luego crea otra regla para 'Árabe' con un tema optimizado para RTL. Las reglas cambiarán automáticamente los temas basándose en el idioma de la página actual.
Tema personalizado para tipos de contenido específicos
Aplica un tema especializado para ciertos tipos de contenido. Por ejemplo, usa un tema estilo portafolio para nodos de 'Portafolio' y un tema de blog para nodos de 'Artículo'. Crea reglas separadas con condiciones de Node Bundle Type para cada tipo de contenido.
Sobrescritura de tema de administración
Usa un tema de administración diferente para condiciones específicas. Por ejemplo, los editores de contenido podrían preferir un tema de administración diferente al predeterminado del sitio. Crea una regla con la condición de Rol de usuario para 'Editor de contenido' y configura solo el campo de Tema de administración.
Temas específicos por dominio en configuraciones multisitio/dominio
Cuando uses el módulo Domain o similar, crea reglas con condiciones de dominio para aplicar diferentes temas para diferentes dominios o subdominios, todo dentro de una sola instalación de Drupal.
Páginas restringidas con diferente marca
Aplica un tema simplificado o con marca para rutas específicas. Por ejemplo, usa la condición de Ruta de solicitud para aplicar un tema mínimo a las páginas '/checkout/*' o un tema especial de campaña a las páginas '/promotion/*'.
Tematización basada en roles
Proporciona diferentes experiencias visuales basadas en roles de usuario. Por ejemplo, los miembros premium podrían ver un tema mejorado mientras que los usuarios anónimos ven un tema estándar. Crea reglas con condiciones de Rol de usuario para cada nivel.
Tips
- Las reglas se evalúan en orden de peso (menor peso = mayor prioridad). Usa arrastrar y soltar en la lista de reglas para reordenarlas.
- Una regla debe tener al menos un tema (regular o de administración) configurado para tener algún efecto.
- Si no se configuran condiciones para una regla, siempre coincidirá. Coloca las reglas generales al final con valores de peso más altos.
- La condición 'current_theme' se excluye automáticamente para prevenir bucles infinitos.
- La condición de Idioma solo aparece cuando el sitio tiene múltiples idiomas configurados.
- Cuando se eliminan roles o idiomas del sistema, el módulo limpia automáticamente las referencias en todas las reglas.
- Puedes usar cualquier condition plugin de módulos contribuidos (como Domain, Group, etc.) para crear lógica sofisticada de cambio de temas.
- Configura solo el Tema de administración si quieres que una regla afecte solo las páginas administrativas mientras deja las páginas regulares sin cambios.
Technical Details
Admin Pages 4
/admin/config/system/theme_switcher
Muestra una lista de todas las reglas de theme switcher con su nombre, nombre de máquina, tema asignado, tema de administración y estado. Las reglas pueden reordenarse mediante arrastrar y soltar para controlar la prioridad de evaluación. Proporciona acciones rápidas de habilitar/deshabilitar y enlaces para editar o eliminar cada regla.
/admin/config/system/theme_switcher/add
Formulario para crear una nueva regla de cambio de tema. Configura el nombre de la regla, estado, temas a aplicar y condiciones de visibilidad.
/admin/config/system/theme_switcher/edit/{theme_switcher_rule}
Formulario para modificar una regla de cambio de tema existente. Todas las configuraciones excepto el nombre de máquina pueden ser cambiadas.
/admin/config/system/theme_switcher/delete/{theme_switcher_rule}
Formulario de confirmación para eliminar una regla de cambio de tema.
Permisos 5
Hooks 1
hook_available_conditions_alter
Permite a los módulos modificar la lista de condiciones disponibles en el formulario de reglas de theme switcher. Esto es útil para remover condiciones que no tienen sentido en el contexto del cambio de temas o para agregar lógica de filtrado personalizada.