Logrando layouts avanzados en Drupal con Context y Delta

June 18, 2021
Asumamos que en un sitio tenemos la necesidad de que en ciertas páginas haya necesidad de tener un sidebar, pero en otros no. Usualmente implementaríamos una plantilla para crear el esquema específico. Si tuviéramos que hacer lo mismo para otro tipo de nodo, tendríamos que duplicarlo y probar. Ahora, si ese esquema sólo lo necesitaramos para usuarios anónimos, implica una complejidad mayor. Hoy les voy a escribir un ejemplo corto sobre el módulo de Context nos puede ayudar a cambiar el esquema de nuestro tema dinámicamente. El módulo Context puede usar varias condiciones como: términos de taxonomías, páginas, tipo de nodo, dirección url, idioma elegido o tipo de usuario para usarlos de referencia y proceder a hacer cambios en el diseño de la página, entre otras cosas. En este ejemplo para el tipo de nodo Article, vamos a desactivar el sidebar solamente para los usuarios anónimos. Lo primero que hacemos es descargar Context: http://drupal.org/project/context Para poder usar Context, es necesario Ctools: http://drupal.org/project/ctools Junto con Context, activamos Context layouts y Context UI. Nos dirigimos a admin/structure/context y seleccionamos add+ Llenamos los valores de nombre, tab y descripción con los valores que queramos. Como nuestro contexto tiene que cumplir con dos condiciones: tipo de nodo y rol, seleccionamos la opción para que cumpla con todas las sentencias. Justo debajo tenemos dos bloques, en el primero seleccionamos las condiciones y en el segundo la reacción que buscamos. En condiciones seleccionamos donde escogemos la opción User Role y en el cuadro que se despliega, elegimos anonymous user. Volvemos a hacer click en , seleccionamos Node type y escogemos Article. Ahora vamos a la sección de Reactions, seleccionamos donde elegimos la opción Regions. En el cuadro que aparece, hacemos click sobre el título del tema que estemos usando y en la lista de las regiones, seleccionamos cuales queremos desactivar. En este caso, el sidebar second y procedemos a salvar nuestro context. Para probarlo, creamos un nodo Article y vemos que efectivamente, no se despliega el Sidebar Second, que es justo lo que queríamos. Este es un ejemplo muy sencillo de lo que se puede lograr con el módulo Context para cambiar cosas básicas de un tema. Quiero hacer énfasis en que Context sirve para mucho más que un ejemplo tan simple como éste. Aquí les dejo un enlace donde pueden ver un buen ejemplo de las habilidades de Context y usos prácticos que le podríamos dar: Ver Vídeo. Para funciones más avanzadas con nuestro tema, instalamos el módulo Delta que, aunque originalmente fue hecho para trabajar con el tema de Omega, desde la version 3.x trabaja con cualquier tema. El módulo Delta (drupal.org/project/delta) se combina con el módulo de context para duplicar la configuración del tema para cualquier contexto en el sitio. Es decir, nos permite emplear alternativas del mismo diseño (mover los sidebars de posición con el contenido y cambiarles el tamaño, en vez de tener dos columnas de footer podemos tener 3 filas, etc). ¡Las posibilidades son ilimitadas con Delta y Context! Para darles un ejemplo, crearemos un duplicado de nuestro tema en Omega y usaremos dos columnas en el footer en vez de tener 2 filas, que es lo que trae el tema por defecto. Vamos a Appearance y seleccionamos Delta en el menú superior. Presionamos +Add para crear una variante y la creamos con la descripción y nombre que queramos. En el menú de Delta, escogemos nuestra variante y seleccionamos configure. Hacemos el cambio en el footer que queremos, salvamos. Vamos a añadir este cambio de Delta al context que ya hemos creado más arriba. Ahora vemos que en la sección de Reacciones tenemos más opciones: seleccionamos Delta y escogemos la variante que hemos creado.Al abrir un nodo de tipo Article y lo comparamos con la página de inicio podemos ver los cambios en funcionamiento: Página de Inicio Artículo En mi opinión, creo que hasta cierto punto el uso de Panels puede reemplazarse por Delta y Context. Todavía hace falta para que ésto pueda suceder del todo ya que Panels tiene un mayor control sobre áreas más pequeñas que zonas y regiones, y esto le da una ventaja sobre Delta+Context. Les recomiendo que usen el tema de Omega y le den un vistazo a las ventajas que trae usar este tema. ¡Esperamos oír sus dudas o comentarios!