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.