Tengo una instancia de Drupal ejecutándose en example.org. Que tiene un tema X instalado y activado. Ahora, por un período limitado, se supone que un evento se llevará a cabo en el sitio para el cual se ha "dividido" una sección especial. Todas las cosas relacionadas con ese evento irán a example.org/event2011.
Quiero tener un tema diferente que se muestra cada vez que se visita una página bajo esta sección (por ejemplo http://example.org/event2011/about , http://example.org/event2011/node/123 ). ¿Cómo puedo hacer eso?
He pasado por muchos módulos, pero ninguno de ellos es compatible con Drupal 7. Preferiblemente, me gustaría que se haga usando módulos y no quiero cambiar nada a nivel de código.
Respuestas:
Teniendo en cuenta que el cambio es por un período de tiempo limitado y que implementar dicho código no es difícil, sugeriría implementar un módulo personalizado que cambie el tema que se utiliza para páginas específicas.
Es suficiente implementar de la
hook_custom_theme()
siguiente manera:Si necesita cambiar el tema solo para http://example.com/event2011 , pero no para http://example.com/event2011/node/123 , entonces el código debe cambiarse a
En cuanto a usar las devoluciones de llamada de tema en la definición de una devolución de llamada de menú, la documentación dice:
fuente
Una solución personalizada como sugiere el otro comentario es probablemente la mejor, pero si realmente desea utilizar un módulo, su mejor opción es ThemeKey . A partir del 23/05/11, tiene una versión estable.
fuente
Alternativamente, puede utilizar la nueva
theme callback
opción del sistema de menúshook_menu_alter()
como se describe a continuación. ps Checkout hook_menu () para más detalles sobre eltheme callback
Además, también hay un ejemplo del uso de los más tradicionales.
hook_custom_theme()
Tomado de: http://drupal.org/node/224333#custom_theme
fuente
Simplemente puede usar Context y usar el tema para aplicarlo cuando la ruta es / event2011 / simplemente puede configurar la ruta en condición de texto y cambiar el tema en la acción del contenido. Esto fue muy fácil de cambiar entre temas en un sitio basado en URL. Incluso funciona para móviles;)
fuente
Usar ThemeKey es simple y es el módulo más popular y potente hasta ahora (con soporte para 8.x) para reglas de cambio de tema que permiten la selección automática de un tema dependiendo de la ruta actual, términos de taxonomía, idioma, tipo de nodo y muchos, Muchas otras propiedades. También se puede ampliar fácilmente para admitir propiedades adicionales expuestas por otros módulos. Además de las características estándar, ThemeKey extiende automáticamente sus características de muchos módulos contrib y tiene módulos que lo extienden.
Uso (7.x)
Después de habilitar el módulo, vaya a
admin/config/user-interface/themekey
. Hay muchas opciones para cambiar el tema, pero probablemente le interesepath:node_alias
, por lo tanto, configure el valor que desee como dice / my_url y luego seleccione el tema que desea habilitar en esta url. También puede usar comodines comoweb/*
o/^web/.*
.Comprobar: Cómo cargar un tema para la ruta
Uso avanzado
ThemeKey 7.x contiene un módulo opcional llamado ThemeKey Example para demostrar a los desarrolladores cómo extender ThemeKey.
Ayuda (7.x)
Mira el video tutorial de Mustardseed (7.x).
Puede encontrar más ayuda sobre ese tema en
/admin/help/themekey
.Consulte también otras preguntas de SE relacionadas con themekey .
Alternativamente, también hay Switchtheme (7.x) que agrega un bloque para permitir a los usuarios cambiar entre los temas habilitados.
fuente
Cuando use alias de URL o el módulo Pathauto , tenga en cuenta las sutilezas y diferencias al usar componentes de la ruta actual de Drupal.
Hay situaciones en las que es posible que no desee utilizar arg () . De hecho, la documentación de la API de Drupal en realidad sugiere evitar el uso de esta función cuando sea posible, ya que el código resultante es difícil de leer.
Considere el siguiente ejemplo, según lo propuesto por kiamlaluno :
En Drupal 7, si un nodo tiene un alias de event2011 , el uso
arg(0)
devolveránode
como el primer componente de URL, a diferencia del alias.En cambio, si es necesario trabajar con un alias que hay varias maneras de obtener la URL actual en Drupal , incluyendo
menu_get_object()
,current_path()
,request_path()
y otros.Aquí hay un ejemplo modificado que usa un alias como desencadenante para cambiar el tema:
fuente
Cómo cambiar el tema según el rol del usuario:
Cree un módulo personalizado y copie y pegue lo siguiente:
Tienes que reemplazar:
mymodule
=> con el nombre de su módulomy special role => con el nombre de la función que sus usuarios deberán tener para que puedan ver un tema diferente.
mytheme
=> con el nombre del tema al que desea cambiarfuente
Puede usar el módulo de Tema de página para lograr exactamente eso
fuente
Podrías usar el módulo de tema de página para lograr exactamente eso: El módulo de Tema de página es un módulo simple y fácil de usar que permite usar diferentes temas que los predeterminados del sitio en páginas específicas.
Caracteristicas :
Asigne un tema a una sola página o lista de páginas. (Establecer una página como ruta de Drupal) Permitir utilizar el carácter '*' como comodín en las rutas de Drupal. Permitir organizar los temas. (Si hay varias páginas definidas, se utilizará el primer tema de la lista) Permitir habilitar / deshabilitar un tema. Novato Drupal amigable.
como podrá usar: Secciones que tienen la mayoría de las mismas características que el Tema de página, pero agrega una selección basada en roles y un área de "fragmento de php" para elegir el tema.
pero si desea usar temas diferentes a los predeterminados del sitio en la creación, edición y visualización de contenido, puede usar el Tema de contenido que le permite usar diferentes temas que los predeterminados del sitio en la creación, edición y visualización de contenido.
fuente