Index: menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.375 diff -u -r1.375 menu.inc --- menu.inc 14 Jan 2010 13:45:33 -0000 1.375 +++ menu.inc 24 Jan 2010 22:47:40 -0000 @@ -1055,6 +1055,30 @@ } /** + * Set a page's menu parent dynamically. + * @param $path + * system path - must refer to an existing menu item + * @return + * the last path that was set + */ +function menu_set_dynamic_parent($path = null) { + static $parent_path; + if($path) { + $parent_path = $path; + } + return $parent_path; +} + +/** + * Return a dynamic parent set for a page. + * @return + * a system path. + */ +function menu_get_dynamic_parent() { + return menu_set_dynamic_parent(); +} + +/** * Get the data structure representing a named menu tree, based on the current page. * * The tree order is maintained by storing each parent in an individual @@ -1103,6 +1127,15 @@ if (drupal_is_front_page()) { $args[] = ''; } + + // check for dynamic parent paths + if($dynamic_parent = menu_get_dynamic_parent()) { + $args[] = $dynamic_parent; + } + + // Allow modules to alter the path in $args so they can dynamically trail to a parent. + drupal_alter('menu_trail', $args); + $parents = db_select('menu_links') ->fields('menu_links', array( 'p1',