1. Summary of the issue
SharePoint 2010 provides a very nice feature that you could click the navigation button to identify the location of the site and you could navigate the hierarchy. However, many sites migrated from 2007 navigation up is empty. You could see the following screenshot that “Navigation Up” is empty for the site.
2. What migrated 2007 site pages that may have such issue
We found navigate up issue for all the publishing pages (welcome page with webpart zones) created from collaboration portal template in 2007. Collaboration portal has been deprecated in 2010 and 2010 team sites with publishing feature enabled don’t have welcome page with webpart zones template option while creating publishing page. You could verify the site that will have navigate up issue from the page under ../Pages/Forms/AllItems.aspx/Default.aspx. If the site is created from collaboration portal and the default page is “Welcome page with Web Part zones”, the site will have “Navaigation Up” issue.
See the screenshot the Page Layout is “Welcome page with Web Part zones” for the default page. Please note this is the publishing pages under Pages folder NOT the SitePages under SItePages.
The possible pages that may have such issue are:
3. Root cause of the issues
The reason that the navigate up control is not displaying the correct navigation hierarchy on the pages is the Master Page and the Page Layout page associated to the page contain a PlaceHolderTitleBreadcrumb.
In the master page the PlaceHolderTitelBreadcrumb is defined as follows. Notice the .Net control that is added in the place holder (ListSiteMapPath). This is the control responsible for rendering the navigation hierarchy in Navigate Up.
Please note 2010 site page has changed to version 4 that is different from 2007 v3. When the version 3 site page layouts in 2007 are used they define the PlaceHolderTitleBreadcrumb as follows.
The content place holders in the layouts pages override the content place holders in the master page. So the above line in the layout page removes the navigation control hierarchy from the page.
This issue will occur if you use the following some other layouts as I listed in last session.
4. Procedure to reproduce the issue we submitted to Microsoft
The issues: Navigation up missing for sites created from 2007 collaboration portal template with publishing pages migrated from 2007 to 2010
Impacts: We have hundreds of sites uses are not able to use navigation on the site
Steps to reproduce the issues:
• Create sites using 2007 collaboration portal template
• Activate all publish features
• Add some webparts on the default home page – welcome page
• Add some sub-sites to test navigations
• Migrate the site from 2007 to 2010
• Verify Navigation up missing for the welcome page
5. Produces to fix this issue
To correct the issue with Navigate Up issue is very straight forward after we understand version 3 site page layouts in 2007 overwrite the navigation in 2010. This seems to be a design flaw for 2010. Here are the steps to fix the issue on default.aspx.
• Open the page layout in SharePoint Designer and remove the following line.
<asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrum" runat="server" />
The TabViewPageLayout.aspx is the layout used for the Site Directory. This is the layout for category.aspx which is the default page for the Sites site in the collaboration portal. This layout has the PlaceHolderTitleBreadcrumb content place holder also but with the following tag.
This can also be removed and the Site Directory navigate up control will display the same as the rest of SharePoint 2010.
6. How to identify all the sites that might have this issues
At this time, you have understand the issue and the solution. However, you may not be able to identify the list of the site and pages that have the issue. You could use powershell script to identify pages on those sites that are having issues. Here is the one script you could run against the farm to list pages and sites.
$data = @()
$webApps = Get-SPWebApplication
foreach($webApp in $webApps)
$sites = $webApp.Sites
foreach($site in $sites)
foreach($web in $site.AllWebs)
foreach($list in $web.Lists)
if($list.Title -eq "Pages")
foreach($item in $list.Items)
[string]$pageLayout = $item["PublishingPageLayout"]
$temp = New-Object PSObject
$temp | Add-Member -MemberType NoteProperty -Name "URL" -value $web.Url
$temp | Add-Member -MemberType NoteProperty -Name "Library" -Value $list.Title
$temp | Add-Member -MemberType NoteProperty -Name "Page" -Value $item.Name
$temp | Add-Member -MemberType NoteProperty -Name "PageLayout" -Value $pageLayout
if($pageLayout.ToLower().Contains("defaultlayout.aspx") -or $pageLayout.ToLower().Contains("reportcenterlayout.aspx") -or $pageLayout.ToLower().Contains("tabviewpagelayout.aspx") -or $pageLayout.ToLower().Contains("newshomelayout.aspx"))
$temp | Add-Member -MemberType NoteProperty -Name "PageLayoutNeedsChange" -value $true
$temp | Add-Member -MemberType NoteProperty -Name "PageLayoutNeedsChange" -value $false
$data += $temp
$data | fl
If you have any feedback, please let me know.
Good luck on your upgrade!