我有一些非节点数据在我的自定义模块中,我想要调用一个模板来显示数据。这个模板可能会重用于电子邮件输出,我想基本上只是引导Drupal并根据需要使用模板。Drupal:我如何在模块中调用模板?
我想我可能只是这样做:
$html = theme('verysmallsnippet', $my_fancy_data_structure);
...然后创建一个verysmallsnippet.tpl.php
文件中的活动主题文件夹,然后期望的Drupal找到模板文件,并评估与传递参数的模板主题功能。这是对模板引擎如何工作的巨大过度简单的解释 - 或者我需要首先设置主题注册表?或者是什么?
我看着this question,以及theme文件,我有点失落。
哦,实际上,这使得我的脑海里放了很多东西,特别是模板文件如何在模板中“知道如何命名变量”。我将调查主题指南。我看到了比我列出的两件事情更清楚的事情,但在搜索时无法再找到它。非常感谢你! – cgp 2010-11-10 20:20:46
如果我在这里错了,请纠正我,但要“告诉主题注册表关于我的hook_theme实现更改”我应该通过管理菜单或使用drupal_rebuild_theme_registry()调用清除缓存 - 对吗? – cgp 2010-11-10 20:28:30
@altCognito:很高兴有帮助。至于模板部分中的“知道如何命名变量”,您可能需要特别关注文档中的'template_preprocess()'函数的概念 - 其基本思想是您只需传递最少的将需要的数据添加到您的初始theme()调用中,并且预处理函数负责将模板“扩展”到模板中所需的所有不同变量中(换句话说,将编码逻辑放在模板之外并将其放入预处理函数,比如,例如从路径创建适当的链接,计算寻呼机信息等) – 2010-11-10 20:40:23