jump to navigation

Change the Masterpage of the Search Center May 27, 2012

Posted by John Ruby in Microsoft, Sharepoint, Software, Solutions, Troubleshooting & Knowledge Bases.
Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
add a comment

 

This is a bit of a sticky situation. The default master is set to v4.master, but the default site page is built on a layout page which doesn’t use the default master. The layout page is assigned the master page by the Microsoft.SharePoint.Publishing.PublishingLayoutPage class, which hardcodes the master page as the custom master. There is a way to work around this and assign a different master page for the page layout, but the end result would probably not work very well.
Instead of changing the master page, I would suggest adding the top navigation bar to the page layout. This can be done by adding the following code to the SearchMain.aspx Page Layout. Edit it in Advanced Mode. Insert the following code right after this existing code (around line 100):
EXISTING CODE:
</ContentTemplate>
</SharePoint:UIVersionedContent>
<SharePoint:UIVersionedContent UIVersion="4" runat="server">
<ContentTemplate>
ADD THIS CODE:
  <div class="s4-lp s4-toplinks" style="background-image:url(/_layouts/images/selbg.png); background-repeat:no-repeat;
  repeat-x:left top; background-color:#f6f6f6; vertical-align:middle; min-height:25px; border-top:1px solid #e0e0e0;
  border-bottom:1px solid #b8babd">
         <SharePoint:AspMenu
           ID="TopNavigationMenuV4"
           Runat="server"
           EnableViewState="false"
           DataSourceID="topSiteMap"
           AccessKey="<%$Resources:wss,navigation_accesskey%>"
           UseSimpleRendering="true"
           UseSeparateCss="false"
           Orientation="Horizontal"
           StaticDisplayLevels="2"
           MaximumDynamicDisplayLevels="1"
           SkipLinkText=""
           CssClass="s4-tn"/>
         <SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate">
          <Template_Controls>
           <asp:SiteMapDataSource
             ShowStartingNode="False"
             SiteMapProvider="SPNavigationProvider"
             id="topSiteMap"
             runat="server"
             StartingNodeUrl="sid:1002"/>
          </Template_Controls>
         </SharePoint:DelegateControl>
     </div>
I grabbed the inline styles from corev4.css. You can change those as you please to get your desired look. Also, if you’d rather have all of the pages with minimal.master inlcude the top link, you can add the nop nav to minimal.master instead. Look at v4.master for the placeholder tags that I had to remove for insertion in the page layout. (asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server"> and <asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">).

Change the masterpage of the search center

Advertisements