Modificar el contenido de un bloque en Drupal dependiendo del rol

drupal.jpg
Solucionex
12
Jun 14
En ciertas ocasiones, es necesario mostrar la información de un bloque de forma distinta dependiendo del rol del usuario. A veces, es mejor modificar un solo bloque que definir 5 o 6 bloques.
 
Para modificar el contenido de un bloque antes de que se muestre, podemos utilizar el hook 'hook_block_view_alter'. Este hook nos permite modificar el contenido de un bloque alterando los datos retornados por el hook 'hook_block_view()'. 
 
Como parámetros recibe dos variables: 
  • $data: que contiene los datos retornados por 'hook_block_view()'
  • $block: un objeto con los datos del bloque.

Con estas variables podríamos modificar el contenido de un bloque, dado un 'id' concreto para un rol determinado, por ejemplo: 

 

function hook_block_view_alter(&$data, $block) {
   if ($block->bid == "block-1"){
      global $user;
      if (in_array('miRol',$user->roles)) {
         $data['content'] = 'Nuevo Contenido';
      }
   }
}

 
A partir de aqui, las opciones son múltiples.