在Drupal主题模板中使用代码调用区块

hooface 提交于 周二, 2010-05-25 - 09:19

有时,我们需要在模板中输出一些区块的内容,可以使用下列代码

$block = module_invoke('modules', 'block', 'view', 0);
print  $block['content'];

这里面主要是对module_invoke函 数理解和使用,这个函数通过对模块的调用 得到返回的值.

modules:是指模块名

block:这里是指模块中调用的hook,如hook_block, hook_menu, hook_cron等,我们使用的是block

'view', 0这里是hook_block的参数.

如何得到调用的参数:

在区块配置中察看所要调用的区块的链接:如最新用户配置链接是

/admin/build/block/configure/user/2

那么调用最新用户的参数就是module_invoke('user', 'block', 'view', 2);

得到的$block是包含标题的内容的分别是: $block[‘title’]和$block[‘content’]

如果是Drupal 7,那么可以使用:
   print render(module_invoke( 'module_name', 'hook_name', 'block_delta'));
如果是在 tpl 文件中调用 views 的区块,应该使用下面的方式:
   //view_name,区块所在 view 的机读名称
  // block_display_id,区块的机读名称,在区块编辑窗口的“高级/其他”中的“Machine Name:”项设置
   //argument,用于上下文过滤的参数(for contextual filters)
    views_embed_view('view_name', 'block_display_id', 'argument');

文章参考: