xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Модуль Menu Trails — установка активного пункта меню при просмотре материала

Опубликовано в

В друпале есть давняя проблема в системе меню — если меню состоит из ссылок на различные списки материалов (например Новости | Статьи | Предложения), то при просмотре одного из списка соответствующий пункт меню выделяется, а если из списка перейти в ноду, то выделение теряется:

Выделенный пункт меню при просмотре списка нод Не выделенный пункт меню при просмотре ноды из предыдущего списка

Если меню создано вручную или с помощью Taxonomy Menu и ведёт на выборку таксономии, то поможет модуль Taxonomy Menu Trails, а если пункты меню ссылаются например на представления Views, то поможет Menu Trails, который сейчас и рассмотрим.

После установки, модуль добавляет новый таб в разделе управления меню (admin/build/menu) — Trails, в котором располагаются все настройки:

Настройки модуля 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 Trails 6.x-1.1
Похожие записи

Комментарии RSS

Спасибо за статью.
Очень странно, но на странице термина соответствующий пункт меню не подсвечивается (класса 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 для самого нижнего и не делать активным родителя, даже если он тоже присутствует в ссылках на термины в ноде?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании