PHP字符串与变量 - 呈现内容

时间:2015-04-04 03:44:05

标签: php drupal drupal-7

免责声明:我对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']);

输出如下: enter image description here

如输出所示,$ 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']);

这是输出: enter image description here

我知道这必须是简单的,请帮助我解决这个问题。

1 个答案:

答案 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']);