博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SharePoint 2010 母版页
阅读量:5257 次
发布时间:2019-06-14

本文共 7859 字,大约阅读时间需要 26 分钟。

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上的文章“”。 

  使用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里,直接放在该区域内即可。 
 

参考资料

 

 

 

 

 

 

 
 

转载于:https://www.cnblogs.com/914556495wxkj/p/4332137.html

你可能感兴趣的文章
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>