Cómo mostrar un bloque mediante programación
En este snippet muestro las diferentes maneras de mostrar un bloque a través de código.
Content blocks: son bloques que creas desde la interfaz de Drupal, por ejemplo.
$bid = 20 // Get the block id through config, SQL or some other means.
$block = \Drupal\block_content\Entity\BlockContent::load($bid); // Load block entity.
$render = \Drupal::entityTypeManager()->
getViewBuilder('block_content')->view($block);
return $render;
Plugin blocks: son bloques que han sido definido como plugins a través de algún módulo. Un ejemplo sería el bloque de cambiar el idioma (language switcher).
$block_manager = \Drupal::service('plugin.manager.block'); // Get block manager service.
// Get the same settings from this block.
$plugin_block = $block_manager->createInstance($block->getPluginId(), $block->get('settings'));
$render = $plugin_block->render(); // Render plugin block.
return [
'#markup' => render($render),
];