如何为我在代码中渲染的块渲染上下文链接?


11

我加载了一个块主题和内容,module_invoke()并用于render()渲染它们。我想为此块使用上下文链接。我如何也可以渲染它们?

这是我正在insde页面中使用的代码-front.tpl.php模板。

$block = module_invoke('block', 'block_view', '4);
print render($block);

我应该改用什么代码?

Answers:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

不幸的是,我们必须使用块模块(_ *())中的私有函数来实现这一点。


因此对于OP的示例为:$ block = block_load('block','4');
卡梅伦

12

Bart的回答将给出严格标准警告(PHP 5.4中默认启用)。要解决此问题,只需对可渲染数组使用一个中间变量:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

出现警告的原因是因为该drupal_render函数期望其参数作为参考。它具有签名drupal_render(&$elements)。有关更多信息,请参见此类似问题的答案。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.