【问题标题】:Drupal 8 hook_theme_suggestions_HOOK_alter() not being usedDrupal 8 hook_theme_suggestions_HOOK_alter() 没有被使用
【发布时间】:2015-11-11 08:41:32
【问题描述】:

我正在使用hook_theme_suggestions_HOOK_alter() 根据内容类型为 page.html.twig 添加主题挂钩建议:

function mytheme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
  $node = \Drupal::request()->attributes->get('node');
  $suggestions[] = 'page--node--' . $node->getType();
}

现在我的 twig 调试模式可以解决这个问题:

    <!-- FILE NAME SUGGESTIONS:
   * page--node--case.html.twig (new suggestion based on content type 'case')
   * page--node--3.html.twig
   * page--node--%.html.twig
   * page--node.html.twig
   x page.html.twig
   -->

但是,当我创建一个名为 page--node--case.html.twig 的文件时,它并没有被渲染。而是使用page.html.twig

有人知道怎么回事吗?

【问题讨论】:

  • 您是否尝试过清除缓存?

标签: drupal drupal-theming drupal-8


【解决方案1】:

我发现出了什么问题。

显然,在定义新建议时,Drupal 需要下划线而不是破折号。然后 Drupal 将这些下划线转换为破折号,这样实际的文件名仍然是 page--node--case.html.twig

所以: $suggestions [] = 'page--node--'.$node-&gt;gettype();

应该是:$suggestions [] = 'page__node__'.$node-&gt;gettype();

文档: https://www.drupal.org/node/2186401

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多