Customizing Sharepoint Master Page

Developed a master page from scratch which can be intigrated with Sharepoint.

Description
Developed a master page from scratch which can be intigrated with Sharepoint.

Problem this article addresses
Customizing the master page of a Sharepoint site.

Code Snippet
Declaration Section
<%-- Identifies this page as a .master page written in Microsoft Visual C#,
and registers tag prefixes, namespaces, assemblies, and controls. --%>
<%@ Master language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls"
Assembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls"
Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation"
Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<%@ Register TagPrefix="PublishingVariations" TagName="VariationsLabelMenu" src="~/_controltemplates/VariationsLabelMenu.ascx" %>
<%@ Register Tagprefix="PublishingConsole" TagName="Console" src="~/_controltemplates/PublishingConsole.ascx" %>
<%@ Register TagPrefix="PublishingSiteAction" TagName="SiteActionMenu" src="~/_controltemplates/PublishingActionMenu.ascx" %>
<%-- Uses the Microsoft Office namespace and schema. --%>.

Add any user controls (.ascx files) to the controltemplates directory.

Declaration for custom controls
<%@ Register TagPrefix="MyCustomNav" TagName="Navigation" Src="~/_controltemplates/ MyCustNav.ascx" %>
<%@ Register TagPrefix="MyCustomFooter" TagName="Footer" Src="~/_controltemplates/MyCustFooter.ascx" %>

In the header section, you can add any custom cascading styles sheets by using a simple link <html> tag or <SharePoint:CssRegistration> tag. The latter approach offers a few advantages because you have an option to use SPUrl, which returns the URL of the current site.

Header Part

<html>
  <WebPartPages:SPWebPartManager runat="server"/>
  <SharePoint:RobotsMetaTag runat="server"/>

  <%-- The head section includes a content placeholder for the page title and links to CSS and ECMAScript (JScript, JavaScript)
     files that run on the server. --%>
  <head runat="server">
    <asp:ContentPlaceHolder runat="server" id="head">
      <title>
        <asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server" />
      </title>
    </asp:ContentPlaceHolder>
    <Sharepoint:CssLink runat="server"/>
    <!-- Product Group Custom Styles -->
    <%--SharePoint:CssRegistration name="<% $SPUrl:~SiteCollection/Style Library/PG/PG.css%>" runat="server"/--%>
    <link type="text/css" rel="stylesheet" href="/_layouts/1033/styles/PG/PG.css" />    
    <!-- End Product Group Custom Styles -->
    <asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server" />
  </head>
Copy and add the following code. The body section consists of the main body including the Site Actions menu, logon control, publishing console control, any navigation controls, and the main content placeholder or content area, which are defined by layouts.
Body
<%-- When loading the body of the .master page, Office SharePoint Server 2007 also loads the SpBodyOnLoadWrapper class. This class handles .js calls
   for the master page. --%>
  <body onload="javascript:_spBodyOnLoadWrapper();">
    <%-- The SPWebPartManager manages all of the Web part controls, functionality, and events that occur on a Web page. --%>
    <form id="Form1" runat="server" onsubmit="return _spFormOnSubmitWrapper();">
        <!-- Master DIV -->
    <div id="masterbody">
        <!-- Master Header -->
        <div id="MasterHeader">
            <div class="authoringRegion1">
                <div class="sharepointLogin"><wssuc:Welcome id="explitLogout" runat="server"/></div>
                <span class="siteActionMenu"><PublishingSiteAction:SiteActionMenu runat="server"/></span>
                <PublishingWebControls:AuthoringContainer
                   id="authoringcontrols" runat="server">
                      <PublishingConsole:Console runat="server" />
                </PublishingWebControls:AuthoringContainer>
            </div>
        </div>
        <!-- Left Body for Navigation -->
        <div id="LeftNavBody"><asp:ContentPlaceHolder
           id="PlaceHolderLeftNavBar" runat="server"/>
        </div>
        <div id="leftnavspacer"><!-- Spacer -->
        </div>
        <!-- Content Body -->
        <div id="StagingBody">            
              <asp:ContentPlaceHolder id="PlaceHolderMain" runat="server" />            
        </div>
        <!-- Footer Area -->
        <div id="Footer"></div>
    </div>

Copy and add the following code. This section is generally not visible but consists of placeholders that Office SharePoint Server needs to work properly. You can also use a <div> tag with display:none to hide this section instead of using a panel.
<%-- The PlaceHolderMain content placeholder defines where to place
the page content for all the content from the page layout. The page
layout can overwrite any content placeholder from the master page.
Example: The PlaceHolderLeftNavBar can overwrite the left navigation bar. --%>
      
        <asp:Panel visible="false" runat="server">
        <%-- These ContentPlaceHolders ensure all default Office SharePoint Server pages
render with this master page. If the system master page is set to
any default master page, the only content placeholders required are
those that are overridden by your page layouts. --%>
            <asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea"  runat="server"/>            
            <asp:ContentPlaceHolder ID="PlaceHolderPageImage" runat="server"/>
            <asp:ContentPlaceHolder ID="PlaceHolderBodyLeftBorder" runat="server"/>
            <asp:ContentPlaceHolder ID="PlaceHolderNavSpacer" runat="server"/>
            <asp:ContentPlaceHolder ID="PlaceHolderTitleLeftBorder" runat="server"/>
            <asp:ContentPlaceHolder ID="PlaceHolderTitleAreaSeparator" runat="server"/>
            <asp:ContentPlaceHolder ID="PlaceHolderMiniConsole" runat="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat ="server" />
            <asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat ="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat ="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat ="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat ="server"/>
            <asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"/>
         </asp:Panel>
    </form>
  </body>
</html>



By Devil Scorpio   Popularity  (2716 Views)