标签:
SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术。通过该功能,实现了页面框架布局与实际内容的分离。虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但是从2007到2010仍然有许多重要的值得我们关注的变化。本文将试图:
首先,让我们快速的看一下在SharePoint 2010中母版页的类型:
v4.master
默认的工作组站点的母版页。提供了功能区和其他用户界面上的改变。
特征
default.master
从SharePoint 2007升级的网站使用该母版页,除非我们手工改成v4版本。
特征
minimal.master
母版页中几乎什么也没有。通常用于搜索中心和Office Web应用程序的页面。这个母版页不应该与2007里的开发人员自己修剪下来的最简单的自定义母版页混淆。 minimal.master现在是一个开箱即用的母版页。在SharePoint 2010里那些修剪完的自定义母版页通常是指Starter母版页。
特征
Starter母版页
SharePoint 2007里通常称为minimal母版页。这些母版页往往是由开发人员创建的,用于快速开始母版页的定制,基于其上扩充功能,做出实际需要的母版页。
simple.master
这个母版页是用在登录和错误页面。要自定义该页面,必须替换存放在服务器_layouts目录下的相应页面文件。若要了解更多信息,请参考MSDN上的文章“SharePoint中的默认母版页”。
使用simple.master 的网页
其他母版页
以下这些杂七杂八的母版页,在定制网站时一般不会去动。
包括:
PlaceHolder控件 | 描述 | 新增 |
<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server"> | 快速启动菜单顶部。 | 是 |
<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server"> | 快速启动菜单底部。 | 是 |
<asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/> | 该网站的标题。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/> | 页面head部分的占位符,用于在页面对应的HTML的head标记中添加额外例如ECMAScript(JavaScript,JScript)和层叠样式表(CSS)。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server"/> | 在body区域中的类。 | 否 |
<asp:ContentPlaceHolder ID="SPNavigation" runat="server"> | 该控件用于放置页面编辑类的控件。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server"> | 当前页面所在站点的名称。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" /> | 出现在标题区域的当前页的标题。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/> | 当前页的说明。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server"> | 页面中放置搜索控件的位置。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server"> | 页面上的面包屑控件。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"> | 面包屑控件上的面包屑文本。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server"> | 页面上子网站和兄弟网站的全局导航。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server"> | 用于放置顶部导航栏的容器。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server"> | 顶部导航栏中的导航菜单。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" /> | 放置填充左侧导航所需数据源的容器。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" /> | 日期选择器,用于包含日历的页面。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server"/> | 左侧导航栏顶部区域。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"> | 快速启动栏。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server"> | 快速启动栏上的其他对象。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server"> | 页面的主要内容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server"> | 存储页面中 Form Digest控件的容器。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/> | 附加在页面底部的内容在。从HTML角度来说,是Form标记以外的部分。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server"/> | title部分的类(现在是在head标记里)。对其定制时如果添加一个WebPartZone到这个palceholder会报错。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server"/> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server"> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server"/> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server"/> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server"/> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server"> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server"> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server"> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"> | 不属于用户界面的组成部分,是为了向后兼容。 | 否 |
功能区是用户界面里一个新增加的特性。 SPRibbonPeripheralContent控件会显示在这一区域,但如果需要也可以将其移到功能区外面。
复制并粘贴下面的代码到你的母版页。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
< div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle"> < div id="s4-ribboncont"> < SharePoint:SPRibbon runat="server" PlaceholderElementId="RibbonContainer" CssFile=""> < SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowLeft" CssClass="ms-siteactionscontainer s4-notdlg"> < span style=""> <%-- 在这里插入网站操作菜单 --%> </ span > </ SharePoint:SPRibbonPeripheralContent > < span style=""><%-- 在这里插入全局导航 --%></ span > < SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight" CssClass="s4-trc-container s4-notdlg"> < span style=""><%-- 在这里插入右上角的控件 --%> </ span > </ SharePoint:SPRibbonPeripheralContent > </ SharePoint:SPRibbon > </ div > < div id="notificationArea" class="s4-noti"> < span style=""><%-- 通知内容将出现在这个div里 --%></ span > </ div > < asp:ContentPlaceHolder ID="SPNavigation" runat="server"> < SharePoint:DelegateControl runat="server" ControlId="PublishingConsole"> </ SharePoint:DelegateControl > </ asp:ContentPlaceHolder > < div id="WebPartAdderUpdatePanelContainer"> < asp:UpdatePanel ID="WebPartAdderUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="false” runat="server"> < ContentTemplate > < WebPartPages:WebPartAdder ID="WebPartAdder" runat="server" /> </ ContentTemplate > < Triggers > < asp:PostBackTrigger ControlID="WebPartAdder" /> </ Triggers > </ asp:UpdatePanel > </ div > </ div > |
在母版页上进行以下更改,以保证页面内容滚动时不会影响功能区的使用。
1
2
3
4
5
|
< div id="s4-workspace"> < div id="s4-bodyContainer"> 内容 </ div > </ div > |
1
|
< div ID="s4-workspace" class="s4-nosetwidth"> |
1
|
< div id="s4-titlerow">标题区</ div > |
1
|
< body scroll="no" ...>主体内容</ body > |
有一组控件是SharePont功能必须的,包括:SPPageManager, ScriptManager和 ScriptLink。
1
|
< asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" /> |
1
|
< SharePoint:SPPageManager runat="server" /> |
1
|
< SharePoint:ScriptLink defer= "true" runat="server"/> |
1
2
3
|
< div class=”cccontent”> 你的内容 </ div > |
1
2
3
|
< div class=”cccontent s4-notdlg”> 你的内容 </ div > |
1
|
< asp:ContentPlaceHolder id="PlaceHolderCopyright" runat="server"/> |
1
|
< asp:Content ContentPlaceholderID="PlaceHolderCopyright" runat="server"></ asp:Content > |
参考资料
Working with SharePoint 2010 Foundation Master Pages
Quick Overview of Master Pages in SharePoint 2010
Starter Master Pages for SharePoint 2010
Randy Drisgill SharePoint Branding Blog
Default Master Pages in SharePoint Foundation
Upgrading a Master Page to a SharePoint 2010 Foundation Master Page
SharePoint Branding & Design Blog
标签:
原文地址:http://www.cnblogs.com/914556495wxkj/p/4332137.html