Drupal: Mostrar contenido sólo en contexto de grupo utilizando php

En esta nueva entrada quisiera compartir un código php, muy  útil en Drupal, que nos permite mostrar cierto contenido en un contexto de grupo.

Descripción de la situación probable

Supongamos que tenemos nuestro sitio web desarrollado en Drupal y tenemos varias secciones del portal implementadas con Grupos Orgánicos.

Cada sección, tiene miembros o grupo de editores que actualizan su contenido. Supongamos, por ejemplo, que deseamos crear un bloque con cierto contenido html, pero sólo deseamos que se muestre cuando el usuario visita  las secciones del portal, o más especificamente, cuando visita una sección en particular.

Para lograr esto, luego de editar el contenido html del bloque, vamos a las opciones de "Mostrar el bloque en páginas específicas" y seleccionamos la opción "Mostrar si el siguiente código PHP devuelve true" (ver Figura 1). 

Opciones de visibilidad de un bloque

Figura 1. Opciones de Visibilidad del Bloque

Allí, agregamos el siguiente código:

  1. <?php
  2. if($seccionp = og_get_group_context()){
  3. $idseccion = $seccionp->nid;
  4. if($idseccion == ID_DEL_NODO_GRUPO){
  5. return true;
  6. }
  7. }return false;
  8. ?>

Con og_get_group_context(), recuperamos el objeto con toda la información del grupo actual. Si retorna null, significará que no estamos dentro de un contexto de grupo, por lo cual, no mostraremos el bloque.

Si devuelve la referencia al objeto, entonces nos encontramos dentro de un grupo, o, en nuestro ejemplo, de una sección de nuestro sitio. Aquí podemos retornar directamente el valor true. Pero si deseamos sólo mostrarlo dentro de una sección, o grupo en particular, debemos consultar por el id del grupo; para ello consultamos el atributo nid del nodo de tipo grupo ($seccionp->nid) y finalmente los comparamos con el nid de aquella sección o grupo donde deseamos mostrar el bloque (ID_DEL_NODO_GRUPO). Recordar que el nid de un nodo es tan sólo un número.

Este código también puede ser utilizado para filtrar algún contenido directamente en las plantillas (.tpl.php) del tema del sitio.

Si les gustó el artículo, compartir.