Темизация страницы 404 в Drupal 8
21 апреля 2017 в 17:00
Народ, а как называется темплейт в Drupal 8.3 для темизации страницы с 404 ошибкой (создана нодой и прописана в настройке сайта) ?
Варианты page--system-404.html.twig или page--404.html.twig не срабатывают (
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
page--node--ID ноды.html.twig
Не, это не решение. Я пробовал. Это работает только при прямом запросе URL (например www.site.ru/node/100), но не работает, когда набирают случайный URL www.site.ru/blabla и друпал перенаправляет на сотую ноду.
Еще я читал такую тему, что в друпал 8.3 что-то изменили и темизация 4XX страниц не работает ( и там предлагают патч для ядра /core/modules/system/system.module Но только у меня и с ним не работает ((((
Или предлагают своим модулем поставить хук....
<?php
/**
* Implements hook_theme_suggestions_page() to set 40x template suggestions
*/
function MYMODULE_theme_suggestions_page(array $variables) {
$path_args = explode('/', trim(\Drupal::service('path.current')->getPath(), '/'));
$suggestions = theme_get_suggestions($path_args, 'page');
$http_error_suggestions = [
'system.401' => 'page__401',
'system.403' => 'page__403',
'system.404' => 'page__404',
];
$route_name = \Drupal::routeMatch()->getRouteName();
if (isset($http_error_suggestions[$route_name])) {
$suggestions[] = $http_error_suggestions[$route_name];
}
return
$suggestions;}
?>
но только и он мне не помогает (
Точно, с переходом на 8.3 не работает.
Решил данный вопрос установкой следующего хука в своей теме:
<?php
function mytheme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
$http_error_suggestions = [
'system.401' => 'page__401',
'system.403' => 'page__403',
'system.404' => 'page__404',
];
$node = \Drupal::request()->attributes->get('node');
if ($node) {
if ($node->id() == 49 ) { // Номер ноды, который привязан к 404 странице
$suggestions[] = $http_error_suggestions['system.404'];
}
}
}
?>
Решил в системные файлы не лезть, пусть пока так работает, а там и ядро подлатают.