xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Если на сайте используется модуль 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
Похожие записи

Комментарии RSS

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

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

не добавляет

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

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

<body class="html not-front logged-in no-sidebars page-node page-node- page-node-228 node-type-sale i18n-ru" >

не вижу классов текущего пути

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

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

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

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

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

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании