Drupal 8覆盖主题钩子页面文件建议

时间:2016-09-08 19:17:36

标签: php drupal drupal-8

我知道网上有一些关于如何做到这一点的教程,但由于某种原因,我没有工作。

我想在" Theme Hook:Page"上添加一个文件主题建议。具有内容类型名称的模板级别(这样我可以让此内容类型的所有项目都使用此模板)。

因此,我将此添加到我的MYTHEME.theme.php文件中:

function MYTHEME_theme_suggestions_page_alter(array &$suggestions, array $variables) {
   if ($node = \Drupal::request()->attributes->get('node')) {
       array_splice($suggestions, 1, 0, 'page__node__' . $node->getType());
    }
}

所以你会期望以下输出:

  • 页 - 节点 - 19.html.twig
  • 页 - 节点 - 。%html.twig
  • 页面 - node - dish.html.twig //未添加
  • 页 - node.html.twig
  • page.html.twig

我已经尝试清除缓存了。我使用的是Drupal 8.1

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

只需将此文件添加到主题文件夹node--typeName.html.twig 不需要任何功能。现在您的内容类型应使用此模板

答案 1 :(得分:0)

我能够通过以下代码实现此目的,这似乎与您的代码

相同
if ($node = \Drupal::routeMatch()->getParameter('node')) {
    $suggestions[] = 'page__node__'.$node->bundle();
}

答案 2 :(得分:0)

我的错误不是功能,而是文件名。我的文件名是MYTHEME.theme.php,但应该是MYTHEME.theme

这就是代码不起作用的原因。