免责声明:我对PHP编程很陌生,所以这个问题我看起来很蠢,所以请原谅我的业余爱好者。
我正在自定义一些Drupal代码来更改行为,以便我可以从UI获取块的名称 - >将其存储在变量(db)中 - >使用此信息将适当的块加载到UI中。
以下是我的代码:
$blockModuleName = strval(render($content['field_block_module_name']));
$blockDelta = strval(render($content['field_block_delta']));
echo "<div>";
echo $blockModuleName;
echo $blockDelta;
echo gettype($blockModuleName);
echo "</div>";
$block = module_invoke($blockModuleName, 'block_view', $blockDelta);
print render($block['content']);
输出如下:
如输出所示,$ blockModuleName和$ blockDelta包含我想要的确切值。但是,内容未正确加载到磁贴中。
但是,如果我使用以下代码,则一切都按预期工作:
$blockModuleName = strval(render($content['field_block_module_name']));
$blockDelta = strval(render($content['field_block_delta']));
echo "<div>";
echo $blockModuleName;
echo $blockDelta;
echo gettype($blockModuleName);
echo "</div>";
$block = module_invoke('md_slider', 'block_view', '1');
print render($block['content']);
这是输出:
我知道这必须是简单的,请帮助我解决这个问题。
答案 0 :(得分:0)
显然$ blockModuleName和$ blockDelta有一些html标签,我无法用echo做出来,因为在处理完HTML后会显示字符串。
我能够使用以下方法获得所需的输出:
$blockName = field_get_items('node', $node, 'field_block_module_name');
$blockNameFirstItem = reset($blockName);
$blockNameFirstItemValue = $blockNameFirstItem['value'];
$blockDelta = field_get_items('node', $node, 'field_block_delta');
$blockDeltaFirstItem = reset($blockDelta);
$blockDeltaFirstItemValue = $blockDeltaFirstItem['value'];
$block = module_invoke($blockNameFirstItemValue, 'block_view', $blockDeltaFirstItemValue);
print render($block['content']);