[drupal] Меню с подсветкой активных primary при выборе из secondary

camomille аватар
2

Здравствуйте, передо мной стоит следующая проблема:
Необходимо сделать так, чтобы при выборе пункта из основного меню, если у него есть подменю с подпунктами, при выборе одного из подпунктов, выделение на основном пункте не сбрасывалось, типа как на сайте apple.com, то есть таким образом мы будем видеть, где мы находимся, в каком разделе основного меню, если нажали на один из пунктов подменю! Помогите, пожалуйста, решить эту задачу, кто сталкивался, СПАСИБО.

Robotti аватар
83

А что за CMS то у Вас?

Galiev.ru аватар
151

Я сталкивался с этим в Wordpress. Там текущий пункт меню и родительский пункт отмечаются в коде классом (current_page_item и current_page_parent), соответсвенно в CSS этому классу приваиваем характеристики и получаем выделенный пункт меню в обоих случаях.

camomille аватар
2

Ой, извините... DRUPAL

camomille аватар
2

Про current можно поподробнее... интуитивно кажется что это то, что нужно, но на Drupal пожалуйста!

Robotti аватар
83

Напишите HTML код, который у вас получается при полном развороте.
Тогда будем думать над стилями.

camomille аватар
2

Вот код который получается:

<div id="primary">"
   <ul class="links" id="navlist">
         <li class="menu-262 first"><a href="/about" title="О компании"><span>О компании</span></a></li>
         <li class="menu-268 active-trail active"><a href="/computers" title="Продажа компьютеров" class="active"><span>Компьютеры</span></a></li>
          <li class="menu-276 last"><a href="/contact" title="Контакты"><span>Контакты</span></a>
          </li>
   </ul>
</div>
<div id="header-region">
    <div id="block-menu-secondary-links" class="block block-menu">
      <ul class="menu">
           <li class="leaf first dhtml-menu "><a href="/writes" id="dhtml_menu-522">Статьи</a>
           </li>
           <li class="leaf last dhtml-menu "><a href="/computers/prices" title="Цены на технику" id="dhtml_menu-305">Цены на технику</a>
           </li>
       </ul> 
     </div>
</div>

Дима аватар
405

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

Я бы проверил, прописано ли для класса active-trail то же, что для просто #primary active. active-trail по логике должен оставаться на первом уровне, даже когда загружена страница второго.

camomille аватар
2

Данный код скопирован специально со страницы, где активный пункт

<li class="menu-268 active-trail active"><a href="/computers" title="Продажа компьютеров" class="active"><span>Компьютеры</span></a></li>

Когда он активен, у него разворачивается доп меню, которое, вот оно:

<div id="block-menu-secondary-links" class="block block-menu">
      <ul class="menu">
           <li class="leaf first dhtml-menu "><a href="/writes" id="dhtml_menu-522">Статьи</a>
           </li>
           <li class="leaf last dhtml-menu "><a href="/computers/prices" title="Цены на технику" id="dhtml_menu-305">Цены на технику</a>
           </li>
       </ul> 
     </div>

Мне нужно чтобы при заходе на какой-то из пунктов подменю, активный пункт из primary (в данном коде это "компьютеры") так же подсвечивался, как на странице с которой скопирован код. То есть если зайти например в "Статьи" подсветился и Статьи пункт, как активный, но при этом и подсвечивался "Компьютеры", показывая пользователю, что он находится в разделе компьютеры в статьях, а не просто в статьях.
Дело в том, что на сайте есть повторяющиеся пункты доп меню, и вообще в принципе, для удобства пользователя, логичнее сделать такое меню, которое будет показывать, что мы находимся в ветви одной из главных пунктов...

Как такое осуществить, не подскажете?

camomille аватар
2

Вот меню главное с главной страницы
О компании | Компьютеры | Контакты

Вот мы зашли в "Компьютеры":
О компании | Компьютеры | Контакты
Цены на технику Статьи

Если сейчас мы зайдем в "Статьи" или "Цены на технику" будет так:
О компании | Компьютеры | Контакты
Цены на технику Статьи

А мне надо так:
О компании | Компьютеры | Контакты
Цены на технику Статьи

Дима аватар
405

"camomille" писал(а):
Как такое осуществить, не подскажете?

Как раз про это написал в предыдущем ответе.

Наверное проще будет, если вы прикрепите сюда style.css, а кто-нибудь его поправит и вам вернет. Например, я готов попробовать.

camomille аватар
2

Хорошо, спасибо, Дима... давайте попробуем...

Прикрепленный файлРазмер
style.txt 9.15 кб
Дима аватар
405

В трех местах дописал строчки про active-trail, попробуйте.

Прикрепленный файлРазмер
style.txt 9.23 кб
camomille аватар
2

Не получилось, все осталось по прежнему :(

Дима аватар
405

Если вы находитесь на странице "Цены на технику", то в этот момент у верхнего уровня "Компьютеры" есть класс active-trail?

camomille аватар
2

Дима, спасибо за помощь. Я все решила путем переверстки полностью меню, вывода его по другому, и все заработало!
День мучений и готово :)

camomille аватар
2

Дима, а вы случайно не знаете как в Drupal сделать меню -> подменю -> подподменю, когда есть только то, что есть сейчас после переверстки - меню и подменю... primary и secondary... а третью вложенность как сделать?

Дима аватар
405

Если у вас есть третий уровень, может быть стоит сделать раскрывающееся меню? Например вот этим модулем http://drupal.org/project/nice_menus

А вообще третий уровень в стандартной поставке, насколько я знаю, не предусмотрен. Хотя при желании можно дописать.

camomille аватар
2

Дима, здравствуйте!
Если интересно, то посмотрите, что получилось из тогдашних мучений в изучении друпала и тд)))
www.aurabi.com
Еще раз спасибо за помощь!

Дима аватар
405

Прекрасный кот :)