Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在drupal 7上嵌入块anywhere失败_Drupal_Drupal Blocks - Fatal编程技术网

在drupal 7上嵌入块anywhere失败

在drupal 7上嵌入块anywhere失败,drupal,drupal-blocks,Drupal,Drupal Blocks,我和Drupal7玩了一个星期了。使用drupal 6,我过去可以使用以下命令在任何位置放置(登录)块: $block = (object) module_invoke($module, 'block', 'view', $delta); $block->module = $module; $block->delta = $delta; return theme('block', $block); 或者这个: $block = module_invoke('user

我和Drupal7玩了一个星期了。使用drupal 6,我过去可以使用以下命令在任何位置放置(登录)块:

  $block = (object) module_invoke($module, 'block', 'view', $delta);
  $block->module = $module;
  $block->delta = $delta;
  return theme('block', $block);
或者这个:

$block = module_invoke('user', 'block', 'view', 0); 
$vars['login'] = $block['content'];
我更改了Drupal 7的增量“0”:

$block = module_invoke('user', 'block', 'view', 'login'); // I have changed from 0 to 'login' for delta at drupal 7
$vars['login'] = $block['content'];
两者都会导致致命错误。我不知道模块_invoke有什么变化?目前没有具体变化

任何提示都将不胜感激。

Drupal 7中的hook_block($op)已更改为hook_block_op()。尝试:

$block = module_invoke('user', 'block_view', 'login');
$vars['login'] = $block['content'];
或者为什么不直接使用表格:

$vars['login'] = drupal_get_form('user_login_block');

Drupal 7将所有对象保留在渲染数组中,直到最后一次输出,这允许对内容进行更大程度的控制。在这种情况下,要获得最终输出,请使用render()函数。简单

   <?php
              $block = module_invoke('user', 'block_view', 'login');
              print render($block); 
    ?>

更好的解决方案,它尊重Drupal主题化

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;
}

谢谢我知道有人知道。只需要使用“render”或“drupal_render”即可使其工作,否则将得到一个空数组。您知道在这种情况下使用“渲染”还是“drupal_渲染”吗?再次感谢您,在D7中默认使用render()。