在基于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;