diff --git a/menu_block.services.yml b/menu_block.services.yml index 983c40a..e0f69d2 100644 --- a/menu_block.services.yml +++ b/menu_block.services.yml @@ -4,3 +4,6 @@ services: arguments: ['@current_route_match'] tags: - { name: event_subscriber } + menu_block.tree_manipulators: + class: Drupal\menu_block\MenuLinkTreeManipulators + arguments: ['@config.factory'] diff --git a/src/MenuLinkTreeManipulators.php b/src/MenuLinkTreeManipulators.php new file mode 100644 index 0000000..5d8f0eb --- /dev/null +++ b/src/MenuLinkTreeManipulators.php @@ -0,0 +1,40 @@ +inActiveTrail) { + $activeTree = [$treeElement]; + break; + } + } + + return $activeTree; + } + +} diff --git a/src/Plugin/Block/MenuBlock.php b/src/Plugin/Block/MenuBlock.php index fab522a..a6244dc 100644 --- a/src/Plugin/Block/MenuBlock.php +++ b/src/Plugin/Block/MenuBlock.php @@ -161,6 +161,9 @@ class MenuBlock extends SystemMenuBlock { array('callable' => 'menu.default_tree_manipulators:checkAccess'), array('callable' => 'menu.default_tree_manipulators:generateIndexAndSort'), ); + if ($level > 1) { + $manipulators[] = array('callable' => 'menu_block.tree_manipulators:pruneActiveTree'); + } $tree = $this->menuTree->transform($tree, $manipulators); $build = $this->menuTree->build($tree);