Как добавить классы в тег BODY динамически на основе пути /глубины страницы?

Как добавить классы в тег body динамически, например, этот пример ниже?

-Home
-Cities      Â
--Melbourne     <body class="melbourne">
--- Тематические парки Â Â Â Â <body class="melbourne theme_parks">
--- Рестораны Â Â Â Â <body class="melbourne restaurants">

Нью-Йорк <body class="new_york">
--- Тематические парки Â Â Â Â <body class="new_york theme_parks">
--- Рестораны Â Â Â Â <body class="new_york restaurants">
-Contact Us      <body class="contact_us">

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

22 голоса | спросил kyooriouskoala 3 Maypm12 2012, 14:29:56

4 ответа


36

Чтобы изложить ответ Нихил Мохана, вы можете реализовать template_preprocess_html() в файле template.php вашей темы. Прочитайте документацию на Переопределение допустимого выхода , чтобы понять основы происходящего здесь.

В рамках этой функции у вас есть доступ к переменной $vars['classes_array'], которая содержит список классов, которые будут применяться к HTML <body> на странице.

К сожалению, информация о расположении текущей страницы в меню недоступна. Вы можете использовать menu_get_item() и затем menu_get_ancestors() , чтобы получить это информации, но это большая вычислительная мощность для чего-то, с чем мы, вероятно, сможем работать с подходом simpiler.

Предполагая, что вы используете модуль pathauto для автоматического создания семантических путей для ваших страниц контента на основе пути к меню (т. е. ваша страница тематических парков Мельбурна будет иметь путь «melbourne /theme_parks»), вы можете использовать путь страницы для создания классы, которые вы ищете:

function THEMENAME_preprocess_html(&$vars) {
  $path = drupal_get_path_alias();
  $aliases = explode('/', $path);

  foreach($aliases as $alias) {
    $vars['classes_array'][] = drupal_clean_css_identifier($alias);
  } 
}

Вот и все. Теперь Drupal рассмотрит псевдоним пути текущей страницы и добавит класс в тег <body> для каждого фрагмента псевдонима пути.

ответил sheena_d 3 Maypm12 2012, 18:13:14
1

Вы можете использовать template_preprocess_html , которые содержат переменные Preprocess для html.tpl.php

См. также html.tpl.php

  

Реализация темы по умолчанию для отображения базовой структуры html одной страницы Drupal

ответил niksmac 3 Maypm12 2012, 14:36:14
1

Вот модуль для добавления классов в тег body, основанный на роли или страницах.

Обычный класс тела

ответил Thakur Sanjay Singh Chauhan 27 Jpm1000000pmFri, 27 Jan 2017 15:03:39 +030017 2017, 15:03:39
0

Создал модуль Drupal Body Classes , чтобы помочь в этом. Не стесняйтесь создавать проблемы, чтобы добавить дополнительные точки интеграции тела.

ответил RobLoach 11 FebruaryEurope/MoscowbWed, 11 Feb 2015 23:53:25 +0300000000pmWed, 11 Feb 2015 23:53:25 +030015 2015, 23:53:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132