Добрый день!
Подскажите, как в Drupal 8 создать отдельный шаблон для типа материала.
В 7-й версии, в template.php добавлялась функция:
<?php
function ИМЯ_ТЕМЫ_preprocess_page(&$vars, $hook) {
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type; //для определенного типа ноды
}
}
?>
И шаблон создавался в виде файла page--type--МАШИННОЕ ИМЯ ТИПА МАТЕРИАЛА.tpl.php
Для 8-й версии не смог найти решения.
Комментарии
Плохо искали. Первый же результат в гугле:
https://www.drupal.org/docs/8/theming/twig/twig-template-naming-conventions
node--nodeid--viewmode.html.twig
node--nodeid.html.twig
node--type--viewmode.html.twig
node--type.html.twig
node--viewmode.html.twig
node.html.twig
Такая же информация подробно изложена и здесь:
http://drupalbook.ru/drupal/86-rabota-s-shablonami-v-drupal-8-kakie-est-...
Но я имел ввиду, как переопределить шаблон не просто для ноды определенного типа материала, а для всей страницы определенного типа материала.
По аналогии, как существует возможность задавать отдельный шаблон для главной страницы в виде page--front.html.twig, или как в 7-й версии можно было задать шаблон вида: page--type--МАШИННОЕ ИМЯ ТИПА МАТЕРИАЛА.tpl.php
https://www.drupal.org/project/drupal/issues/2867746
А как быть, если это системная страница, не нода, например, страница пользователя или корзина? Т.е. в template_preprocess_page я хочу узнать, что я нахожусь в корзине, как это сделать?
<?php
$variables['page']['#type']
?>
выводит просто "page".
В идеале, такая информация (про варианты наименования шаблонов) должна быть в специальном справочнике на drupal.ru
По аналогии с подобной справочной системой drupal.org.
Естественно, переведенной на понятный для пользователей drupal.ru язык.