Drupal theme()函数和自定义模板

时间:2010-10-29 23:26:00

标签: drupal

我有一个自定义模块,可以从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'];
}

什么不见了?

1 个答案:

答案 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实现。]