在Drupal模块中加载区块

在基于Drupal开发的模块或者应用程序中,我们经常会遇到需要在Drupal模块中加载区块的情况,比如,Drupal7的区块管理页面不能让一个区块在多个区域(region)中显示(当然这在Drupal8中已经解决了)。所以,当我们想让Drupal的同一个区块在多个区域(region)中显示的时候,可以使用长风Drupal开发团队提供一个小小的函数,用以实现在Drupal模块中加载区块。

通过调用自定义函数block_render($module, $block_id)实现。

$module:这是被调用的区块对应的模块名称

$block_id:区块的ID或者机器名称

function block_render($module, $block_id) {
  $block = block_load($module, $block_id);
  $block_content = _block_render_blocks(array($block));
  $build = _block_get_renderable_array($block_content);
  $block_rendered = drupal_render($build);
  return $block_rendered;
}

调用函数

//调用block模块建立的block
$output = block_render('block, 1);
//调用其他模块
$output = block_render('views, 'map-block_1');
return $output;