Drupal CMSでカスタムブロックを作成しました。「test_block」と呼ばれているとしましょう。ブロックの名前を使用してテンプレートファイルでこのブロックをレンダリングする方法はありますか?
おかげで、
D7:
<?php
$block = module_invoke('module_name', 'block_view', 'block_delta');
print $block['content'];
?>
'module_name'=モジュールのマシン名(つまり、モジュールのフォルダー名)。これはコアモジュールにも当てはまるため、たとえば「search」、「user」、「comment」はすべてここで機能します。
'block_delta'=ブロックのマシン名。これが何であるかは、ブロック管理ページにアクセスしてブロックを編集することで確認できます。たとえば、webformブロックを編集するためのURLは次のようになります。
Drupal 7:admin/structure/block/manage /webform/client-block-11/構成
この例では、 'webform'はモジュールの名前、 'client-block-11'はブロックのデルタです。
カスタムブロックには、「ブロック」のモジュール名とデルタの番号があり、ブロックを編集して見つけることもできます。
詳細: 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)];
テンプレートレベルでは、次のようなことができるはずです。
<?php
$test_block = "test_block";
print views_embed_view($test_block);
?>
これにより、テンプレートにブロックが表示されます。
これを試して
$block = module_invoke('block', 'block_view', 'test_block');
print render($block['content']);
このブロックにカスタムテンプレートを使用する方法を尋ねている場合、答えは次のとおりです。
ブロックのマシン名がtest_blockであるとすると、次のファイルを作成します
block--block--test_block.tpl.php
あなたのテーマで