--- class.tslib_menu_ORG.php Wed Nov 18 10:02:24 2009 +++ class.tslib_menu.php Thu Nov 19 10:58:56 2009 @@ -2888,10 +2888,6 @@ $pid = $mount_info['mount_pid']; } - // Set "&MP=" var: - $MP_var = implode(',',$MP_array); - $MP_params = $MP_var ? '&MP='.rawurlencode($MP_var) : ''; - // UIDs to ban: $banUidArray = $this->getBannedUids(); @@ -2904,11 +2900,22 @@ $menuItems = is_array($menuItemArray) ? $menuItemArray : $this->sys_page->getMenu($pid); foreach($menuItems as $uid => $data) { + + // $data['_MP_PARAM'] contains MP param for overlay mount points (MPs with "substitute this page" set) + // if present: add param to copy of MP array (copy used for that submenu branch only) + $MP_array_sub = $MP_array; + if(array_key_exists('_MP_PARAM', $data) && $data['_MP_PARAM']) { + $MP_array_sub[] = $data['_MP_PARAM']; + } + // Set "&MP=" var: + $MP_var = implode(',',$MP_array_sub); + $MP_params = $MP_var ? '&MP='.rawurlencode($MP_var) : ''; + $spacer = (t3lib_div::inList($this->spacerIDList,$data['doktype'])?1:0); // if item is a spacer, $spacer is set if ($this->mconf['SPC'] || !$spacer) { // If the spacer-function is not enabled, spacers will not enter the $menuArr if (!t3lib_div::inList($this->doktypeExcludeList,$data['doktype']) && (!$data['nav_hide'] || $this->conf['includeNotInMenu']) && !t3lib_div::inArray($banUidArray,$uid)) { // Page may not be 'not_in_menu' or 'Backend User Section' + not in banned uid's if ($count<$levels) { - $addLines = $this->generate_level($levels,$count+1,$data['uid'],'',$MP_array); + $addLines = $this->generate_level($levels,$count+1,$data['uid'],'',$MP_array_sub); } else { $addLines = ''; }