Активировать термин таксономии в меню при просмотре узла - PullRequest
3 голосов
/ 19 октября 2011

Я создаю интернет-магазин в Drupal 7, используя Commerce, но я застрял на чем-то. Когда я просматриваю свой продуктовый узел, я хотел бы активировать 1 из терминов таксономии моего словаря под названием «категория». Поэтому при просмотре узла продукта, который представляет собой книгу, пункт меню «Интернет-магазин >> Книги» должен быть выделен как «активный».

Я пробовал menu_set_active_item , но это переопределит параметр $ _ GET ['q'] , который не годится, поскольку влияет на содержимое страницы. Когда я использую это, термин таксономии отображается вместо узла, поэтому это не то, что я хочу. Я только хочу активировать пункт в меню.

Я думаю, что путь можно использовать menu_set_active_trail или menu_tree_set_path , но я не могу заставить его работать. Может быть, кто-то может показать мне пример? Может быть, я использую только неправильный хук?

PS: я использую menu_block для рендеринга меню.

1 Ответ

2 голосов
/ 19 октября 2011

Хорошо, у меня все получилось.

Хитрость заключалась в том, что функция menu_tree_set_path () станет доступна в Drupal 7.9 ... Так как у меня было только 7.8 (последний официальный выпуск), она не работала. Я смог обновить до 7.x-dev, потому что я все еще разрабатывал, и это решило мою проблему.

Итак, как правильно сделать это с Drupal 7.9 и выше?

/*
 * Implements of hook_node_view()
 */
function MYMODULE_node_view($node, $view_mode, $langcode) {
  menu_tree_set_path('main-menu', 'taxonomy/term/1');
}

Для получения дополнительной информации, пожалуйста, посетите http://api.drupal.org/api/drupal/includes--menu.inc/function/menu_tree_set_path/7

...