我有一个自定义模块,可以从Web服务调用返回数据。它来自XML响应,我将其转换为数组。
我有阵列后,我会这样做:
$output = theme('search_srs_results', $data);
return $output;
但我得到一个白色的屏幕。没有apache / php / watchdog错误。
我之前在另一个模块中完成了这项工作没有任何困难。定义了我的主题钩子,并指向模板文件,传递$ data参数。如果我在返回之前转储$ output,则为NULL。
$ data肯定有一个填充数组,然后才能成为主题。
如果我做主题('item_list',$ data);它呈现,没有白屏。
我尝试在hook_theme和theme()上再次阅读文档,但我似乎没有做错任何事。
以下是主题功能:
/**
* Implementation of hook_theme()
*/
function srs_finder_theme() {
return array(
'search_srs_results' => array(
'template' => 'srs-finder-results',
'arguments' => array('data' => null),
),
);
}
/**
* Implementation of hook_preprocess()
*/
function srs_finder_preprocess_search_srs_results(&$vars) {
$data = $vars['data'];
}
什么不见了?
答案 0 :(得分:3)
我不明白为什么你需要hook_preprocess()
功能。 $data
应自动srs-finder-results.tpl.php
。那是因为您在调用theme('src_src_results', $data)
中传递了此变量,并且您已声明hook_theme()
中有1个参数。
srs-finder-results.tpl.php
文件应位于src_finder
模块文件夹中。你需要为此实现代码! (或者,正如nikit上面所述,提供theme_search_srs_results
函数。在这种情况下,您需要删除template
数组条目
[注意:如果模块的其他用户想要覆盖此主题模板,他们总是可以在主动的主题文件夹中提供自己的srs-finder-results.tpl.php
实现。]