Шаблон для типа материала в Drupal 8

Главные вкладки

Аватар пользователя primary primary 15 декабря 2018 в 18:18

Добрый день!

Подскажите, как в 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-й версии не смог найти решения.

Лучший ответ

Комментарии

Аватар пользователя primary primary 15 декабря 2018 в 22:50

Такая же информация подробно изложена и здесь:

http://drupalbook.ru/drupal/86-rabota-s-shablonami-v-drupal-8-kakie-est-...

Но я имел ввиду, как переопределить шаблон не просто для ноды определенного типа материала, а для всей страницы определенного типа материала.

По аналогии, как существует возможность задавать отдельный шаблон для главной страницы в виде page--front.html.twig, или как в 7-й версии можно было задать шаблон вида: page--type--МАШИННОЕ ИМЯ ТИПА МАТЕРИАЛА.tpl.php

Аватар пользователя widla widla 11 июля 2019 в 13:20

А как быть, если это системная страница, не нода, например, страница пользователя или корзина? Т.е. в template_preprocess_page я хочу узнать, что я нахожусь в корзине, как это сделать?

<?php
$variables
['page']['#type']
?>

выводит просто "page".

Аватар пользователя Orion76 Orion76 16 декабря 2018 в 8:48
1

В идеале, такая информация (про варианты наименования шаблонов) должна быть в специальном справочнике на drupal.ru
По аналогии с подобной справочной системой drupal.org.
Естественно, переведенной на понятный для пользователей drupal.ru язык.