web-dev-qa-db-ja.com

カスタムブロックをブロック名でレンダリング

Drupal CMSでカスタムブロックを作成しました。「test_block」と呼ばれているとしましょう。ブロックの名前を使用してテンプレートファイルでこのブロックをレンダリングする方法はありますか?

おかげで、

4
Pratip Ghosh

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;
?>
13
Chirag Shah

D8:

$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)];

プログラムでカスタムブロックをレンダリング

3
kxo

テンプレートレベルでは、次のようなことができるはずです。

<?php
  $test_block = "test_block";
  print views_embed_view($test_block);
?>

これにより、テンプレートにブロックが表示されます。

0
itsdarrylnorris

これを試して

$block = module_invoke('block', 'block_view', 'test_block');
print render($block['content']);
0
Eugene

このブロックにカスタムテンプレートを使用する方法を尋ねている場合、答えは次のとおりです。

ブロックのマシン名がtest_blockであるとすると、次のファイルを作成します

 block--block--test_block.tpl.php

あなたのテーマで

0
GWPROD