Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 7 hook_theme()未加载模板文件_Drupal_Drupal 7_Drupal Theming_Drupal Themes - Fatal编程技术网

Drupal 7 hook_theme()未加载模板文件

Drupal 7 hook_theme()未加载模板文件,drupal,drupal-7,drupal-theming,drupal-themes,Drupal,Drupal 7,Drupal Theming,Drupal Themes,我尝试使用drupal的hook_theme()获得一个非常简单的模块来加载模板文件。这和你想象的一样简单 function sectionheader_theme ( $existing, $type, $theme, $path ) { return array( 'sectionheader' => array( 'variables' => array( 'foo' => NULL ), 'template' => 'secti

我尝试使用drupal的hook_theme()获得一个非常简单的模块来加载模板文件。这和你想象的一样简单

function sectionheader_theme ( $existing, $type, $theme, $path ) {
  return array(
    'sectionheader' => array(
      'variables' => array( 'foo' => NULL ),
      'template' => 'sectionheader',
    ),
  );
}
该模板名为sectionheader.tpl.php。模块的其余部分按预期工作。我已经清除了Drupal缓存。我在这个函数中插入了一个die(“Debug”)语句,它正在被执行,但我的模板永远不会被调用。模板中只有一些调试文本,因此我可以看到它正在工作,但在模块的任何视图中都不可见


在我能找到的每个示例中,我都做了所有的工作,甚至直接从其他模块复制和粘贴了代码,这个模板仍然不会加载。

注意,如果您已经将模板文件放在模块目录的/theme子文件夹中(这是最佳做法),您还需要在hook\u theme中指定文件路径

函数示例\u主题($existing,$type,$theme,$path){
返回数组(
“示例_函数”=>数组(
'variables'=>array('var1'=>array(),'var2'=>array(),'var3'=>array()),
“模板”=>“示例模板”,
'path'=>drupal_get_path('module','example')。/theme'
), 
);  
}

如上所述,我遇到了同样的问题。在一个开发模块中,一切都很正常,但是当我简单地将这个模块复制到一个新模块中,它将成为我的生产模块时,模板文件就不再工作了。我尝试了上面提到的一切,但运气不好。原来的模块被禁用,只有新模块被启用

我甚至回去看看原始模块的主题是否可行,但它没有。嗯

当我更改主题的名称时,它突然开始工作:找到并显示模板文件

因此,似乎任何注册主题名的模块——即使它被禁用——仍然注册一个主题,而且主题名在整个系统中似乎需要是唯一的


答:查找其他模块中声明的相同主题名称

我遇到了与您相同的问题,我通过清除缓存解决了这个问题,我从数据库中搜索,在table cache的cid列中,我得到了类似“theme_registry:*”的内容,我将它们删除后,就可以正常工作。

我尝试将模板放入子文件夹中,按照你提到的方式创建了一条路径,但这似乎并没有解决问题。我遇到了同样的问题。像Jape一样,我已经清除了缓存,尝试了我能做的一切,并且已经验证了调用了_-theme函数(在我的例子中,_-theme函数正在添加css文件,这将出现在结果中)。但是,无论我做什么,模板文件似乎被忽略,结果是空的。哦,顺便说一句,我尝试过重命名模板文件,但它的名称始终与模块的名称不同。一般来说,使用答案绕过评论的最低代表要求是不可接受的。这是有原因的最低限度是到位的,堆栈溢出有一个问题和答案的格式,而不是一个讨论线程的格式,“答案”不像是一个讨论线程中的“答复”,这意味着你实际上提供了一个问题的答案。通常我会将一条评论标记为要删除的答案,但具有讽刺意味的是,这条评论实际上是一个合法的答案,无论如何都不应该是评论,所以我只是删掉了非答案评论。