我在自定义模块中有一些非节点数据,我想调用模板来显示数据。这个模板可能会被重复用于电子邮件输出,我想基本上只是引导Drupal并根据需要使用模板。
我以为我可以这样做:
$html = theme('verysmallsnippet', $my_fancy_data_structure);
...然后在活动主题文件夹中创建一个verysmallsnippet.tpl.php
文件,然后期望Drupal找到模板文件并使用传递给主题函数的参数评估模板。这是对模板引擎如何工作的过分简单的解释 - 或者我是否需要首先设置主题注册表?或者是什么?
我查看了this question以及theme文档,我有点迷失。
答案 0 :(得分:3)
是的,略显过于单纯;)
要获得比您关联的API文档更好的介绍,请从Theming Guide开始,根据您的具体需要,检查Using the theme layer (Drupal 6.x)。
为了让您的示例正常工作,您需要通过实施hook_theme()告诉主题注册表您的模板:
function yourModule_theme($existing, $type, $theme, $path) {
$items = array();
$items['verysmallsnippet'] = array(
'arguments' => array('my_fancy_data_structure' => array()), // Change array() to a fitting default
'template' => 'verysmallsnippet',
);
return $items;
}
您可以在该挂钩中定义更多详细信息,但这是获取模板文件所需的最小值(引擎将在查找文件时添加“tpl.php”部分。)
注意:每次添加或更改hook_theme()实现时,都需要触发主题注册表的重建,否则您的更改将不会生效。