Drupal 8 覆盖主题挂钩页面文件建议
Drupal 8 override Theme Hook Page file suggestion
我知道网上有一些关于如何执行此操作的教程,但由于某些原因我没有用。
我想在模板的 "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
- page--node--dish.html.twig // 获取未添加
- 页--节点.html.twig
- 页数.html.twig
我已经尝试过清除缓存。我正在使用 Drupal 8.1
我在这里错过了什么?
只需将此文件添加到您的主题 floder node--typeName.html.twig
不需要任何功能。现在你的内容类型应该使用这个模板
我是通过下面的代码实现的,看起来和你的代码有些相同
if ($node = \Drupal::routeMatch()->getParameter('node')) {
$suggestions[] = 'page__node__'.$node->bundle();
}
我的错误不在于函数,而在于文件名。我的文件名是 MYTHEME.theme.php
但它应该是 MYTHEME.theme
.
这就是代码不起作用的原因。
我知道网上有一些关于如何执行此操作的教程,但由于某些原因我没有用。
我想在模板的 "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
- page--node--dish.html.twig // 获取未添加
- 页--节点.html.twig
- 页数.html.twig
我已经尝试过清除缓存。我正在使用 Drupal 8.1
我在这里错过了什么?
只需将此文件添加到您的主题 floder node--typeName.html.twig
不需要任何功能。现在你的内容类型应该使用这个模板
我是通过下面的代码实现的,看起来和你的代码有些相同
if ($node = \Drupal::routeMatch()->getParameter('node')) {
$suggestions[] = 'page__node__'.$node->bundle();
}
我的错误不在于函数,而在于文件名。我的文件名是 MYTHEME.theme.php
但它应该是 MYTHEME.theme
.
这就是代码不起作用的原因。