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

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

09.10.2011 05:23:17 Просмотров 53 Источник

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

У вопроса есть решение - Посмотреть?

Ответы - Добавление класса в " тело" / Adding a class to "body"

Является ответом!
Clive

09.10.2011 05:35:58

В template.php-файл использует preprocess_html

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

https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment9364328_7700886
Как он знает, чтобы добавить к телу?
https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment9364344_7700886
В html есть только один элементhtml.tpl.php, который имеет любые добавленные классы, которые являются элементом <body>; функция предварительной обработки выше предназначена для этого файла, поэтому любые добавленные классы будут добавлены только к элементу <body>.
https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment9364355_7700886
Кстати, если вы еще не получили его, установите модуль Devel и используйте функцию dpmдля любой переменной в вашем коде; он будет отображать хорошее представление классов и массивов, которые помещаются в обычное сообщение area...it это абсолютная необходимость для отладки. Вы можете использовать его в приведенной выше функции, например, так: dpm($vars);и он распечатает массив на экран, чтобы вы могли его проверить
https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment22926701_7700886
Я пробовал это (очистил кэш, проверил орфографию и т. д.), И это не сработало. Есть ли случай, что на него влияет другой модуль? Я использую контекст и тему omega, кстати.
https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment26040163_7700886
@nikan, вероятно, немного поздно сейчас, но для Omega вы хотите реализовать mytheme_alpha_preprocess_htmlи добавить класс в массив $vars['attributes_array']['class']
https://stackoverflow.com/questions/7700838/adding-a-class-to-body/7700886#comment32134623_7700886
@Клайв спасибо за Омега-специфический совет, помог мне выяснить, почему этот ответ не работает для моего сайта.
Pierre Buyle

31.10.2011 03:01:47

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

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

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

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

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

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

Hannes Kirsman

30.04.2013 03:47:45

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

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

16.05.2013 06:52:35

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

jaskho

25.06.2013 04:18:36

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

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

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

https://stackoverflow.com/questions/7700838/adding-a-class-to-body/17287214#comment26040224_17287214
Не совсем - attributes_array определяется конкретно Омега тему. Для "нормальных" тем это будет classes_array
batigolix

23.09.2014 06:00:17

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

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

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

Theme HTML option in Context UI

Thakur Sanjay Singh Chauhan

31.03.2017 01:49:46

Модуль Common Body Class предоставляет пользователям возможность добавлять классы на любую страницу через интерфейс an. Интерфейс имеет опции для выбора нескольких ролей пользователей, а также страниц, на которых можно отобразить класс.

Example

Jaseer Kinangattil

27.11.2019 08:43:27

Для установки Drupal 7 http://drupal.org/project/body_class . это поможет вам добавить отдельные классы для каждого узла в теге body

Закрыть X