У меня чертовски много времени пыталось получить классы для моего тела в D8. Я использую собственную тему, и код, который у меня есть, выглядит примерно так:
themename.theme
use Drupal\Component\Utility\Html;
/**
* Preprocess variables for html templates.
*/
function HOOK_preprocess_html(&$variables) {
$path_class = !$variables['root_path'] ? 'path-frontpage' : 'path-' . Html::getClass($variables['root_path']);
if (isset($path_class)) {
$variables['attributes']['class'][] = $path_class;
}
}
html.html.twig
{%
set body_classes = [
not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
]
%}
<body{{ attributes.addClass(body_classes) }}>
Я получаю классы для моего элемента body, но NID пуст, читая «page-node», где мне нужно прочитать «page-node-NID».
Вы должны заменить HOOK на название вашей темы mytheme_preprocess_html
в противном случае Drupal не будет вызывать крюк.
Других решений пока нет …