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

02.12.2010

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

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

Если меню создано вручную или с помощью 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
Похожие записи

Комментарии

Алексей
25.12.2010, 20:55

Спасибо за статью.
Очень странно, но на странице термина соответствующий пункт меню не подсвечивается (класса active-trail нет).

В моем случае есть пункт меню "Журнал", а также создан словарь таксономии "Рубрики". Задача - сделать пункт меню активным, когда мы на главной странице журнала, при переходе по ссылкам на статьи журнала и кликая по рубрикам журнала. Главная страница журнала сделана вьюсом. При клике по ссылке "Журнал", а также по нодам - все хорошо, а вот когда уходим на страничку с термином аля taxonomy/term/n, где n - номер термина, родительский пункт ("Журнал") не подсвечивается, хотя в Categories для каждого термина стоит родительский элемент "Журнал".

Не сталкивались с подобном дилеммой?

Алексей
25.12.2010, 21:06

Вы наверное не поняли. Мне надо, чтобы пункт меню подсвечивался когда я нахожусь на странице таксономии, при этом сам пункт никоим боком к таксономии не относится.

Есть /journal

Надо, чтобы на странице taxonomy/term/1 например, ссылка на /journal подсвечивалась и по логике должна, ведь плагин это позволяет делать, но... наверно баг.

Петров Николай
21.01.2011, 06:58

А если меню формируется с помощью views, и содержит список нод (сортировка по особому критерию) - есть какой-нибудь быстрый способ?

меню с помощью Views не бывает :) бывает список ссылок с помощью Views, поэтому тут только собственный код

Гость
29.09.2011, 15:25

добрый день! А если у меня есть 8 представлений вайвс в виде страниц и мне нужно при их открытии чтобы подсвечивался нужный пункт меню (не по отдельности для каждой, а один определенный).

Главная | Индексы | Контакты

Индекс 1
Индекс 2
...
Индекс 8

все эти индексы в виде страниц представлений Вайвс. Как можно их прилепить к пункту меню Индексы?

прочитать пост, поставить модуль, настроить модуль

Гость
29.09.2011, 15:46

В настройках меню трейлс можно привязывать только определенные типы нодов, но не страницы Views.

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

Гость
29.09.2011, 16:02

Это понятно =) Индексы - это обычная страница с ссылками на страницы, которые сделаны с помощью Views

то есть Индекс 1 - это другая страница Вайс. Индекс 2 - еще одна и т.д. И естественно при их посещении пункт становится уже неактивным.

как всё сложно... либо добавьте подпункты к "Индексы" либо программно устанавливайте активный пункт

С Наступающим 2015 !
А можно поинтересоваться: при любом раскладе Taxonomy Menu Trails добавляет active-trail и для родительского и для дочернего, что делает невозможным выделить только 1 дочерний (не все пункты имеют дочерние термины). Это потому что нода относится и к родителю и к дочернему.
Подскажите, как именно задать класс active для самого нижнего и не делать активным родителя, даже если он тоже присутствует в ссылках на термины в ноде?

Добавить комментарий