如何在模板文件中渲染块

时间:2013-03-12 08:47:47

标签: php drupal

我对drupal相当新。我在创建带有块的模块时看到了这个例子。我的问题是我们可以将来自customblock_block_view的$ content发送到另一个模板文件,在那里可以通过添加一些额外的HTML来呈现它吗?如果是这样的话?

/**
 * Implements hook_block_info().
 */
function customblock_block_info() {
  $blocks = array();

  $blocks['list_modules'] = array(
    'info' => t('A listing of all of the enabled modules.'),
    'cache' => DRUPAL_NO_CACHE,
  );

  return $blocks;
}

/**
 * Implements hook_block_view().
 */
function customblock_block_view($block_name = '') {
  if ($block_name == 'list_modules') {
    $list = module_list();

    $theme_args = array('items' => $list, 'type' => 'ol');
    $content = theme('item_list', $theme_args);

    $block = array(
      'subject' => t('Enabled Modules'),
      'content' => $content,
    );

    return $block;
  }
}

2 个答案:

答案 0 :(得分:1)

使用theme($hook, $variables)函数呈现项目。使用Theme developer模块找出要传递的内容$hook。对于块,它是block

Theme developer模块还会告诉您项目是通过函数还是模板呈现的。在第一种情况下,查找函数theme_block。在第二种情况下,查找文件block.tpl.php。该项目的文档告诉您,$variables数组应该是什么样的。

构建$variables数组并调用theme('block', $variables)

请注意,对于模板文件,某些变量来自预处理函数,如theme()文档中所述。这些变量不需要由theme($hook, $variables)的调用者提供。相关的预处理函数应列在模板文件中。

答案 1 :(得分:0)

您可以创建自己的模板文件,只需使用hook_theme注册:

function customblock_theme() {
    return array(
        'myblock' => array(
        'template' => 'mytpl',
        'variables' => array('variable' => NULL),
        ),
    );
}

下一步是创建tpl文件;喜欢主题中的mytpl.tpl.php。 然后,使用theme()

进行调用
theme('myblock',$theme_args);

现在,在模板中,$theme_args可用$variable