Если на сайте используется модуль Path, то удобно иметь в body цепочку классов на основе текущего пути. Например если открыта страница https://example.com/news/world/title
то в body должно быть:
<body class="... path-news path-news-world path-news-world-title">
Код, добавляющий эти классы:
Drupal 8+
function THEMENAME_preprocess_html(array &$vars): void {
// Add classes by current path
$current_system_path = \Drupal::service('path.current')->getPath();
$current_path_alias = \Drupal::service('path_alias.manager')->getAliasByPath($current_system_path);
$path_class_suffix = 'path';
foreach (explode('/', $current_path_alias) as $key => $arg) {
if ($arg) {
$path_class_suffix .= '-' . $arg;
$vars['attributes']['class'][] = \Drupal\Component\Utility\Html::getClass($path_class_suffix);
}
}
}
Drupal 7
function THEMENAME_preprocess_html(&$vars) {
$request_path_array = explode('/', request_path());
if ($request_path_array) {
if ($request_path_array[0] == $GLOBALS['language']->language) {
unset($request_path_array[0]);
}
$class = 'path';
foreach ($request_path_array as $arg) {
$class .= '-' . $arg;
$vars['classes_array'][] = $class;
}
}
}
Написанное актуально для
Drupal 7, Drupal 8+
Комментарии
Если не ошибаюсь, тоже самое можно проделывать с помощью модуля css injector . Но в любом случае спасибо за информацию. Модули модулями... но все же надо понимать, что и как происходит, а не просто тыкать мышкой в админке : )
А зачем это нужно, если друпал и так добавляет туда классы?
не добавляет
Может это у меня модуль Pathauto добавляет?
У меня вот так выглядит просмотр ноды по умолчанию
не вижу классов текущего пути
Я не про классы пути. Я спрашиваю зачем их добавлять, если и так есть уникальные классы вплоть до идентификатора ноды
чтобы составлять селекторы на основе текущего пути
И и с помощью стандартных классов смогу сделать темизацию, зачем добавлять лишние классы?
ну вы молодец. не знаю что ещё вам ответить
Просто может я не понимаю чем вызвана необходимость классов путей, тогда просветите )
Вот более менее Решение для drupal 6
автор пишет, что получается что то типа такого:
А как это реализовать на Drupal 9?
Добавить комментарий