Мультиуровневое горизонтальное меню

Главные вкладки

Аватар пользователя makkon makkon 12 апреля 2011 в 22:43

Задумался над сабжем. Есть желание сделать из примари меню мультиуровневое (глубиной 2) и когда выбираем какой-то элемент, чуть ниже появляются дочерние пункты, но не просто как выпадающий список, а просто как развернутое, но в горизонтальном исполнении. Схема примерно такая:

Елемент1 Елемент2 .... ЕлементN
Дочернее1Елемента2 Дочернее2Елемента2... Дочернее3Элемента2

То есть сами пункты растягиваются по ширине, если элемент активен, то высвечивается ниже второе меню, подобное первому (растянутое по ширине, с переносом строк). Вроде задача тривиальна и ее можно решить, например, привязкой пунктов к другим, созданным руками менюшкам, которые просто расположить css где надо, но это как-то некошерно.

Есть ли решения? Модули? Хаки?

Комментарии

Аватар пользователя VasyOK VasyOK 13 апреля 2011 в 0:29

Примерная схема работы такая:
Предусматриваем в теме оформления 2 горизонтальных меню, стоящих одно под другим. Подойдет тема mix and match

Ну а дальше, например модуль menu block.
http://drupal.org/project/menu_block

Подробнее сказать увы не могу.

Аватар пользователя makkon makkon 13 апреля 2011 в 0:45

VasyOK, к сожалению, данная тема имеет выпадающие менюшки. Ставить пока не стал, но на глаз по списку релейтед модулей это сборная солянка фьюжн кора, а там опционально ничего такого нема. Лопатить чужое - лучше свое написать уж тогда=)
А вот за menu_block спасибо, похоже на правду, будем изучать.

Суперфиш по сути тоже самое. Хотелось бы более узкое решение, нежели накатывание "офиса для редактирования текстового файла"
К тому же что тема, что суперфиш - это просто мультилевел меню выпадающее. там когда жмешь на дочерний пункт - активным не остается вроде все дочерние элементы (теряется тем самым наглядность)

Аватар пользователя VasyOK VasyOK 13 апреля 2011 в 1:07

Выпадающее меню в данной теме по умолчанию не работает. Можно там не ставить Primary links в теме оформления, а просто создать меню и указать для него, что пункты располагаются вертикально.

Аватар пользователя makkon makkon 15 апреля 2011 в 12:09

вот технический вопрос - как убрать сепараторы горизонтального меню |, которое добавляется средствами fusion core (Single line menu with separators в настройках блока)
и в принципе тема будет исчерпана

Аватар пользователя VasyOK VasyOK 17 апреля 2011 в 1:57

Эти сепараторы там заданы, как черточки от ячейки таблицы
Подрубите файл
Fusion\fusion_core\css\style.css

.fusion-inline-menu .inner ul.menu li {
  /*border-right-style: solid;
  border-right-width: 1px; вот так убираем черточку*/

  display: inline;
  margin: 0;
  padding: 0;
  white-space: nowrap;
}
Аватар пользователя makkon makkon 17 апреля 2011 в 19:18

Итак, с помощью VasyOK, было найдено решение. Для того, чтобы сделать связанное горизонтальное меню с дочерними пунктами, располагающимися под родительским меню как аналогичное горизонтальное меню, нужно
1) Скачать модуль menu block
2) Скачать тему, основанную на superfish (fusion как база, acquia marina, mix and match итд)
3) Создать нужное меню, в блоках создать блок-меню, с помощью модуля из п1, указав уровень 1 для родительского, соответственно, добавить в меню родительские и дочерние элементы
4) Создать еще одно меню с уровнем 2, указав основоположником меню из п3
5) Расположить блок-меню в блоках где надо на сайте
6) Чтобы меню были горизонтальными, нужно в свойствах блока выбрать Single line menu with separators
7) При желании можно убрать сепаратор между пунктами меню:

.fusion-inline-menu .inner ul.menu li {
  /*border-right-style: solid;
  border-right-width: 1px; вот так убираем черточку*/
  display: inline;
  margin: 0;
  padding: 0;
  white-space: nowrap;
}

Dirol Темизировать под себя css

Пометьте как [РЕШЕНО]

Аватар пользователя Герман Клюшин Герман Клюшин 8 июля 2011 в 13:55

А без модуля неужели нельзя?
В частности само меню при создании отображается в админке, и там уже видно какой уровень у каждого пункта. Значит все эти возможности есть в друпале по умолчанию без всяких модулей. Надо только найти!

Аватар пользователя guitmann guitmann 5 декабря 2011 в 15:30

сделал, как описывал makkon, но столкнулся с неприятностью: у меня меню 3-х уровневое, и когда активен самый младший пункт, то старшие 2 пункта не активны (class active). Да и вобщем то было бы 2 уровневое было бы так же...

Аватар пользователя VasyOK VasyOK 5 декабря 2011 в 15:45

А Стэн вообще прав: в Суперфиш это встроенная опция.
Правда для того чтобы меню оставалось открытым при переходе по пункту нужно с бубном малость поплясать.