不明白为什么hook_theme()似乎没有做任何事情

时间:2012-02-12 17:18:38

标签: php drupal drupal-7 drupal-theming drupal-hooks

我正在使用Drupal 7并创建了一个名为fb的自定义模块。在fb.module文件中,我有以下内容:

function fb_theme($existing, $type, $theme, $path) {
  return array(
    'fb' => array(
      'template' => 'fb'
    )
  );
}

在与模块文件(模块的根目录)相同的目录中,我有一个名为fb.tpl.php的文件,其中包含:

fb.tpl.php is working!

出于测试目的,我的主题html.tpl.php文件在正文中调用以下内容:

<?php
$ouput = theme('fb');
print_r($output);
?>

但是,print_r($output)行不会产生任何结果。我希望它包含fb.tpl.php文件的内容,或者可能包含该文件内容的数组作为其参数之一的值。为什么不呢?

2 个答案:

答案 0 :(得分:1)

你不需要在Drupal 7中使用主题函数。相反,创建一个这样的可渲染数组:

$output = array(
  '#theme' => 'fb'
);

输出如下:

drupal_render($output);

这将是在html.tpl.php文件中输出它的最简单方法。

答案 1 :(得分:-1)

您正在使用drupal 6语法。 D7语法如下:

function fb_theme($existing, $type, $theme, $path) {
  return array(
    'fb' => array(
      'file' => 'fb'
    )
  );
}

请参阅此处的完整文档:http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_theme/7

[edit] - 也不要忘记在更改主题挂钩后刷新主题缓存,否则你不会看到更改。