Добавление класса в " body"

Как я могу изменить или предварительно обработать <body> тег для добавления тела класса? Я не хочу создавать весь html.ТПЛ.php просто добавить класс.

7 ответов


В использовать preprocess_html припев:

function mytheme_preprocess_html(&$vars) {
  $vars['classes_array'][] = 'new-class';
}

не забудьте очистить кэши, как только вы внедрили крюк, или Drupal не заберет его.


документация для html.ТПЛ.шаблон php документы $classes переменные строка классов, которые можно использовать для контекстного стиля через CSS.. Если вы посмотрите на код шаблона, эта переменная используется в атрибутах класса производимого элемента body:

<body class="<?php print $classes; ?>" <?php print $attributes;?>>

на $classes переменные фактически уже установлены template_process() для любого файла шаблона и сборки из содержимого $classes_array переменная.

Итак, чтобы добавить класс в тело вашей страницы, вы должны добавить этот класс в $classes_array значение из вашей темы (или модуля) реализация с hook_preprocess_html():

function THEME_preprocess_html(&$variables) {
  $variables['classes_array'][] = 'new-class';
}

так как это базовый определенный шаблон и функция процесса, любая благонравная тема должна повторно использовать те же переменные.


мне пришлось использовать разные ключи массива в одном крючке, чтобы заставить его работать:

function THEME_preprocess_html(&$vars) {
  $vars['attributes_array']['class'][] = 'foo2';
}

на контекст модуль позволяет добавить класс к тегу body.

Это может быть полезно, если вам нужно добавить класс при определенных условиях.

вы найдете эту опцию в разделе реакция "тема HTML":

Theme HTML option in Context UI


ответ, по-видимому, зависит от контекста. Вот что я нашел методом проб и ошибок:

Если ваш hook_preprocess_html () находится в модуль, используйте $vars ['classes_array'] [].

Если это тема, используйте $vars ['attributes_array'] ['class'] [].


Общий Класс Тела модуль предоставляет пользователям возможность добавлять классы на любую страницу через интерфейс an. Интерфейс имеет опции для выбора нескольких ролей пользователей, а также страницы, где класс может быть оказана.

Example


я применил эту технику на сайте, что кто-то другой причине. Сначала он не работал, но затем копнул глубже и обнаружил, что переменная $classes не выводится в файле tpl. Так что если это не работает, проверьте это.