Rак добавить класс отображения вьюхи в body?

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

Лучший ответ

Аватар пользователя VasyOK VasyOK 5 декабря 2022 в 16:18
1

Спасибо!

Сделал так mytheme.theme:

function mytheme_preprocess_html(&$variables)
{  
    $route = \Drupal::routeMatch()->getRouteObject();
    $view_id = $route->getDefault('view_id');
    $display_id = $route->getDefault('display_id');
    $variables['attributes']['class'][] = $view_id;
    $variables['attributes']['class'][] = $display_id;
}

Комментарии

Аватар пользователя VasyOK VasyOK 4 декабря 2022 в 11:38

Контекст - да работает, спасибо.
Но он слегка жирноват. Хотя альтернатив не вижу. Другие модули делают класс для страницы, а не для дисплея вьюхи.

hook_theme_suggestions_alter - ууу, пока сложно...

Аватар пользователя VasyOK VasyOK 4 декабря 2022 в 15:59

Если я правильно понимаю через hook_theme_suggestions_alter предлагается темизировать html.html.twig по дисплею вьюхи?
Может какой-то preprocess_html лучше?

Аватар пользователя ivnish ivnish 4 декабря 2022 в 17:10
2

Да, я тупанул. Тут suggestions не нужно, а нужно препроцессить html.

Можно получить роут, если это поможет
$route_name = \Drupal::routeMatch()->getRouteName();

или просто порыться в $variables в поисках нужного за что можно зацепиться

Аватар пользователя VasyOK VasyOK 5 декабря 2022 в 16:18
1

Спасибо!

Сделал так mytheme.theme:

function mytheme_preprocess_html(&$variables)
{  
    $route = \Drupal::routeMatch()->getRouteObject();
    $view_id = $route->getDefault('view_id');
    $display_id = $route->getDefault('display_id');
    $variables['attributes']['class'][] = $view_id;
    $variables['attributes']['class'][] = $display_id;
}