我对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;
}
}
答案 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