2016-09-08 1 views
0

Я знаю, что есть некоторые обучающие онлайн-игры о том, как это сделать, но по какой-то причине я не работаю.Drupal 8 override Theme Hook Представление файла страницы

Я хотел бы добавить предложение темы на тему «Тема 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
  • страницы --node -%. html.twig
  • страница - node - dish.html.twig // Не добавляется
  • страница - node.html.twig
  • page.html.twig

Я уже пытался очистить кэш. Я использую Drupal 8.1

Что мне здесь не хватает?

ответ

0

Моя ошибка была не с помощью функции, но с именем. Мое имя было MYTHEME.theme.php, но это должно было быть MYTHEME.theme.

Вот почему код не работает.

1

просто добавьте этот товар в тему темы floder node--typeName.html.twig не нужно никакой функции. Теперь ваш тип контента должен использовать этот шаблон

+0

Это только изменяет шаблон на уровне «узла». И не на уровне «page». Я предполагаю, что мне нужен метод привязки шаблона? – user3634184

0

мне удалось добиться этого с помощью следующего кода, который, кажется, несколько же, как ваш код

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