Drupal → Добавляем CSS классы в body на основе текущего пути

20.01.2012

Если на сайте используется модуль Path, то удобно иметь в body цепочку классов на основе текущего пути. Например если открыта страница news/world/title то в body должно быть:

<body class="... path-news path-news-world path-news-world-title">

Код, добавляющий эти классы:

/**
 * Preprocess function for theme_html()
 */
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
Похожие записи

Комментарии

Если не ошибаюсь, тоже самое можно проделывать с помощью модуля css injector . Но в любом случае спасибо за информацию. Модули модулями... но все же надо понимать, что и как происходит, а не просто тыкать мышкой в админке : )

Александр
04.02.2013, 17:20

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

Александр
04.02.2013, 17:24

Может это у меня модуль Pathauto добавляет?

У меня вот так выглядит просмотр ноды по умолчанию

<body class="html not-front logged-in no-sidebars page-node page-node- page-node-228 node-type-sale i18n-ru" >
Александр
04.02.2013, 17:29

Я не про классы пути. Я спрашиваю зачем их добавлять, если и так есть уникальные классы вплоть до идентификатора ноды

чтобы составлять селекторы на основе текущего пути

Александр
04.02.2013, 17:34

И и с помощью стандартных классов смогу сделать темизацию, зачем добавлять лишние классы?

ну вы молодец. не знаю что ещё вам ответить

Александр
04.02.2013, 17:43

Просто может я не понимаю чем вызвана необходимость классов путей, тогда просветите )

Роман
16.03.2013, 01:04

Вот более менее Решение для drupal 6

автор пишет, что получается что то типа такого:

Дмитрий
06.09.2023, 20:52

А как это реализовать на Drupal 9?

Добавить комментарий