Yet another minimal master page!
There are a number of “minimal master pages” on the web:
- Microsoft’s
- Heather Solomon’s (probably the best set of examples)
- Kyle Schaeffer’s
I created this one for my SharePoint Designer class to both highlight the sections (the <h3> tags) and to document optional vs. required sections.
You can download this file from here.
<!-- Optional DOCTYPE -->
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<!-- Tags needed by SharePoint and ASP.Net -->
<%@Master language="C#"%>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, 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" %>
<!-- Standard HTML tag with optional text direction "dir=" (Left to Right vs Right to Left for multilingual sites - More info: http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.2 -->
<HTML dir="<%$Resources:wss,multipages_direction_dir_value%>" runat="server" xmlns:o="urn:schemas-microsoft-com:office:office" __expr-val-dir="ltr">
<HEAD runat="server">
<!-- common meta tags - optional, but you should at least keep the "Expires" to control browser caching -->
<META Name="GENERATOR" Content="Microsoft SharePoint">
<META Name="progid" Content="SharePoint.WebPartPage.Document">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="Expires" content="0">
<!-- optional - generates this: <META NAME="ROBOTS" CONTENT="NOHTMLINDEX"/> based on options set in Site Actions, Site Settings, Search Visibility -->
<SharePoint:RobotsMetaTag runat="server"/>
<!-- Page title as supplied from the content page's ASP:Content tag -->
<Title ID=onetidTitle>
<asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/>
</Title>
<!-- these two tags are found in non-publishing sites and load the CSS in the expected order -->
<!-- this loads CORE.CSS and is not need if you are creating your own CSS -->
<Sharepoint:CssLink runat="server"/>
<!-- this loads the theme select by the user in Site Settings and is not need if you are creating your own CSS -->
<SharePoint:Theme runat="server"/>
<!-- your CSS links can go here -->
<!-- <link rel="stylesheet" type="text/css" href="yourstylesheet" /> -->
<!-- A publishing master page uses both Sharepoint.CssLink and SsharePoint:CssRegistration controls
to load style sheets.
Note: The CssLink control will render all of the CssRegistration CSS files in alphabetical order (!)
and then follow with CORE.CSS - This might not be what you expected!
-->
<!-- Renders a link to a JavaScript library used by SharePoint -->
<SharePoint:ScriptLink language="javascript" name="core.js" Defer="true" runat="server"/>
<!-- Renders a link to a custom JavaScript URL defined in onet.xml (if present) -->
<SharePoint:CustomJSUrl runat="server"/>
<!-- optional - Renders path to .disco file for clients like VS2005 to discover web services on the server -->
<SharePoint:SoapDiscoveryLink runat="server"/>
<!-- this lets content pages load additional style sheets, javascript, meta tags etc -->
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server">
</asp:ContentPlaceHolder>
<!-- optional this lets installed "Features" load additional style sheets, javascript, meta tags etc -->
<SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>
</HEAD>
<!-- the onload runs javascript needed for master pages - scroll is optional -->
<BODY scroll="yes" onload="javascript:if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();">
<!-- form required for all ASPX pages -->
<form runat="server" onsubmit="return _spFormOnSubmitWrapper();">
<!-- required to support web parts -->
<WebPartPages:SPWebPartManager id="m" runat="Server"/>
<h3>Typical top of page items</h3>
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server">
<!-- common controls for the top of a site -->
<!-- global breadcrumb trail -->
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server">
<asp:SiteMapPath SiteMapProvider="SPSiteMapProvider" id="GlobalNavigationSiteMap" RenderCurrentNodeAsLink="true" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/>
</asp:ContentPlaceHolder>
<!-- optional - renders the variations link -->
<SharePoint:DelegateControl runat="server" ControlId="GlobalSiteLink0"/>
<!-- optional - renders the MySite link -->
<SharePoint:DelegateControl ControlId="GlobalSiteLink1" Scope="Farm" runat="server"/>
<!-- optional - renders the MyLinks menu -->
<SharePoint:DelegateControl ControlId="GlobalSiteLink2" Scope="Farm" runat="server"/>
<!-- optional - renders the Welcome menu -->
<wssuc:Welcome id="explitLogout" runat="server"/>
<!-- optional help button -->
<a href="javascript:TopHelpButtonClick('NavBarHelpHome')" AccessKey="<%$Resources:wss,multipages_helplink_accesskey%>" id="TopHelpLink" title="<%$Resources:wss,multipages_helplinkalt_text%>" runat="server">
<img align='absmiddle' border=0 src="/_layouts/images/helpicon.gif" alt="<%$Resources:wss,multipages_helplinkalt_text%>" runat="server">
</a>
</asp:ContentPlaceHolder>
<hr>
<h3>Typical top of page site / page header items - Site Logo, Title etc.</h3>
<!-- Typical Site Header items - Title, Logo, etc -->
<!-- optional - site logo from Site Settings -->
<SharePoint:SiteLogoImage id="onetidHeadbnnr0" LogoImageUrl="/_layouts/images/titlegraphic.gif" runat="server"/>
<!-- site title from site settings - place holder is required, SPLinkButton and ProjectProperty are optional -->
<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">
<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/" id="onetidProjectPropertyTitle">
<SharePoint:ProjectProperty Property="Title" runat="server" />
</SharePoint:SPLinkButton>
</asp:ContentPlaceHolder>
<hr>
<h3>Search controls</h3>
<!-- Search controls - placeholder is required -->
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
<!-- optional - default content for search - actual search depends on content page and / or Site Settings, Search Settings (to turn on advanced search)-->
<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>
</asp:ContentPlaceHolder>
<!-- ------------------------------------------ -->
<!-- required placeholder - this typically wraps the entire top navigation -->
<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server">
<hr>
<h3>Typical tab navigation</h3>
<!-- Tab bar -->
<!-- required placeholder -->
<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">
<!-- ASP.Menu based SharePoint menu - lots of customization possibilities here -->
<SharePoint:AspMenu
ID="TopNavigationMenu"
Runat="server"
DataSourceID="topSiteMap"
EnableViewState="false"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
Orientation="Horizontal"
StaticDisplayLevels="2"
MaximumDynamicDisplayLevels="1"
DynamicHorizontalOffset="0"
StaticPopoutImageUrl="/_layouts/images/menudark.gif"
StaticPopoutImageTextFormatString=""
DynamicHoverStyle-BackColor="#CBE3F0"
SkipLinkText=""
StaticSubMenuIndent="0"
CssClass="ms-topNavContainer">
<StaticMenuStyle/>
<StaticMenuItemStyle CssClass="ms-topnav" ItemSpacing="0px"/>
<StaticSelectedStyle CssClass="ms-topnavselected" />
<StaticHoverStyle CssClass="ms-topNavHover" />
<DynamicMenuStyle BackColor="#F2F3F4" BorderColor="#A7B4CE" BorderWidth="1px"/>
<DynamicMenuItemStyle CssClass="ms-topNavFlyOuts"/>
<DynamicHoverStyle CssClass="ms-topNavFlyOutsHover"/>
<DynamicSelectedStyle CssClass="ms-topNavFlyOutsSelected"/>
</SharePoint:AspMenu>
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource">
<Template_Controls>
<asp:SiteMapDataSource
ShowStartingNode="False"
SiteMapProvider="SPNavigationProvider"
id="topSiteMap"
runat="server"
StartingNodeUrl="sid:1002"/>
</Template_Controls>
</SharePoint:DelegateControl>
</asp:ContentPlaceHolder>
<hr>
<h3>Site actions menu</h3>
<!-- optional - Site Actions Menu -->
<SharePoint:SiteActions runat="server" AccessKey="<%$Resources:wss,tb_SiteActions_AK%>" id="SiteActionsMenuMain"
PrefixHtml="<div><div>"
SuffixHtml="</div></div>"
MenuNotVisibleHtml="&nbsp;">
<CustomTemplate>
<SharePoint:FeatureMenuTemplate runat="server"
FeatureScope="Site"
Location="Microsoft.SharePoint.StandardMenu"
GroupId="SiteActions"
UseShortId="true"
>
<SharePoint:MenuItemTemplate runat="server" id="MenuItem_Create"
Text="<%$Resources:wss,viewlsts_pagetitle_create%>"
Description="<%$Resources:wss,siteactions_createdescription%>"
ImageUrl="/_layouts/images/Actionscreate.gif"
MenuGroupId="100"
Sequence="100"
UseShortId="true"
ClientOnClickNavigateUrl="~site/_layouts/create.aspx"
PermissionsString="ManageLists, ManageSubwebs"
PermissionMode="Any" />
<SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditPage"
Text="<%$Resources:wss,siteactions_editpage%>"
Description="<%$Resources:wss,siteactions_editpagedescription%>"
ImageUrl="/_layouts/images/ActionsEditPage.gif"
MenuGroupId="100"
Sequence="200"
ClientOnClickNavigateUrl="javascript:MSOLayout_ChangeLayoutMode(false);"
/>
<SharePoint:MenuItemTemplate runat="server" id="MenuItem_Settings"
Text="<%$Resources:wss,settings_pagetitle%>"
Description="<%$Resources:wss,siteactions_sitesettingsdescription%>"
ImageUrl="/_layouts/images/ActionsSettings.gif"
MenuGroupId="100"
Sequence="300"
UseShortId="true"
ClientOnClickNavigateUrl="~site/_layouts/settings.aspx"
PermissionsString="EnumeratePermissions,ManageWeb,ManageSubwebs,AddAndCustomizePages,ApplyThemeAndBorder,ManageAlerts,ManageLists,ViewUsageData"
PermissionMode="Any" />
</SharePoint:FeatureMenuTemplate>
</CustomTemplate>
</SharePoint:SiteActions>
</asp:ContentPlaceHolder>
<hr>
<h3>Edit Consoles - Edit page, etc...</h3>
<!-- Edit Page -->
<asp:ContentPlaceHolder ID="WSSDesignConsole" runat="server">
<wssuc:DesignModeConsole id="IdDesignModeConsole" runat="server"/>
</asp:ContentPlaceHolder>
<!-- Publishing site console -->
<asp:ContentPlaceHolder ID="SPNavigation" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="PublishingConsole"
PrefixHtml="<tr><td colspan="4" id="mpdmconsole" class="ms-consolemptablerow">"
SuffixHtml="</td></tr>">
</SharePoint:DelegateControl>
</asp:ContentPlaceHolder>
<hr>
<h3>Typical Page Header</h3>
<!-- Page Image -->
<asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server"/>
<!-- Breadcrumb trail for sub pages -->
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server">
<asp:SiteMapPath SiteMapProvider="SPContentMapProvider" id="ContentMap" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/>
</asp:ContentPlaceHolder>
<!-- Page Title -->
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" />
<!-- Mini Console -->
<asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server"/>
<hr>
<h3>Typical Left Navigation</h3>
<!-- Left navigation data source -->
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" />
<!-- Calendar date picker area - used by calendar views -->
<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />
<!-- Quick Launch area including View All Site Content and Recycle bin -->
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">
<!-- View All Site Content -->
<Sharepoint:SPSecurityTrimmedControl runat="server" PermissionsString="ViewFormPages">
<SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx" Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>"/>
</SharePoint:SPSecurityTrimmedControl>
<!-- Quick Launch menu -->
<Sharepoint:SPNavigationManager
id="QuickLaunchNavigationManager"
runat="server"
QuickLaunchControlId="QuickLaunchMenu"
ContainedControl="QuickLaunch"
EnableViewState="false">
<SharePoint:DelegateControl runat="server" ControlId="QuickLaunchDataSource">
<Template_Controls>
<asp:SiteMapDataSource SiteMapProvider="SPNavigationProvider" ShowStartingNode="False" id="QuickLaunchSiteMap" StartingNodeUrl="sid:1025" runat="server" />
</Template_Controls>
</SharePoint:DelegateControl>
<SharePoint:AspMenu id="QuickLaunchMenu" DataSourceId="QuickLaunchSiteMap" runat="server" Orientation="Vertical" StaticDisplayLevels="2" ItemWrap="true" MaximumDynamicDisplayLevels="0" StaticSubMenuIndent="0" SkipLinkText="">
<LevelMenuItemStyles>
<asp:menuitemstyle CssClass="ms-navheader" />
<asp:menuitemstyle CssClass="ms-navitem" />
</LevelMenuItemStyles>
<LevelSubMenuStyles>
<asp:submenustyle CssClass="ms-navSubMenu1" />
<asp:submenustyle CssClass="ms-navSubMenu2" />
</LevelSubMenuStyles>
<LevelSelectedStyles>
<asp:menuitemstyle CssClass="ms-selectednavheader" />
<asp:menuitemstyle CssClass="ms-selectednav" />
</LevelSelectedStyles>
</SharePoint:AspMenu>
</Sharepoint:SPNavigationManager>
<!--- Tree View - display controled in Site Settings, Tree view --->
<Sharepoint:SPNavigationManager
id="TreeViewNavigationManager"
runat="server"
ContainedControl="TreeView">
<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx" id="idNavLinkSiteHierarchy" Text="<%$Resources:wss,treeview_header%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>"/>
<SharePoint:SPHierarchyDataSourceControl
runat="server"
id="TreeViewDataSource"
RootContextObject="Web"
IncludeDiscussionFolders="true"
/>
<SharePoint:SPRememberScroll runat="server" id="TreeViewRememberScroll" onscroll="javascript:_spRecordScrollPositions(this);" Style="overflow: auto;height: 400px;width: 150px; ">
<Sharepoint:SPTreeView
id="WebTreeView"
runat="server"
ShowLines="false"
DataSourceId="TreeViewDataSource"
ExpandDepth="0"
SelectedNodeStyle-CssClass="ms-tvselected"
NodeStyle-CssClass="ms-navitem"
NodeStyle-HorizontalPadding="2"
SkipLinkText=""
NodeIndent="12"
ExpandImageUrl="/_layouts/images/tvplus.gif"
CollapseImageUrl="/_layouts/images/tvminus.gif"
NoExpandImageUrl="/_layouts/images/tvblank.gif"
>
</Sharepoint:SPTreeView>
</Sharepoint:SPRememberScroll>
</Sharepoint:SPNavigationManager>
<!-- Recycle Bin -->
<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/recyclebin.aspx" id="idNavLinkRecycleBin" ImageUrl="/_layouts/images/recycbin.gif" Text="<%$Resources:wss,StsDefault_RecycleBin%>" PermissionsString="DeleteListItems"/>
</asp:ContentPlaceHolder>
<hr>
<h3>Left Actions Area (used by wikis)</h3>
<!-- Left Actions area placeholder - used by Wikis-->
<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server"/>
<hr>
<h3>Page Content</h3>
<!-- This div wraps the content area and is used by SharePoint to
display the web part editor panel to the right of the web part zones -->
<div id="MSO_ContentDiv" runat="server">
<A name="mainContent"></A>
<!-- Page Description -->
<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/>
<!-- Main content area -->
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server">
</asp:ContentPlaceHolder>
</div>
<hr>
<h3>Form Digest Security Control (not visible)</h3>
<!-- Form Digest Security Control -->
<asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server">
<SharePoint:FormDigest runat=server/>
</asp:ContentPlaceHolder>
<input type="text" name="__spDummyText1" style="display:none;" size=1/>
<input type="text" name="__spDummyText2" style="display:none;" size=1/>
</form>
<hr>
<h3>Other required placeholders not generally needed by a custom master page</h3>
<!-- Footer -->
<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/>
<!-- Used to add body styles to the page header -->
<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server"/>
<!-- Used to add styles to the page header -->
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server"/>
<asp:Panel visible="false" runat="server">
<!-- PLACE UNUSED CONTENT PLACEHOLDERS HERE -->
<!--- --- Placeholders used in default.master that you will likely not use --- --->
<!-- Area between page image and page title -->
<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server"/>
<!-- Area between page name and right page border -->
<asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server"/>
<!-- Area between top nav bar and page content -->
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server"/>
<!-- Area above left nav bar -->
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server"/>
<!-- Sets a width of the left nav bar -->
<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server"><IMG SRC="/_layouts/images/blank.gif" width=138 height=1 alt=""></asp:ContentPlaceholder>
<!-- Area between left nav bar and page content -->
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server"></asp:ContentPlaceHolder>
<!-- Area between left nav and content -->
<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server"/>
<!-- Area between content and right page border -->
<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"/>
</asp:Panel>
</BODY>
</HTML>
3 comments:
Great Work Mike! i publish a link in my Spanish SharePoint Blog http://hinsua.blogspot.com/2009/03/minimal-masterpage-comentada.html Thanks!!!
DEAR GOODNESS!
THANK YOU SO MUCH!!!
YOU = MSDN.
Excellent work.
Post a Comment