Ya hemos hablado sobre nodos, tipos de contenido, y campos. En Drupal, estos suelen comprender el contenido principal de la página. Muy probablemente quieras presentar información adicional a lo largo de la página. Esto puede lograrse usando contenedores llamados bloques. Por ejemplo, el contenido principal de una página puede ser un artículo y se puede usar un bloque para listar otros artículos escritos por el mismo autor. También pudieras usar un bloque para mostrar una caja de búsqueda o texto de copyright. Exploremos lo que los bloques de Drupal nos ofrecen.
Contenido estático vs dinámico
Dependiendo de la frecuencia en que cambien la información a presentar en el bloque, podemos decir que el contenido es estático o dinámico. Cuando los datos a presentar son los mismos o casi los mismos siempre, decimos que el contenido es estático. Por ejemplo, si creas el sitio web de un evento, puediéras usar un bloque para mostrar la foto de tus patrocinadores en la barra lateral de todas las páginas de tu sitio web. Otro ejemplo es cuando el texto de copyright, usualmente colocado en el pie de página, incluye el año actual. Este va a cambiar una vez al año. Por tanto, para fines prácticos el dato mostrado se puede considerar estático.
Por el contrario, cuando el contenido cambia regularmente, decimos que el contenido es dinámico. Por ejemplo, puedes tener un bloque en la barra lateral que liste los artículos más recientes que se han publicado en el sitio web. If creas un artículo cada día, el contenido del bloque cambiará diariamente. Usualmente esto sucede de forma automática, sin requerir interacciones manuales. Una vez el bloque ha sido configurado, usando una Vista por ejemplo, este se va a actualizar a sí mismo. Otro ejemplo de bloques dinámicos es uno que muestre los nuevos productos es tu tienda.
Nota técnica: Drupal no hace distinción entre bloques estáticos y dinámicos, pero este es un buen modelo mental a considerar cuando estás construyendo tu sitio web.
Estableciendo reglas de visibilidad
Es posible configurar un bloque que se muestre u oculte cuando ciertas condiciones se cumplen. El núcleo de Drupal provee reglas para controlar la visibilidad de bloques por tipo de contenido, páginas (URLs), roles de usuario y el idioma del sitio. Estas reglas son provistas por módulos, por lo que puedes buscar módulos construidos o escribir algunos personalizados para proveer nuevas reglas de visibilidad. Por ejemplo, usando el día de la semana o la fase de la luna.
Consideremos un sitio web que, entre otros, tiene un tipo de “Artículo” y otro “Evento”. El bloque “más artículos escritos por el mismo autor” hace sentido cuando se presenta un artículo. Cuando se visita un evento, no hace sentido porque los eventos no escriben artículos. De forma similar, un bloque mostrando un mapa con la ubicación de un evento sólo hace sentido cuando visitados las páginas de detalles de eventos.
Las páginas también se pueden usar para controlar la visibilidad de bloques. Es esto caso, “página” hace referencia al URL de la página que estás visitando. Por ejemplo, puedes querer mostrar un mapa interactivo sólo en la página de contacto: /contacto. O mostrar la dirección de tu oficina en todas las páginas bajo la sección de eventos del sitio: /eventos/*. En este caso, el asterisco (*) sirve como comodín que aceptará cualquier página cuyo URL inicie con /eventos/ como /eventos/taller-intro-a-drupal o /eventos/taller-migraciones-drupal. Si quieres presentar un bloque en la página principal de tu sitio puedes usar el valor especial <front>. Por ejemplo, para mostrar una imagen destacada.
Algunas de estas condiciones permiten negarlas. Por ejemplo, si quieres mostrar un bloque en todos lados excepto la página principal. Cuando múltiples reglas se establecen, todas ellas deben cumplirse para que el bloque se le presente al usuario. Por ejemplo, en la página del perfil de usuario, puedes mostrar una lista de artículos que la persona puede estar interesado en leer basado en artículos antes leídos. Este bloque se configuraría para aparecer en la página /user y sólo para usuarios autenticados.
Usando información de su entorno
Es posible que un bloque utilice información de su entorno para cambiar la información a presentar. Retomando el ejemplo de “más artículos escritos por el mismo auto”, antes que la lista es recolectada, Drupal lee el usuario que creó la página y busca más de sus artículos. Lo mismo puede hacerse con otras piezas de información. Por ejemplo, si tienes un negocio de venta de carros en múltiples ciudades, puedes mostrar una lista de más vehículos en venta en la misma ciudad.
La habilidad de leer datos de su entorno normalmente no está asociado a la configuración del bloque. En su lugar, esto se determina por la forma en que fue creado inicialmente el bloque. Por ejemplo, cuando un bloque es creado usando una Vista, es la propia Vista que le permitirá leer el id del nodo or el autor para cambiar la información a mostrar.
Los bloques pueden tener campos
En un artículo anterior hablamos de la versatilidad de los campos en Drupal y explicamos muchos de los beneficios de usarlos. De forma similar como tenemos tipos de contenido, es posible definir tipos de bloque personalizados y adjuntar campos a estos. Para crear un tipo de bloque personalizado visita la interfaz administrativa “Diseño de bloques” y luego selecciona la pestaña “Biblioteca de bloques personalizados”. La página es yourdomain.com/admin/structure/block/block-content.
Todo lo que se describió acerca de campos en Drupal aplica para bloques. Un caso de uso es crear un tipo de bloque “oferta especial” con los campos título, descripción, imagen y fecha de expiración. El bloque puede configurarse de modo tal que la oferta especial aparecerá en la barra lateral mientras la fecha de expiración no llegue.
Posicionamiento de bloques
A lo largo de este artículo podrá hacer notado que cuando hablo sobre bloques también indico el lugar donde aparecerán en la página: barra lateral, pie de página, encabezado, etc. Los bloques necesitan colocarse en las denominadas “regiones de bloques”. Vamos a discutir temas a mayor detalle en una entrada futura. Por ahora, sólo necesitamos comprender que una de las múltiples responsabilidades de un tema en Drupal es controlar el layout del sitio. El tema va a proveer regiones de contenido donde los bloques pueden ser posicionados. El número, ubicación y comportamiento de las regiones varían de tema a tema. Para los propósitos de este artículo hablaré sólo sobre Bartik, el tema azul/gris/negro que viene por defecto con Drupal.
Para verificar cuáles regiones de temas están disponibles va a interfaz administrativa “Diseño de bloques”. Luego en la pestaña “Diseño de bloques” haces clic sobre el nombre del tema que le interesa. Finalmente, el último paso es hacer clic en el enlace “Mostrar regiones de bloques (Bartik)”. La página administrativa está ubicada administrativa en /admin/structure/block/demo/bartik. Verá 18 cajas amarillas con nombres en ellas. Cada una es una región en la cual podemos colocar bloques. Una vez terminamos de inspeccionar, puedes regresar haciendo clic en el enlace “Salir de la demostración de las regiones de bloques” que se encuentra en la parte superior izquierda de la página.
La región más importante es “Contenido” la cual contiene el contenido principal de la página. Otras regiones usadas con frecuencia son “Sidebar first” y “Sidebar second”, primera y segunda barra lateral respectivamente. Nota que estas no se llaman barras laterales izquierda o derecha. Esto es intencional. Drupal soporta múltiple idiomas incluyendo aquellos que se escriben de derecha a izquierda como el Hebreo. En dichos casos, Drupal puede invertir la posición de las barras laterales usando CSS de modo que el sentido de primer o segunda barra lateral persista en esos idiomas.
Un tema puede decidir ocultar una región cuando ningún bloque se configuró para aparecer en ella. “Featured top” (destacado superior) es un ejemplo de esto. Esta región tiene una fondo gris el cual no se ve en una instalación de Drupal por defecto. Si fuera a agregar un bloque a esta región va a verla. De lo contrario toda la región se oculta. Esto se llama “colapsar” una región. Es el tema quien decide para cada región si esta se va a colapsar cuando ningún bloque se coloca en ella, o si continúa ocupando el espacio que normalmente usaría. De forma similar, es posible que un tema expanda una región cuando regiones adyacentes se colapsan.
Nota: Hay un plan de introducir un nuevo tema que reemplace a Bartik como el que se instala por defecto futura versiones de Drupal. Puedes leer más de esta iniciativa en https://www.drupal.org/project/ideas/issues/3064880.
Ensamblando la página
Con un nuevo concepto bajo la manga, podemos entender cómo una página de Drupal completa puede armarse. Consideremos lo siguiente: un artículo es un nodo del tipo de contenido “Artículo”. Este tipo de contenido tiene varios campos asociados que permiten almacenar información como etiquetas y una imagen. El nodo se muestra en la región de tema “Contenido” ocupando el centro de la página. Y alrededor de este, podemos tener muchos bloques que muestren información relacionada en diversas regiones de contenido.
¿Qué se siente comprender las forma en que Drupal arma una página? ¿Cuál es la característica de los bloques que encuentras más interesante? ¿Tienes otros consejos sobre el uso de bloques en Drupal?