您的位置:首页 > 其它

MOSS母版页 ---定制自己的母版页

2011-05-04 10:26 246 查看
MOSS母版页与布局页的介绍
如果一个网站有很多页面,并且要求这些页面的外观和样式保持一致时,对程序设计人员来说,会做许多重复的工作,维护起来也比较繁琐,在MOSS 2007中,有一个很不错的功能:Web内容管理,用户可以更换母版页,改变页面布局以及完全自定义母版页。MasterPage是ASP.NET2.0中统一管理站点页面布局的机制,同样,在MOSS中也有这样一种机制。有了母版页,我们在改变页面风格的时候,只需要修改母版页就能改变站点下所有页面的外观和样式了,大大的节省了开发人员的繁琐的工作量。
一、首先,先来回忆一下ASP.NET中的母版页和内容页。
1.打开VS2008,创建工程网站,新建一个项目母版页,Index.Master代码如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>

代码中的<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
称为占位符,具体显示的内容则由内容页来决定。
2. ASP.NET内容页
<%@Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="无标题页" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>

内容页通过@Page来指定一个母版页
必须包含Content服务器端控件,这个控件的ContentPlaceHolderID属性与母版页的ContentPlaceHolder控件关联。
需要注意的是母版页文件必须由@MasterPage指令来声明代码文件和类,每个母版页至少包含一个<asp:ContentPlaceHolder>来放内容页的数据。
二、MOSS中母版页和内容页
新建MOSS母版页和ASP.NET母版页步骤如出一辙,先搭好框架,
单击“文件”—“新建”,选择母版页。
在这里,我们自己创建一段精简的母版页代码,将以下代码添加到母版页中,
<%@ Master Language="C#" %>
<%@ Register tagprefix="WebPartPages" namespace="Microsoft.SharePoint.WebPartPages" assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" 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" %>
<html>

<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<SharePoint:RobotsMetaTag runat="server"/>
<title ID=onetidTitle><asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/></title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
样式表
<link href="/style/core.css" type="text/css" rel="stylesheet" />
<style type="text/css">
.*image{
border:0px;
}
</style>
</head>
<body>
<center>
<form id="form1" runat="server" onsubmit="return _spFormOnSubmitWrapper();">
<WebPartPages:SPWebPartManager runat="server" id="WebPartManager"></WebPartPages:SPWebPartManager>
<div style="width:1024px; height:100%; background-image:url('/images/bg.png');">
<table style="width:953px; height:100%;" cellpadding="0" cellspacing="0">
<tr><td style="background-image:url('/images/banner.png'); height:177px;" valign="top">
<table style="width:100%; height:100%;" cellpadding="0" cellspacing="0">
<tr><td style="height: 25px; padding-right:25px;" align="right">
<table cellpadding="0" cellspacing="0" id="foot">
<tr style="background-image:url('/images/top-bg.png')">
<td style="width: 6px"><img alt="" src="/images/top-left.png"></td>
<td valign="middle">
<!—用户欢迎控件-à
<wssuc:Welcome id="IdWelcome" runat="server" EnableViewState="false">
</wssuc:Welcome>
</td>
<td> </td>
<td valign="middle">
网站操作按钮
<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>
</td>
<td style="" valign="middle">| <a href="/index.aspx"><img alt="" src="/images/top2.png" border="0">返回首页</a>
 | <a href="javascript:history.go(1);
"><img alt="" src="/images/top3.png" border="0"> 前进</a>
 | <a href="javascript:history.go(-1);
"><img alt="" src="/images/top4.png" border="0"> 后退</a>
</td>
<td><img alt="" src="/images/top-right.png"></td>
</tr>
</table>
</td></tr>
<tr><td style="height: 100px"></td></tr>
<tr><td valign="bottom">
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td width="288px"></td>
<td valign="bottom">
网站搜索控件
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="SmallSearchInputBox"/>
</asp:ContentPlaceHolder>
</td>
<td width="310px"></td></tr>
</table>
</td></tr>
</table>
</td></tr>
<tr><td background="/images/nav-bg.png" height="27px">
网页导航
<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">
<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" Width="100%" Height="20px">
<StaticMenuItemStyle CssClass="ms-topnav" ItemSpacing="0px"/>
<StaticSelectedStyle CssClass="ms-topnavselected" />
<StaticHoverStyle CssClass="ms-topNavHover" />
<DynamicMenuStyle BackColor="#F2F3F4" BorderColor="#A7B4CE" BorderWidth="0px"/>
<DynamicMenuItemStyle CssClass="ms-topNavFlyOuts"/>
<DynamicHoverStyle BackColor="#CBE3F0" 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>
</td></tr>
<tr><td valign="top">
<table style="width:100%; height:0px; line-height:00px; margin-top:0px;"><tr><td>
编辑网页的时候的编辑控件
<asp:ContentPlaceHolder ID="WSSDesignConsole" runat="server">
<wssuc:DesignModeConsole id="IdDesignModeConsole" runat="server"/>
</asp:ContentPlaceHolder>
</td></tr></table>
<table style="width:953px" cellpadding="0" cellspacing="0">
<tr>
<td>
<div style="width:956px; background-color:#dcf0f1; border:3px white solid; padding-top:10px; padding-left:10px; padding-right:10px; padding-bottom:10px;">
<A name="mainContent"></A>
放置内容也的地方
<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server">

</asp:ContentPlaceHolder>
</div>
</td>
</tr>
</table>
</td></tr>
<tr><td>
<!—网站底部内容-à
<table width="100%" style="font-size:12px; height: 118px;">
<tr><td align="center" valign="bottom" style="height: 58px">网站底部内容
</td></tr>
<tr><td align="center">CopyRight (c)2009 Cnluan Icn.All Rights  Reserved</td></tr>
</table>
</td></tr>
</table>
</div>
一些隐藏的母版页占位符
<div style="display:none;">
<asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"/>

<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server"/>

<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"/>

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server">

</asp:ContentPlaceHolder>

<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server">

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

<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server">

</asp:ContentPlaceHolder>

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

<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>

<asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server" >
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</center>
</body>
</html>

母版页创建完毕,母版页要放在站点下catalogs/masterpage目录下,根据母版页创建一个aspx页面,就可以看到刚才创建的母版页的效果了。
需要注意的是,母版页要发布才可以使用,签入 发布主版本,审批之后就可以了。具体的样式需要修改样式表。样式表存放在系统目录_layouts/2052/styles/core.css
可以按照个人习惯,不过,尽量不要去修改系统里的东西,如果为了一个站点修改样式表,而影响 了其他站点的美观,得不偿失。所以我建议把系统里的样式表复制一份出来,放到你的站点目录下,你可以随意修改了。
在这里我要说一下,母版页最后放到<div>里隐藏的一些占位符,因为有些占位符在你自己定制的母版页中是用不到的,但又不能去掉,去掉之后就会报错。所以就给它们一个安身之处。
就像这样,<link href="/style/core.css" type="text/css" rel="stylesheet" />
好了,母版页的制作就告一段落了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: