转:http://tanyanbo2.blog.163.com/blog/static/97339159201111591458902/

SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术。通过该功能,实现了页面框架布局与实际内容的分离。虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但是从2007到2010仍然有许多重要的值得我们关注的变化。本文将试图:

  • 巩固和掌握SharePoint 2010里母版页相关的一些基本操作
  • 突出描述新版本和以前的版本之间的一些变化
  • 了解一些有用的或比较常见的自定义方式

SharePoint 2010 母版页的类型

首先,让我们快速的看一下在SharePoint 2010中母版页的类型:

v4.master

默认的工作组站点的母版页。提供了功能区和其他用户界面上的改变。

  特征

  • 网站操作在2010中更新。现在放在左侧。
  • 功能区可用。

default.master

从SharePoint 2007升级的网站使用该母版页,除非我们手工改成v4版本。

  特征

  • SharePoint 2007版本的 网站操作在右侧
  • 没有功能区。

minimal.master

母版页中几乎什么也没有。通常用于搜索中心和Office Web应用程序的页面。这个母版页不应该与2007里的开发人员自己修剪下来的最简单的自定义母版页混淆。 minimal.master现在是一个开箱即用的母版页。在SharePoint 2010里那些修剪完的自定义母版页通常是指Starter母版页。

  特征

  • 不包括导航

Starter母版页

SharePoint 2007里通常称为minimal母版页。这些母版页往往是由开发人员创建的,用于快速开始母版页的定制,基于其上扩充功能,做出实际需要的母版页。

simple.master

这个母版页是用在登录和错误页面。要自定义该页面,必须替换存放在服务器_layouts目录下的相应页面文件。若要了解更多信息,请参考MSDN上的文章“SharePoint中的默认母版页”。

  使用simple.master 的网页

  • Login.aspx
  • SignOut.aspx
  • Error.aspx
  • ReqAcc.aspx
  • Confirmation.aspx
  • WebDeleted.aspx
  • AccessDenied.aspx

其他母版页

以下这些杂七杂八的母版页,在定制网站时一般不会去动。

包括:

  • application.master
  • applicationv4.master
  • dialog.master
  • layouts.master
  • layoutsv3.master
  • pickerdialog.master
  • rtedialog.master
  • simple.master simple.master
  • simplev4.master
  • mwsdefault.master
  • mwsdefaultv4.master
  • admin.master
  • popup.master

升级至SharePoint 2010母版页

详细内容请参考这一篇MSDN文章 。
许多以前在菜单和工具栏里面的命令现在存放在功能区里。因此,如果现有的母版页中不包含功能区,许多命令将不可用。

功能区里的控件

SharePoint 2010里的下列控件放置在功能区里:
  • 发布控制台- <PublishingConsole:Console>
  • 网站操作菜单- <PublishingSiteAction:SiteActionMenu>
  • 登录和登录控制(如果使用自定义登录,被移到功能区里了)。

所需内容占位符

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控件会显示在这一区域,但如果需要也可以将其移到功能区外面。

步骤

复制并粘贴下面的代码到你的母版页。

 
<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="background-color: rgb(255, 255, 153);"> <%-- 在这里插入网站操作菜单 --%> </span>
</SharePoint:SPRibbonPeripheralContent>
<span
style="background-color: rgb(255, 255, 153);"><%-- 在这里插入全局导航 --%></span>
<SharePoint:SPRibbonPeripheralContent
runat="server"
Location="TabRowRight"
ID="RibbonTabRowRight"
CssClass="s4-trc-container s4-notdlg">
<span
style="background-color: rgb(255, 255, 153);"><%-- 在这里插入右上角的控件 --%> </span>
</SharePoint:SPRibbonPeripheralContent>
</SharePoint:SPRibbon>
</div>
<div
id="notificationArea"
class="s4-noti">
<span
style="background-color: rgb(255, 255, 153);"><%-- 通知内容将出现在这个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. 将页面内容部分移动到下面的div内

     
    <div id="s4-workspace">
    <div
    id="s4-bodyContainer">
    内容
    </div>
    </div>

    如果您的页面是固定宽度的,添加 s4-nosetwidth类到s4-workspace div里。

     
    <div ID="s4-workspace"
    class="s4-nosetwidth">
  2. 将标题区域移动到如下id的div里。
     
    <div id="s4-titlerow">标题区</div>
  3. 更新body标记和CSS规则,使其不滚动。 Body标记和规则将类似于下面这样:
     
    <body scroll="no"
    ...>主体内容</body>

将控件添加到母版页

有一组控件是SharePont功能必须的,包括:SPPageManager, ScriptManager
ScriptLink

将这些控件添加到您的母版页

  1. 打开您的母版页文件。
  2. 复制并粘贴以下代码,以便添加ScriptManager控件。必须放在form标记内,并且在功能区前面。
     
    <asp:ScriptManager
    id="ScriptManager"
    runat="server"
    EnablePageMethods="false"
    EnablePartialRendering="true"
    EnableScriptGlobalization="false"
    EnableScriptLocalization="true"
    />
  3. 复制并粘贴以下代码,以便添加SPPageManager控件。 必须放在head标记内。
     
    <SharePoint:SPPageManager
    runat="server"
    />
  4. 复制并粘贴以下代码,以便添加ScriptLink控件。必须放在head标记内。
     
    <SharePoint:ScriptLink
    defer= "true"
    runat="server"/>
  5. 保存您的母版页文件。

防止某些区域在模式窗口中显示

为了防止您的母版页中的某些div块或其他定义好的块显示在模式窗口(也就是那些弹出窗口,往往出现在添加文件,查看文件属性时)中,可以添加类“s4-notdlg”。
这个问题应该只发生在下列情况下:
  1. 网站使用了自定义的系统母版页(通常与发布页面用的母版页相同)。
  2. 自定义母版页中在模式窗口中应隐藏的区域对应的标记遗漏了s4-notdlg类。
比如,以下区域将出现在模式窗口中:

 
<div class=”cccontent”>
你的内容
</div>
添加s4-notdlg至该类将阻止这种情况的发生

 
 
 
<div class=”cccontent s4-notdlg”>
你的内容
</div>

添加一个Placeholder以便在母版页中使用Web部件

虽然我们无法直接在母版页中插入一个WebPart,但是可以通过在母版页中创建一个自定义的(空的)ContentPlaceholderId,由页面布局使用该Id,从而实现在指定位置插入WebPart。

在SharePoint Designer 2010中的步骤

  1. 在你的自定义母版页中添加一个唯一命名的内容占位符。例如:

     
    <asp:ContentPlaceHolder
    id="PlaceHolderCopyright"
    runat="server"/>
  2. 在页面布局中的为该占位符插入自定义内容
     
    <asp:Content
    ContentPlaceholderID
    ="PlaceHolderCopyright"
    runat="server"></asp:Content>
  3. 使用SharePoint Designer在新建的区域中插入一个WebPart。如果希望所有继承自该页面布局的页面上都显示该WebPart,不要把WebPart放在WebPartZone里,直接放在该区域内即可。

使用SharePoint 2010的母版页的更多相关文章

  1. SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用

    通常在我们的项目中,都会涉及到母版页的定制.并且必不可少的,需要配合以一套自己的JavaScript框架和CSS样式.你有没有遇到过这样的情况呢,在开发环境和UAT时都还算顺利,但是当最终部署到生产服 ...

  2. 使用SharePoint 2010 母版页

    SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...

  3. SharePoint 2010 站点附加数据升级到SP2013

    首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份.还原到SharePoint 2013环境中: 如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看: 如果不知道 ...

  4. 在SharePoint 2010 母版页里添加自定义用户控件

    在SharePoint 2010 母版页里添加自定义用户控件(译) 使用自定义用户控件的好处: 1.容易部署:2.易于控制显示或隐藏. (在使用的过程中)可能要面对的问题是:如何在用户控件里使用Sha ...

  5. sharepoint 2010 页面刷新时滚动条位置保持不变 Controlling scrollbar position on postback

    sharepoint 2010 页面刷新时滚动条位置保持不变 Controlling scrollbar position on postback在sharepoint 2010中,如果当前页面的篇幅 ...

  6. 更改SharePoint 2010 顶部导航为下拉菜单样式

      更改SharePoint 2010 顶部导航为下拉菜单样式 最后的效果图: 假如一个网站集顶级站点下面有子网站:sub site1,该子站点下面又有两个子站点:sub site1_1,sub si ...

  7. Sharepoint 2010 根据用户权限隐藏Ribbon菜单(利用css)

    本文介绍的是根据用户权限隐藏整个Ribbon菜单项. 操作环境:Windows Server 2008 r2+ SharePoint 2010 1.关于SharePoint  权限详细请参考:http ...

  8. SharePoint 2010顶部链接导航栏的详细操作

    转:http://www.360sps.com/Item/UseTopLink.aspx 在SharePoint 2010环境的页面中,导航链接总体上可以分为两类,一类是显示在左侧的快速启动栏,另一类 ...

  9. 自定义和扩展 SharePoint 2010 Server 功能区

    了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...

随机推荐

  1. ofbiz进阶之框架配置文件指导

    The Open For Business Project: Framework Configuration Guide 原文链接:http://ofbiz.apache.org/docs/corec ...

  2. 【BZOJ 1015】[JSOI2008]星球大战starwar

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  3. sql之解决数据库表的循环依赖问题

    三张数据表关系如图: 其实出现表循环依赖情况:就是 同时  ConfigCompany和 Department 也有依赖,就会报错,说有循环依赖,就会报错. 所以 这个时候的解决办法:可以改 在数据库 ...

  4. HighCharts 根据spline-plot-bands图,定制自己的图(区间里显示多个数据)

    公司项目里有这样一个需求,根据数据绘图,但是数据很多,不可能每个点每个点的去画,这样显示的数据太密集非常的难看(更显得技术不专业),如图: 所以我和项目经理商量如何显示这个图形,按照他的意思是,按照范 ...

  5. poj 2226 Muddy Fields (转化成二分图的最小覆盖)

    http://poj.org/problem?id=2226 Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  6. 怎样修改Windows7环境变量

    在使用电脑的时候要运行某些特定的应用程序时需要修改系统的环境变量,例如安装JAVA时我们就需要配置系统的环境变量.那什么是环境变量呢?环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比 ...

  7. PHPCMS搭建wap手机网站

    PHPCMS搭建PC端网站比较方便,但是在wap手机端方面却不怎么实用,而且自带的手机建站感觉不是很好,而且模版不好控制,现在对其进行修改,手机建站个人感觉比较方便 首先在phpcms/libs/fu ...

  8. Ubuntu 14.04 启用休眠

    Ubuntu 14.04 启用休眠 Ubuntu 14.04 默认不启用关机菜单中的休眠选项.前提是要有swap分区(网上查询,未验证是否一定需要.PS:swap要不小于物理内存)不过首先最好还是确认 ...

  9. 用 OneAPM Cloud Insight 监控 Docker 性能

    Docker 是构建和部署软件的一个新兴的轻量级的平台,也是一个减轻替代虚拟机的容器.Docker 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案. 和虚拟机一 ...

  10. Object-C中emoji与json的问题

    遇到一个问题,要储存iOS键盘输出的emoji表情到MySQL,我知道用blob+utf8是可以存的.但是现在我的这张表已经太大了,不可能去改类型.所以就想把emoji表情匹配出来,替换掉,再存.但是 ...