2015-08-18 3 views
0

Я использую hook_theme_suggestions_HOOK_alter() добавить предложения темы крючка для page.html.twig на основе типа контента:Drupal 8 hook_theme_suggestions_HOOK_alter() не используется

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

Теперь мой режим отладки веточки выбирает это вверх:

<!-- 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.

Кто-нибудь знает, что происходит?

+0

Вы пытались очистить свой кеш? – TeeDeJee

+0

Да, несколько раз – stefanluk

ответ

3

Я узнал, что случилось.

По-видимому, при определении новых предложений Drupal нуждается в символах подчеркивания вместо тире. Затем Drupal преобразует эти подчёркивания в тире, так что фактическое имя файла будет по-прежнему страница - узел - case.html.twig

Итак: $suggestions [] = 'page--node--'.$node->gettype();

Должно быть: $suggestions [] = 'page__node__'.$node->gettype();

Документация: https://www.drupal.org/node/2186401

+0

Это правильно. Вы должны принять свой ответ :) – Cottser