Ruta: Administrar > Configuración do sitio > Themekey
Por esta ruta accedemos ao formulario de configuración do módulo Themekey. A función que proporciona este módulo é consiste en que podemos cambiar a plantilla coa que se visualiza a web en función da ruta á que se acceda, ou en función de outros parámetros como por exemplo o idioma.
Así, activando varias plantillas e establecendo unha configuración de bloques distinta para cada unha de elas podemos conseguir que dentro da nosa web pareza que haxa varias webs distintas. Esta funcionalidade é especialmente utilizada polos centros do proxecto Webs Dinámicas para a implementación de blogues de aula dentro da web do centro.
Neste documento non se pretende acadar unha descrición detallada de tódalas características e funcionalidades deste módulo e dos que veñen a el asociados (Themekey Debug, Themekey Features, Themekey UI), senón dar unha guía básica para comenzar a utilizarlo de xeito correcto.
Activación do módulo
O módulo Themekey non é un dos que se dan activos por defecto na creación de novos sitios do proxecto Webs Dinámicas, polo tanto o primeiro será activalo en Administrar > Construción do sitio > Módulos.
Configuración inicial do módulo
Imos ver agora algúns dos parámetros de configuración do módulo themekey que afectan ao seu comportamento, e que debemos revisar antes de empezar a traballar co módulo. accederemos para elo á Administrar > Configuración do sitio > Themekey, e ahí pincharemos na pestana Axustes donde temos a seguinte pantalla:
- Property drupal:path is case sensitive. Marcaremos esta opción cando precisemos distinguir rutas polas letras maiúsculas e minúsculas. Non se recomenda utilizar esta opción xa que a distinción de rutas por maiúsculas e minúsculas é moi confusa para os usuarios.
- Provide all themes for selection. Marcando esta opción, á hora de selecionar o tema co que se visualizará unha ruta poderemos elexir entre todos os temas instalados e non só entre os que están activos. Non se recomenda utilizar esta opción, é mellor facer unha seleción previa dos temas a utilizar e activalos.
- Force custom theme overriding. Se activamos esta opción, o módulo themekey encargarase en exclusiva do cambio de tema durante a navegación polo sitio, evitando que o núcleo de Drupal cambie ao tema por defecto ou ao tema de administración que estean configurados.
- Retain the theme until a new theme is set. Con esta opción marcada, cando abandonamos unha ruta que tiña definido un tema concreto, non se cambia o tema de visualización da web polo definido por defecto senón que permanece o tema anterior ata que visitemos outra ruta que teña definido explicitamente outro tema.
- Cron cleans up page cache. O módulo themekey permite a definición de reglas de cambio de tema cun periodo de tempo de vixencia. Con esta opción, a execución do proceso cron de Drupal, limpiará da caché as páxinas cun tema para o cal a regla que o aplicou xa non está vixente.
Definición de reglas para cambio de tema
Imos agora coa parte importante do módulo, a definición das reglas según a cales se producirán os cambios de tema. Se accedemos a Administrar > Configuración do sitio > Themekey, e ahí á pestana Theme Switching Rule Chain (Cadea de reglas de cambio de tema) temos a seguinte pantalla:
Donde vemos a lista de reglas definidas actualmente, na imaxe de exemplo hai dúas reglas: a primeira di que cando se aceda á ruta blog/1, se aplique o tema Garland; a segunda di que cando o idioma de navegación sexa o Español (es), se aplique o tema bluemarine.
Para a deninición dunha nova regla, ao final das existentes temos os controis necesarios para facelo, donde:
- En primeiro lugar debemos elexir o tipo de regla os máis utilizados normalmente serán os seguintes:
- taxonomy:vid. Se a igualamos ao identificador dunha categoría, todas as rutas que listen contidos publicados nos termos desa categoría, e os propios contidos serán visializadas con tema selecionado.
- taxonomy:tid. Se a ugualamos ao identificador dun termo de categoría, a ruta taxonomy/term/tid e os contidos publicados nese termo visualizaranse co tema selecionado.
- taxonomy:tid_and_childs. Como taxonomy:tid, pero tamén para todos os subtermos.
- node:nid. Se a igualamos ao identificador dun contido, ese contido se visualizará co tema selecionado.
- drupal:path. Utilizaremos este tipo de regla para rutas que non encaixen con outro tipo de regla, e dicir, non a utilizaremos por exemplo para a ruta taxonomy/term/25, xa que para esta ruta a regla a utilizar sería taxonomy:tid=25.
- A continuación selecionamos un operación de comparación, normalmente será a igualdade.
- Logo o valor para o que queremos que se aplique a ruta
- E por último selecionaremos o tema que se debe aplicar cando a ruta visitado coincida coa comparación definida. O valor que se da por defecto "Opcións predefinidas polo sistema" refírese ao tema definido como tema por defecto so sitio.
- Temos ademais, tanto para unha nova regla coma para as que xa están definidas, un control Activado que permítenos desactivar unha regla se nun momento dado non queremos que se aplique.
Ordenación das reglas
As reglas definidas que estean activas forman unha cadea que se examina en orden de arriba a abaixo. Así cando o usuario accede a unha ruta dentro da web, o módulo themekey recorre a cadea de reglas de arriba a abaixo ata que atopa unha regla que corresponde coa ruta accedida, entón provoca o cambio de tema para o tema definido nesa regla. Se chega ao final da cadea de reglas sen atopar ningunha que corresponda coa ruta visitada, o módulo non fai nada.
É posible que unha ruta dentro da web corresponda con varias das reglas definidas, nese caso aplicarase a regla que estea máis arriba na cadea. Por exemplo, coas dúas reglas que vemos na imaxe anterior, según a primeira a ruta blog/1 debe visualizarse co tema Garland, e según a segunda todas as rutas baixo o idioma Español, e dicir, da forma es/, deben visualizarse co tema Bluemarine. Entón está claro que a URL http://www.edu.xunta.es/centros/CENTRO/blog/1 debe visualizarse co tema Garland; pero que pasa coa URL http://www.edu.xunta.es/centros/CENTRO/es/blog/1, pois que tamén irá co tema Garland por estar a regla drupal:path antes da regla locale:language, pero se cambiáramos a orde das reglas poñendo primeiro a do idioma, a URL http://www.edu.xunta.es/centros/CENTRO/blog/1 visualizaríase co tema Garland xa que non cumpriría a regla do idioma e aplicaríase a da ruta, sen embargo a URL http://www.edu.xunta.es/centros/CENTRO/es/blog/1 visualizaríase con tema Bluemarine ao cumplir a primeira regla.
Podemos modicar a ordenación das reglas pinchando na cruz á esquerda dunha regla e arranstrándoa ata o lugar desexado.
Reglas encadeadas
Existe a posibilidade de crear reglas encadeadas de xeito que a segunda regla da cadea será comprobada só cando se cumpra a primeira. Esto permítenos refinar o criterio para a decisión de que tema aplicar en varios pasos sucesivos.
Para crear unha cadea de reglas procederemos do seguinte xeito: creamos a primeira regla (non é preciso selecionar un tema) e gardamos; creamos a segunda regla, gardamos e unha vez gardada, colléndoa pola cruz arrastrámola cara a dereita para que quede identada debaixo da anterior. Ao facer esto, o sistema intrepreta que estamos a crear unha cadea de reglas e elimina o control para selecionar o tema de destino na regla anterior. Seguimos engadindo reglas á cadea idetando cada unha dentro doutra anterior. Na última regla da cadea selecionaremos o tema a aplicar. Podemos formar unha árbore de decisión con varias ramas, selecionando o tema a aplicar en cada caso nas follas desa árbore. Ver exemplo no seguinte apartado.
Propiedades adicionais co módulo themekey_properties
Se ademais do módulo themekey activamos tamén o módulo themekey_properties disporemos dun conxunto maior de propiedades para a definición de reglas. Por exemplo, algunhas da propiedades que nos ofrece este módulo permítennos cambiar de tema en función de cousas como o navegador de internet, ou sistema operativo do cliente.
Vexamos un exemplo que ven na documentación de axuda dos módulos themekey e themekey_properties que nos serve para ilustrar o funcionamento das reglas encadeadas.
Se temos as tres reglas encadeadas da seguinte imaxe, como será o comportamento do sistema respecto delas.
Se o navegador do cliente que está visitando a web é o Mozilla Firefox cúmprese a primeira regla e entramos na cadea. Se ademais a versión do navegador Firefox é maior que a 3.0 cúmprese a segunda regla da cadea e pasamos a evaluar a terceira regla. Se a versión do navegador Firefox é tamén menor que a 3.5 cúmprese a terceira e neste caso última regla da cadea polo que se aplicará o tema selecionado, Deco neste caso. En conclusión, con estas tres reglas encadeadas definimos un tema particular para navegadores Firefox de versión superior á 3.0 pero menor á 3.5.