Как оформить блок меню в Drupal?

Это действительно должен быть основной вопрос, но я просто не понимаю его после нескольких часов поиска. Вопрос в том, как сделать блоки меню темы в Drupal 7?

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

  1. создать уникальный HTML для всех трех блоков, что означает изменение окружающей оболочки и <ul> и <li>, которые создают меню. Я хочу установить специальные классы и удалить все вещи, добавленные Drupal

  2. прикрепите разные классы к разным уровням внутри каждого блока. Один из блоков будет отображать два уровня меню, т.е. будет отображать подменю. Я хочу установить специальный класс для подменю...

Это кажется невозможным... :(

Заранее спасибо за помощь!!!!


person Joel    schedule 13.08.2012    source источник
comment
Точный вопрос на Drupal Answers: drupal. stackexchange.com/questions/7274/   -  person claws    schedule 24.02.2014


Ответы (3)


Тематика — хитрый зверь, который часто сильно различается в зависимости от того, что вам нужно делать. Даже с вашим очень подробным описанием я все еще могу сказать «это зависит», но вот пара шагов, которые могут помочь вам указать правильное направление.

Шаг 1. Используйте блок tpl.php, как это было предложено Caffeine Addict. Если вы не знаете, как назвать файл .tpl.php, я рекомендую модуль Разработчик темы. Он глючит, но вы можете использовать его для выбора определенного элемента и получения предложений по именованию файлов .tpl.php.

Выделение файлов шаблонов-кандидатов из темы разработки

Шаг 2. Используйте функцию темы/предварительной обработки в template.php для изменения предопределенных переменных и разметки. Обязательно проверьте theme_menu_tree и < href="http://api.drupal.org/api/drupal/includes!menu.inc/function/template_preprocess_menu_tree/7" rel="noreferrer">template_preprocess_menu_tree на api.drupal.org для запуска точки. Если вы используете модуль разработки, используйте dpm($variables); в каждом из них, чтобы увидеть, с чем вам нужно работать. с самого начала.

Надеюсь, это поможет! Я согласен с Caffeine Addict, когда он говорит, что superfish может быть альтернативой. Возможно, вам также следует проверить модуль блока меню, чтобы разбивать условные подразделы на отдельные блоки.

person davidneedham    schedule 15.08.2012

В дополнение к тому, что сказал davidneedham, чтобы изменить то, что Drupal добавил в ваше меню HTML-теги, вы можете переопределить их. Здесь добавлены классы:

<ul class="expanded">
  <li class="firstleaf">...<li>
  ...
</ul>

я не нашел способа удалить эти классы, но вы можете переопределить их в своем файле block--system--main_menu.tpl.php, например так:

li.expanded,
li.collapsed,
li.leaf {
  padding: 0 0 0 0;
  margin: 0;
}
ul.menu li {
  margin: 0 0 0 0;
}

а затем распечатайте содержимое меню:

<?php echo $content; ?>

Я новичок в Drupal, надеюсь, мой пост поможет вам! :)

person simin    schedule 06.01.2013

Я бы посоветовал начать с установки темы Zen и следовать инструкциям внутри темы, чтобы настроить начальную подтему. Здесь есть вся информация, необходимая для изучения темы в drupal и даже для того, как добавить свои собственные таблицы стилей и т. д.

Это позволит вам приступить к редактированию шаблонов для блоков меню и установить свои собственные html-обертки и классы.

Для установки дополнительных классов в блоках я бы использовал этот модуль: http://drupal.org/project/block_class

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

person Kevin Andrews    schedule 13.08.2012
comment
Привет, я знаю тематику... просто блоки меню, похоже, не соответствуют стандартным файлам .tpl.php... Я хочу знать, как изменить HTML, который выводит блок меню... - person Joel; 13.08.2012
comment
Хорошо, как насчет того, чтобы попробовать шаблон переопределения блока региона? например блок--[имя региона].tpl.php - person Kevin Andrews; 13.08.2012
comment
К сожалению, блок tpl позволяет мне создавать HTML только для weapper, так что решается одна проблема. У меня все еще есть проблема с доступом к HTML для UL LI, который создает меню. Здесь я хочу каким-то образом пройтись по меню и добавить другой HTML в зависимости от того, на каком уровне я нахожусь в иерархии... - person Joel; 13.08.2012
comment
Попробуйте установить модуль superfish, который даст вам множество вариантов стиля при настройке блока меню superfish, включая нечетные и четные классы и несколько целевых точек стиля. В нем также есть раздел оберток html, который должен решить вашу проблему... - person Kevin Andrews; 14.08.2012