Por ejemplo cuando queremos que nuestro bloque aparezca en dos zonas diferentes, pero sólo podemos asignarla a una de nuestro template.
Y para evitarnos tener que hacer un bloque similar para ubicarlo en otro lugar, podemos invocar el que ya creamos. Podemos aplicarlo a cualquier tipo de bloque, sólo necesitamos conocer a que módulo pertenece y como se llama y aplicar la función module_invoke();
La función se usará del siguiente modo:
module_invoke('nombre_modulo', 'block_view', 'nombre_bloque');
Y como obtenemos estos datos?
Podemos dirigirnos a /admin/structure/block para ver el listado de nuestros bloques.
Luego buscamos el bloque que deseamos invocar, en mi caso "User menu" y le damos clic a configurar. En la barra de direcciones veremos los datos que necesitamos como se muestra en la imagen.
Figura 1: Identificar nombre del módulo y nombre del bloque para la funci | ón module_invoke(); |
module_invoke('system', 'block_view', 'user-menu');
Ya que tenemos claro como invocar el bloque, vamos a crear un bloque que invoque a otro bloque (si, ya sé que suena redundante).
- Primero vamos a añadir un bloque nuevo en /admin/structure/block/add
- Block title:
| Block description: Bloque Invocado - User Menu - Insertar en el cuerpo del bloque o Block body el siguiente código:
//$block = module_invoke('nombre_modulo', 'block_view', 'nombre_bloque');
$block = module_invoke('system', 'block_view', 'user-menu');
print render($block['content']);
?> - Text format: PHP code
- Indicar Zona donde lo ubicarás en tu template, la restricción para las paginas y la restricción para los usuarios como desees.
- Guardar bloque y listo!!!
También se puede usar para invocar un bloque desde una pagina (page) o una vista (view), insertándola en el encabezado o pie de pagina siempre usando el filtro PHP code.