使用SharePoint 2010 母版页

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

步骤

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


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. 将页面内容部分移动到下面的div内


    1

    2

    3

    4

    5

    <div id="s4-workspace">

        <div id="s4-bodyContainer">

            内容

        </div>

    </div>

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


    1

    <div ID="s4-workspace" class="s4-nosetwidth">

  2. 将标题区域移动到如下id的div里。 

    1

    <div id="s4-titlerow">标题区</div>

  3. 更新body标记和CSS规则,使其不滚动。 Body标记和规则将类似于下面这样:

    1

    <body scroll="no" ...>主体内容</body>

将控件添加到母版页

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

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

  1. 打开您的母版页文件。
  2. 复制并粘贴以下代码,以便添加ScriptManager控件。必须放在form标记内,并且在功能区前面。

    1

    <asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" />

  3. 复制并粘贴以下代码,以便添加SPPageManager控件。 必须放在head标记内。

    1

    <SharePoint:SPPageManager runat="server" />

  4. 复制并粘贴以下代码,以便添加ScriptLink控件。必须放在head标记内。

    1

    <SharePoint:ScriptLink defer= "true" runat="server"/>

  5. 保存您的母版页文件。

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

为了防止您的母版页中的某些div块或其他定义好的块显示在模式窗口(也就是那些弹出窗口,往往出现在添加文件,查看文件属性时)中,可以添加类“s4-notdlg”。

这个问题应该只发生在下列情况下:

  1. 网站使用了自定义的系统母版页(通常与发布页面用的母版页相同)。
  2. 自定义母版页中在模式窗口中应隐藏的区域对应的标记遗漏了s4-notdlg类。

比如,以下区域将出现在模式窗口中:


1

2

3

<div class=”cccontent”>

    你的内容

</div>

添加s4-notdlg至该类将阻止这种情况的发生


1

2

3

<div class=”cccontent s4-notdlg”>

    你的内容

</div>

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

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

在SharePoint Designer 2010中的步骤

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


    1

    <asp:ContentPlaceHolder id="PlaceHolderCopyright" runat="server"/>

  2. 在页面布局中的为该占位符插入自定义内容

    1

    <asp:Content ContentPlaceholderID="PlaceHolderCopyright" runat="server"></asp:Content>

  3. 使用SharePoint Designer在新建的区域中插入一个WebPart。如果希望所有继承自该页面布局的页面上都显示该WebPart,不要把WebPart放在WebPartZone里,直接放在该区域内即可。

参考资料

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

Branding SharePoint

Heather Solomon

SharePoint Branding & Design Blog

Guide to SharePoint 2010 Base CSS Classes

Customizing the ribbon

时间: 2024-08-02 05:24:30

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

SharePoint 2010 隐藏个人操作Personal Action的部分内容(右上角下拉菜单)

SharePoint 2010 隐藏个人操作Personal Action的部分内容(右上角下拉菜单) 最近有个需求是隐藏个人操作Personal Action的部分内容(右上角下拉菜单),研究了一下需要更改Welcome.ascx文件. 文件位置: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES 在母版页中可以看到,母版页引用了这个ASP.NET控

SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框

SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框 SharePoint 2010 使得往你的网站添加对话框内容变得出乎意料的简单.内置的功能允许你从站点任何地方抽取内容,然后显示在模态对话框中,出现在页面的前端.当它涉及到现代Web技术的时候,这就是很标准的东东啦,但是易用性是真正使SharePoint对话框变得如此引人的主要原因.本文中,我们将探讨SharePoint 2010 平台带来的对话框功能,并且我们会发现自定义内容的新方法,来给

SharePoint 2010 隐藏我的网站、我的档案链接

SharePoint 2010 隐藏我的网站.我的档案链接 前两篇博客发出去之后,想了想,仍然有我的网站.我的档案这两个链接没有发生变化.说明它们没有在Welcome.ascx页面中引用.那它们究竟是怎么出现在Personal Actions 个人操作中呢?如何隐藏掉,或者删除呢? 最后才发现,原来我找错了控件,根本与Welcome.ascx无关.而内部的机制是这样的. 首先,有个服务器控件SocialNavigationControl,它呈现在SocialData.ascx中.其文件位置与We

SharePoint 2010 在允许匿名访问的网站中隐藏登陆链接

SharePoint 2010 在允许匿名访问的网站中隐藏登陆链接 最近在使用Welcome.ascx用户控件时,发现很多东西都是要靠它来呈现.比如这里,关于在站点中对于匿名访问用户隐藏登陆链接也与它有关. 大概分两个步骤完成这样功能.非常简单.需要用到母版页和SharePoint Application Page link控件. 1. 复制Welcome.ascx控件,命名CustomWelcome.ascx.覆盖OnLoad事件,给匿名用户隐藏登陆应用程序页面链接. 2. 在母版页中引用这个

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

?? 首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份.还原到SharePoint 2013环境中: 如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看: 如果不知道是哪个数据库的话,可以到管理内容数据库查看: 备份SharePoint 2010站点的内容数据库,还原到SharePoint 2013站点上(数据库备份还原,此步略): 然后新建一个web应用程序,删掉默认的内容数据库,附加这个还原过来的内容数据库(比较简单,此步略): 但是附加的时候,发现报

SharePoint 2010 图片库缩略图 Web Part Web 部件

SharePoint 2010 图片库缩略图 Web Part Web 部件 本WebPart以缩略图布局显示来自SharePoint图片库的图片.下载地址:http://download.csdn.net/detail/u012025054/7659619. 首先在站点中创建一个图片库ProductShow. 部署WebPart并激活,添加到页面"产品展示". 编辑WebPart: 效果图: 点击图片时,会在页面前方跳出图片预览,和百度谷歌图片库差不多.点击"X"

SharePoint 2010 自定义基于SQL表单身份验证的登录页面

当为SharePoint 2010 WebApplication配置了以混合模式(FBA Authentication和Windows Authentication)登陆后,我们当然可以自定义登陆页面(Sign in Page). 一.登陆SharePoint 2010 Central Administratio后,找到对应的WebApplication,指定其Sign in Page Url即可,如下所示: 二.创建自定义登录项目 首先,为了创建自定义的登陆页,我选择了Application

SharePoint 2010 之 数据库架构

1.SharePoint Foundation 2010 数据库 1)配置数据库 配置:SharePoint_Config 配置数据库包含有关 SharePoint 数据库.Internet Information Services (IIS) 网站.Web 应用程序.受信任的解决方案.Web 部件包.网站模板以及特定于 SharePoint 2010 产品的 Web 应用程序和服务器场设置(例如默认配额设置和被禁止的文件类型)的数据. 在仅服务器场配置备份或还原过程中,不会保存许多配置设置,尤

解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个SharePoint库,验证一下该帐号是否具有对该SharePoint web应用程序具有至少“完全读取”的权限. 当我在升级上来的SharePoint环境中对我新建的博客URL进行爬网时遇到了这个错误. 这个错误发生在当你运行Windows 2008 R2和SharePoint 2010并且爬网进程试图访问一