Drupal 8 自定义模块“找不到主题挂钩”
Posted
技术标签:
【中文标题】Drupal 8 自定义模块“找不到主题挂钩”【英文标题】:Drupal 8 custom module "theme hook not found" 【发布时间】:2018-08-04 09:51:14 【问题描述】:我正在为 Drupal 8.4.4 构建一个自定义模块,并且没有从块中检测到 hook_theme。我收到一条错误消息,提示“找不到主题挂钩 gardentheme”。 如果我卸载模块并重新安装它,它可以正常工作,但是一旦我清除缓存,它就不再找到theme_hook。
我注意到 die() 并退出;清除缓存后不会对我的 .module 文件执行任何操作,我觉得清除缓存后 .module 不再运行。
我的模块文件叫做 garden.module
<?php
/**
* @file
*
*/
/**
* Implements hook_theme()
*/
function garden_theme($existing, $type, $theme, $path)
return array('gardentheme' =>
array(
'variables' => array(
'description' => NULL
),
)
);
我的块放置在 src/Plugin/Block/GardenScheduleBlock.php
<?php
namespace Drupal\garden\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* Provides a 'GardenSchedule' Block.
*
* @Block(
* id = "garden_schedule_block",
* admin_label = @Translation("Garden Schedule"),
* category = @Translation("Garden Schedule_Category"),
* )
*/
class GardenScheduleBlock extends BlockBase
/**
* @inheritdoc
*/
public function build()
return array(
'#theme' => 'gardentheme',
'#description' => "description test"
);
提前感谢您的任何提示。
【问题讨论】:
我今天遇到了exact同样的问题——正在开发一个非常相似的功能。使用 Drupal 8.4.5 (Acquia Lightning)。似乎对我有帮助的东西(至少我还没能打破它)正在运行core/rebuild.php
- 确保在你的 settings/local.settings 文件中启用它 - $settings['rebuild_access'] = TRUE;
这对你有帮助吗?我不确定这与管理员中的 drush cr / 手动缓存重建有何不同。文档状态“即使 Drupal 本身不工作,也会重建所有 Drupal 缓存。” api.drupal.org/api/drupal/core%21rebuild.php/8.1.x
嗨@user2307706,感谢您的评论,但令人惊讶的是我没有再次遇到问题,没有做任何特别的事情,但如果再次发生,我们会考虑您的解决方案。
【参考方案1】:
public function build()
$renderable = [
'#theme' => 'my_template',
'#test_var' => 'test variable',
];
return $renderable;
试试这个
【讨论】:
以上是关于Drupal 8 自定义模块“找不到主题挂钩”的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 8 更新自定义模块的 language.po 文件