В друпале есть давняя проблема в системе меню — если меню состоит из ссылок на различные списки материалов (например Новости | Статьи | Предложения), то при просмотре одного из списка соответствующий пункт меню выделяется, а если из списка перейти в ноду, то выделение теряется:
Если меню создано вручную или с помощью Taxonomy Menu и ведёт на выборку таксономии, то поможет модуль Taxonomy Menu Trails, а если пункты меню ссылаются например на представления Views, то поможет Menu Trails, который сейчас и рассмотрим.
После установки, модуль добавляет новый таб в разделе управления меню (admin/build/menu) — Trails, в котором располагаются все настройки:
Здесь нужно указать:
Menutrails Menu — меню, в котором нужно устанавливать активный пункт.
Set breadcrumbs? — если отмечено, то хлебные крошки будут заполнены на основе активного пункта меню.
Типы материалов — пункты меню, которые будут выделятся при просмотре соответствующих типов материала. Т.е мы как бы говорим модулю — при просмотре материала Новость, выделять пункт меню Новости.
Categories: ... — пункты меню, которые будут выделятся при просмотре материала с соответствующим термином. Здесь мы говорим модулю, что например при просмотре материала с присвоенным термином Мировые, выделять пункт меню Мировые новости.
Важное замечание
Модуль добавлять класс active-trail
только для соответствующего элемента <li>
, класс active
для ссылки в нём не присваивается. Стандартная тема Garland не умеет подсвечивать такие ссылки, и чтобы это исправить, в css файл нужно добавить что-нибудь типа:
li.active-trail > a {
font-weight: bold;
}
Для Drupal 7 можно воспользоваться похожим модулем — Menu position.
- Модуль Menu token — поддержка токенов в пунктах меню
- Модуль Nice Menus — кроссбраузерное выпадающее меню
- Модуль Menu position — установка активного пункта меню в зависимости от адреса
- Модуль DHTML Menu — раскрывающиеся меню без перезагрузки страницы
- Модуль Taxonomy Menu Trails — установка активного пункта меню при просмотре нод, на основе таксономии
Комментарии
Спасибо за статью.
Очень странно, но на странице термина соответствующий пункт меню не подсвечивается (класса active-trail нет).
В моем случае есть пункт меню "Журнал", а также создан словарь таксономии "Рубрики". Задача - сделать пункт меню активным, когда мы на главной странице журнала, при переходе по ссылкам на статьи журнала и кликая по рубрикам журнала. Главная страница журнала сделана вьюсом. При клике по ссылке "Журнал", а также по нодам - все хорошо, а вот когда уходим на страничку с термином аля taxonomy/term/n, где n - номер термина, родительский пункт ("Журнал") не подсвечивается, хотя в Categories для каждого термина стоит родительский элемент "Журнал".
Не сталкивались с подобном дилеммой?
попробуйте Taxonomy Menu Trails
Вы наверное не поняли. Мне надо, чтобы пункт меню подсвечивался когда я нахожусь на странице таксономии, при этом сам пункт никоим боком к таксономии не относится.
Есть /journal
Надо, чтобы на странице taxonomy/term/1 например, ссылка на /journal подсвечивалась и по логике должна, ведь плагин это позволяет делать, но... наверно баг.
тогда похоже единственный путь это установка активного пункта программно
А если меню формируется с помощью views, и содержит список нод (сортировка по особому критерию) - есть какой-нибудь быстрый способ?
меню с помощью Views не бывает :) бывает список ссылок с помощью Views, поэтому тут только собственный код
добрый день! А если у меня есть 8 представлений вайвс в виде страниц и мне нужно при их открытии чтобы подсвечивался нужный пункт меню (не по отдельности для каждой, а один определенный).
Главная | Индексы | Контакты
Индекс 1
Индекс 2
...
Индекс 8
все эти индексы в виде страниц представлений Вайвс. Как можно их прилепить к пункту меню Индексы?
прочитать пост, поставить модуль, настроить модуль
В настройках меню трейлс можно привязывать только определенные типы нодов, но не страницы Views.
если открыть пункт "Индексы" то он и так будет активным без всяких модулей
Это понятно =) Индексы - это обычная страница с ссылками на страницы, которые сделаны с помощью Views
то есть Индекс 1 - это другая страница Вайс. Индекс 2 - еще одна и т.д. И естественно при их посещении пункт становится уже неактивным.
как всё сложно... либо добавьте подпункты к "Индексы" либо программно устанавливайте активный пункт
спасибо, вот это помогло.
С Наступающим 2015 !
А можно поинтересоваться: при любом раскладе Taxonomy Menu Trails добавляет active-trail и для родительского и для дочернего, что делает невозможным выделить только 1 дочерний (не все пункты имеют дочерние термины). Это потому что нода относится и к родителю и к дочернему.
Подскажите, как именно задать класс active для самого нижнего и не делать активным родителя, даже если он тоже присутствует в ссылках на термины в ноде?
Добавить комментарий