¿Cómo insertar un bloque de Drupal por medio de PHP en medio del contenido de un nodo?
Algunas veces nos encontramos con la necesidad de insertar un bloque en medio del contenido de un nodo en Drupal. O necesitamos publicar el mismo bloque varias veces dentro de la misma página, entonces usar las opciones que Drupal ofrece para mostrar bloques no es suficiente.
Con un poco de PHP se puede solucionar esto:
<?php
$block = module_invoke($module, 'block', 'view', $delta);
print theme('block', (object) $block);
?>La variable $module será el nombre del módulo que implementa el bloque. Y la variable $delta hace referencia al ID del bloque dentro del módulo (en este enlace pueden leer la documentación acerca de cómo crear bloques en un módulo).
Los bloques creados por medio del sistema de administración de bloques de Drupal son creados por el módulo block, y el delta de cada uno es el id del bloque. Por ejemplo, para imprimir el bloque personalizado # 7 usamos el siguiente código:
<?php
$block = module_invoke('block', 'block', 'view', 7);
print theme('block', (object) $block);
?>En realidad esto puede usarse en cualquier parte a donde tengamos acceso con PHP. Puede ser en el contenido de otro bloque, en el archivo page.tpl.php del tema, o cualquier otra parte del sitio.
Lo malo es que al hacerlo así
Lo malo es que al hacerlo así se inserta un div con ID igual para todos los bloques así que si tienes más de 1 te dará error de validación W3.
Pero de eso se encarga el
Pero de eso se encarga el tema con la función theme_block
Simplemente genial, gracias.
Simplemente genial, gracias.
Enviar un comentario nuevo