A la hora de configurar el “layout” en Drupal, con esto me refiero a la estructura de una página, nos encontrarmos con un número de página administrativas que según los módulos que esteamos usando harán que definir los contenidos y su lugar en la página sea, como menos, confuso. El crear un bloque y ponerlo en un lugar deseado suele confundir a quienes se acercan por primera vez a Drupal.
En Drupal 7, la administración de bloques mejoró sustanciablemente con nuevas opciones y enlaces contextuales, y convirtiendo en bloques administrables el contenido principal, los mensajes de información entre otros.
Como dice el meme “hay un módulo para eso”, y no solo uno, varios, como Panels, Context o Display Suite. Todos ellos pueden de alguna manera simplificar y unificar esta tarea, además de sus particulares útilidades.
Lo suyo es decantarse por uno, ya que alguna de su funcionlidad se repite y cuando queramos volver a retocar algo en esta web nos costará encontrar donde está cada cosa. Igualmente si definimos nuestros bloques con Context evitar hacerlo con la página de administración de bloques.
Context.
Hoy me paro hablar un poco sobre el módulo Context. Lleva un tiempo entre nosotros y se encuentra presente en importantes distros gozando de buena salud. Por sencillo, tanto en concepto como en uso, es un módulo muy versátil.
Es habitual ver al módulo Context se usado en conjunto con los módulos Boxes, Spaces, Features. Todos ellos se complementan y trabajan bien juntos y se podría decir que forman en si una manera de trabajar con Drupal, permitiendo crear configuraciones exportables.
Aunque la primera aproximación quizás sea crear un contexto para cada sección (y en muchas ocasiones no necesitamos más), según vayamos aprendiendo a usarlo veremos como puede ser la solución a otras necesidades y evitarnos complejas configuraciones o una larga lista de módulos.

Usando Context. Condiciones y Reacciones.
Cuando digo sencillo és sencillo. Con estos dos conceptos podemos entender el funcionamiento de este módulo.
Cuando creamos un contexto estamos creando una o varias condiciones (rutas, roles...) que activarán unas reacciones (mostrar bloques en region, activar menú, título de la página). De esta manera iremos creando Contextos no solo para diferentes secciones, si no también de situaciones variables: usuario anónimo o logeado, idioma, termino de taxonomía, etc.

Las condiciones y reacciones que trae Context son las siguientes:
Condiciones
- Book: Cuando se mira un nodo de cierto libro.
- Book root. Cuando se mira un nodo y la raíz del libros es de un o varios tipos de contenido en concreto.
- Context. Activar un contexto cuando hay un contexto en concreto.
- Language. Según idioma.
- Menu. Por menú activo. Incluye submenus.
- Node type. Cuando se mira un nodo o la página de edición add/edit de un tipo de un tipo de contenido en concreto
- Taxonomy. Para cuando se mira un nodo con cierto término. Permite sub-terminos pero no vocabularios.
- Path. Según la ruta de archivo
- Sitewide context. Permite definir el contexto para todo el sitio web y siempre activo.
- Taxonomy term. Cuando se mira un página de un término según un/os vocabulario/s
- User role. Según el “role” del usuario.
- User page. Cuando se mira una página de usuarios, se puede seleccionar entre el profile, el formularios de la cuenta de usuarios y el de registro. También si se muestra a cualquier usuario, al actual o expecto el actual.
- Views. Cuando se mira una página creada por views. Se puede seleccionar la “view” pero no el “display”
Reacciones
- Blocks: Selecciona que bloques se muestran y en que región.
- Breadcrumb. Selecciona el “camino de migas” según el menú seleccionado
- Debug
- Menu. Selecciona que menú se mostrará activo
- Regions. Te permite desactiva regiones de los temas activos.
- Theme Page. Te permite definir el título de la sección y subsección sobrescribiendo sus variables.
- Theme HTML. Permite añadir CSS “body” clases. Estás se incluirán en la variables $classes en html.tpl.php
Edición inline de contextos
Con lo visto hasta ahora hemos ampliado mucho las opciones a la hora de organizar nuestro contenido y layout. Sin embargo sigue siendo un poco confuso para el usuario no experimentado en Drupal (nuestro cliente) añadir o modificar elementos.
Aquí es donde aparece la funcionalidad de edición inline de contexto, que permite arrastrar y soltar los bloques en el lugar que deseemos.
Usando el editor inline de contextos

Para poder acceder a la edición inline de contextos debemos asignar el bloque “Context editor” a alguna región o a través del módulo Admin. Algo que me llamó la atención es que cuando usas el bloque “Context editor” las regiones vacias se muestran y se pueden usar, lo que no sucede si lo usas a través de Admin.
Encontraremos el enlace “Context editor”. Al pulsarlo se mostrará que contextos están activos en la página actual, con un enlace para editarlos.
Ahora vemos las condiciones que están activas y tres menús: Blocks, Themes Variables y HTML.
El más interesante de estos menús es “block”, donde se nos da a escojer una categoría correspondiente al módulo que genera el bloque que queremos usar. Por ejemplo del Forum se muestra el bloque de “Active forum topics” y “New forum topics” proporcionadas por el módulo, si seleccionamos Views se nos mostrará los bloques que esten creados con Views.
Para mover los bloques al lugar deseado basta con arrastrarlos y soltarlos al lugar correspondiente de la página. Simplemente genial
NOTA: Solo se mostrarán las regiones sin contenido si se tiene activado el bloque “Context editor” en la página o activamos la opción en “admin/structure/context/settings”
Si tenemos el módulo Box nos permitirá crear y añadir un bloque desde está misma interfaz.

Ejemplo real del uso de Context
Si mal no recuerdo (y ahora no me apetece googlear) context fué creado por la gente de Develoment Seed, y es usado en varias de las distros que hicieron. Esto convierte a estas distribuciones en un buen ejemplo de como se puede usar Context y recomendable el instalarlas y ver su configuración.
Ampliando la funcionalidad a través de otros módulos
Tanto las condiciones como reacciones se pueden ampliar a través de otros módulos. Aquí los una lista de los que más levantaron mi interés, pero hay muchos más.
Condiciones
- Context Date. Crea una condición según la fecha.
- Context Bool Field Un condición basada en un valor “boolean” en un campo (field).
Reacciones
- Context Add Assests. permite agregar archivos .css y .js
- Context as Reaction. Una reacción para activar otro contexto.
- Context Block Classes. Permite definir clases para los bloques según contexto, según block y globalmente por una región. Proveé la interfaz necesaria para añdir las clases a los bloques que han sido definidos en un contexto. Muy útil para ser usado con plantillas basadas en “grids” (960gs, BlueTrip...)
-
Delta. Este módulo ha sido creado inicialmente para el tema Omega y permite hacer dos cosas:
1. Guardar los themes settings de cada tema como una plantilla, y usar esta como una reacción. Aquí eli poder está en las opciones de configuración del tema. Algunos como Omega permite seleccionar que regiones mostrar entre otras muchas cosas.2. Habilita variables del tema como el nombre del sitio, slogan, page title, breadcrums, logo, messages, tabs, action links, ; para ser posicionadas como bloques a través de Context. - Context panels layouts. Añade una lista para seleccionar layouts (2 columns, 3 columns...) en los contextos. No hice un analisis muy profundo al darme algún problema con la instalación. La lista se podía ver Admin “Context editor > edit > Blocks”
Otros
Context Node. Permite seleccionar uno de los contextos creados cuando se crea un nodo. Ejemplo: crear contextos con diferentes layouts/regiones para el que el usuarios pueda escojer al crear el contenido.
Context by Node. Permite crear un contexto especifico para un nodo cuando este se crea. Trae unas interesantes funcionalidad para evitar que el exceso de contexto dificulte su administración.
Context Respect. Permite “respetar” la configuración por defecto de los bloques.
Context locale cookie
Mejorando la interfaz y funcionalidad de la edición inline de Context
Aunque toda está funcionlidad está genial, todavía se puede mejorar. Veamos como.
-
Context Filter: Uno de los problemas que podemos encontrarnos es con un menú super poblado. Podemos solucionar esto con el módulo Context Filter, que además nos permitirá renombrar los grupos (de modulos), activar/desactivar regiones desde un link en barra de “Shortcuts” y añadir un contexto a la página actual. Todo esto lo convierte en un módulo muy “cool” Este módulo nos permite seleccionar que grupo de bloques se mostrarán y cambiar el nombre del grupo. Página de administración “admin/build/context/filter”

- Out of context: Traduccido libremente desde la página del módulo en drupal.org:
"Crea una paleta donde se puede seleccionar el contexto a editar y una lista de bloques que pueden ser arrastrados y soltados en diferentes regiones.
Desde la pantalla de configuración se puede seleccionar los contextos en los cuales se activará la paleta y que bloques aparecerán dentro de ella."
También tienen un “Lobby Page Creator” que permite seleccionar diferentes layouts para cada tipo de contenido, y añade un contexto “Solo en esta página” por cada lobby page."
Por "paleta" se refieren a un bloque llamado “out of context” que sirve para sustituir el bloque “context editor” Este bloque "out of context" permite seleccionar desde la página de adminstración que enlaces a los grupos de bloques que se mostrarán.
Crea también 4 nuevas regiones “Out Of Context 1-4” aunque no tengo muy clara su utilidad.
La página de configuración tiene tres secciones:
- Layout Configurations
- Blocks Configurations
- Contexts Configuration
Layout Configurations.
Blocks Configurations.
Aquí podemos configurar que bloques se mostrarán en “out of context”

Context Configurations.
Aquí nos permite seleccionar que contextos estarán disponible para editar.
Aparecerán los contextos creados por nosotros más “On current page” para
editar el contexto generado para una página en concreto.
