我有一个自定义模块,可以从web服务调用中返回数据。它从XML响应返回,我正在将其转换为数组。
一旦我有了数组,我就有了:
$output = theme('search_srs_results', $data);
return $output;但是我得到了一个白色的屏幕。没有apache/php/watchdog错误。
我以前在另一个模块中做过这件事,没有任何困难。我的主题钩子是定义的,它指向一个模板文件,传递$data参数。如果我在$output返回之前转储它,它就是空的。
在主题化之前,$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'];
}遗漏了什么?
发布于 2010-10-30 12:19:38
我完全不明白你为什么需要hook_preprocess()函数。srs-finder-results.tpl.php应该可以自动使用$data。这是因为您在调用theme('src_src_results', $data)时传递了这个变量,而且您已经声明了hook_theme()中有一个参数。
srs-finder-results.tpl.php文件应位于src_finder模块文件夹中。你需要为此实现代码!(或者,正如nikit上面所说的,提供一个theme_search_srs_results函数。在这种情况下,您将需要删除template数组条目)
注意:如果模块的其他用户想要覆盖这个主题模板,他们总是可以在激活的主题的主题文件夹中提供他们自己的srs-finder-results.tpl.php实现。
https://stackoverflow.com/questions/4056497
复制相似问题