在Drupal6中,使用以下代码可以轻松地将块插入到模板中:
$block = module_invoke('views', 'block', 'view', 'block_name');
print $block['content'];
然而,在Drupal7中使用相同的指令似乎不起作用。我环顾四周,找不到新方法。
Drupal7有没有允许以编程方式将块插入到模板或节点中的例程?
发布于 2014-03-10 16:12:37
根据wrburgess的回答,如果您的服务器使用的是较新版本的PHP,则可能会出现错误。
Strict warning: Only variables should be passed by reference in include()...
这就是我为了不引起/消除错误而做的事情。
<?php
$blockObject = block_load('views', 'block_name');
$block = _block_get_renderable_array(_block_render_blocks(array($blockObject)));
$output = drupal_render($block);
print $output;
?>
发布于 2011-10-20 13:18:49
D7:
<?php
$block = module_invoke('module_name', 'block_view', 'block_delta');
print render($block['content']);
?>
'module_name' =模块的机器名称(即模块的文件夹名称)。对于核心模块也是如此,例如“搜索”、“用户”和“评论”都可以在这里工作。
'block_delta' =块的机器名称。您可以通过访问数据块管理页面并编辑数据块来确定这是什么。例如,用于编辑for表单块的URL如下所示:
Drupal7: admin/structure/block/manage/webform/client-block-11/configure
在本例中,'webform'是模块的名称,'client-block-11'是块的增量。
自定义块将具有模块名称' block‘和一个增量编号,您也可以通过编辑该块来找到它。
发布于 2011-01-19 17:30:05
这似乎是将块插入到Drupal7的模板中的解决方案,但它似乎有点笨拙,我不知道对性能的影响:
$block = block_load('views', 'block_name');
$output = drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));
print $output;
如果有人有更好的程序,请添加。
https://stackoverflow.com/questions/4731420
复制相似问题