0

我对drupal相当陌生。我已经看过这个关于创建带有块的模块的示例。我的问题是我们可以将 $content 从 customblock_block_view 发送到另一个模板文件,可以通过添加一些额外的 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;
  }
}
4

2 回答 2

1

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

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

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

请注意,对于模板文件,一些变量来自theme()文档中描述的预处理函数。此类变量不需要由theme($hook, $variables). 相关的预处理函数应在模板文件中列出。

于 2013-03-12T09:05:29.940 回答
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

于 2013-03-13T20:46:00.813 回答