diff --git a/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php b/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php index 5c7e12f..d0830a3 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Menu/BreadcrumbTest.php @@ -407,7 +407,10 @@ class BreadcrumbTest extends MenuTestBase { $trail += array( 'user/' . $this->web_user->uid => $this->web_user->name, ); - $this->assertBreadcrumb('user/' . $this->web_user->uid . '/edit', $trail, $this->web_user->name); + $tree = array( + 'user' => t('My account'), + ); + $this->assertBreadcrumb('user/' . $this->web_user->uid . '/edit', $trail, $this->web_user->name, $tree); // Add a Navigation menu links for 'user' and $this->admin_user. // Although it may be faster to manage these links via low-level API diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 2250110..d9e7b1d 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -1623,12 +1623,6 @@ function user_menu() { 'page arguments' => array(1), 'access callback' => 'user_view_access', 'access arguments' => array(1), - // By assigning a different menu name, this item (and all registered child - // paths) are no longer considered as children of 'user'. When accessing the - // user account pages, the preferred menu link that is used to build the - // active trail (breadcrumb) will be found in this menu (unless there is - // more specific link), so the link to 'user' will not be in the breadcrumb. - 'menu_name' => 'navigation', ); $items['user/%user/view'] = array( @@ -1729,6 +1723,17 @@ function user_menu_link_alter(&$link) { } /** + * Implements hook_menu_breadcrumb_alter(). + */ +function user_menu_breadcrumb_alter(&$active_trail, $item) { + // Remove "My account" from the breadcrumb when $item is descendant-or-self + // of system path user/%. + if (isset($active_trail[1]['module']) && $active_trail[1]['module'] == 'system' && $active_trail[1]['link_path'] == 'user' && strpos($item['path'], 'user/%') === 0) { + array_splice($active_trail, 1, 1); + } +} + +/** * Implements hook_translated_menu_link_alter(). */ function user_translated_menu_link_alter(&$link) {