diff --git a/src/Tests/TokenMenuTest.php b/src/Tests/TokenMenuTest.php index 850cb71..5ee280d 100644 --- a/src/Tests/TokenMenuTest.php +++ b/src/Tests/TokenMenuTest.php @@ -276,7 +276,11 @@ class TokenMenuTest extends TokenTestBase { ]); $menu_ui_link2->save(); - $this->assertTokens('node', ['node' => $node], ['menu-link' => 'menu link provided by node']); + $tokens = [ + 'menu-link' => 'menu link provided by node', + 'menu-link:title' => 'menu link provided by node', + ]; + $this->assertTokens('node', ['node' => $node], $tokens); } /** diff --git a/token.tokens.inc b/token.tokens.inc index 583dad1..41016cf 100644 --- a/token.tokens.inc +++ b/token.tokens.inc @@ -1117,7 +1117,15 @@ function menu_ui_tokens($type, $tokens, array $data = array(), array $options = else { $url = $node->urlInfo(); if ($links = $menu_link_manager->loadLinksByRoute($url->getRouteName(), $url->getRouteParameters())) { - $link = reset($links); + // Get the menu ui defaults so we can determine what menu was + // selected for this node. + $defaults = menu_ui_get_menu_link_defaults($node); + if (isset($defaults['id']) && isset($links[$defaults['id']])) { + $link = $links[$defaults['id']]; + } + else { + $link = reset($links); + } $replacements[$original] = $link->getTitle(); } } @@ -1133,19 +1141,16 @@ function menu_ui_tokens($type, $tokens, array $data = array(), array $options = else { $url = $node->urlInfo(); - // Get the menu ui defaults so we can determine what menu was select for this node. - $defaults = menu_ui_get_menu_link_defaults($node); - if ($defaults['id']) { - $default = $defaults['id']; - } - if ($links = $menu_link_manager->loadLinksByRoute($url->getRouteName(), $url->getRouteParameters())) { - foreach ($links as $key => $value) { - if (isset($default) && $default === $key) { - $link = $links[$key]; - } + // Get the menu ui defaults so we can determine what menu was + // selected for this node. + $defaults = menu_ui_get_menu_link_defaults($node); + if (isset($defaults['id']) && isset($links[$defaults['id']])) { + $link = $links[$defaults['id']]; + } + else { + $link = reset($links); } - $link = isset($link) ? $link : reset($links); $replacements += \Drupal::token()->generate('menu-link', $menu_tokens, array('menu-link' => $link), $options, $bubbleable_metadata); } }