I have created a custom block in the Drupal CMS. Say it is called "test_block". Is there a way to render this block in a template file using the name of the block?
<?php $block = module_invoke('module_name', 'block_view', 'block_delta'); print $block['content']; ?>
'module_name' = The machine name of the module (i.e. the module's folder name). This is true for core modules too, so for instance 'search', 'user' and 'comment' would all work here.
'block_delta' = The machine name of the block. You can determine what this is by visiting the block administration page and editing the block. The URL for editing a webform block, for instance, would be something like:
Drupal 7: admin/structure/block/manage/webform/client-block-11/configure
In this example, 'webform' is the module's name, 'client-block-11' is the block's delta.
Custom blocks will have module name of 'block' and a number for a delta, which you can also find by editing the block.
More information: http://drupal.org/node/26502
====== OR =============
<?php //suppose 98 is the id of the block $block =block_load('block',98); $output = drupal_render(_block_get_renderable_array(_block_render_blocks(array($block)))); print $output; ?>
$block_entity = Drupal\block_content\Entity\BlockContent::load(BLOCK_ID);// BLOCK_ID $block_view = \Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block_entity, 'DISPLAY_VIEW_NAME'); $rendered_block = ['#markup' => render($block_view)];
$block = module_invoke('block', 'block_view', 'test_block'); print render($block['content']);
If you are asking how to use a custom template for this block, then the answer is:
Assuming the machine name of your block is test_block, then create a file called
In your theme
On your template level you should be able to do something like this:
<?php $test_block = "test_block"; print views_embed_view($test_block); ?>
This will display your block in the template.