首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal主题()函数和自定义模板

Drupal主题()函数和自定义模板
EN

Stack Overflow用户
提问于 2010-10-30 07:26:00
回答 1查看 6.4K关注 0票数 2

我有一个自定义模块,可以从web服务调用中返回数据。它从XML响应返回,我正在将其转换为数组。

一旦我有了数组,我就有了:

代码语言:javascript
复制
$output = theme('search_srs_results', $data);
return $output;

但是我得到了一个白色的屏幕。没有apache/php/watchdog错误。

我以前在另一个模块中做过这件事,没有任何困难。我的主题钩子是定义的,它指向一个模板文件,传递$data参数。如果我在$output返回之前转储它,它就是空的。

在主题化之前,$data肯定有一个填充的数组。

如果我做主题(‘item_list’,$data);,它呈现,没有白屏。

我再次尝试阅读关于hook_theme和theme()的文档,但我似乎没有做错什么。

以下是主题函数:

代码语言:javascript
复制
/**
 * 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'];
}

遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4056497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档