• MOSS 母版页分类、编辑与应用


    MOSS 07建立在asp.net2.0基础上引入了个非常重要功能:WEB内容管理(Web ContentManagement),它支持用户更换母版页(Master Page),修改页面完全自定义母版页面等有了统母版页支持可以
    统网站WebSite风格提高开发效率MOSS本身提供了很多母版供用户使用,但是往往达不到实际用户需求


      MOSS母版页分为以下两类:
      1:网站WebSite母版页:当前站点下当前用户创建页面所使用母版页;
      2:系统母版页:网站WebSite中所有表单和视图界面等系统功能页面所使用母版页这些页面大多存在于
    _layout目录下面


      MOSS母版页编辑工具:
      我们创建自定义母版页可以参考系统提供母版页创建格式编辑母版最好借助个工具:SPD存放路径类似于
    :http://jiangmin:8000/_catalogs/masterpage要注意是它并不是个实际物理路径
      

           创建MOSS母版页需要准备知识:
      占位符概念及作用
      概念:在母版页中预留出部分空间供内容页使用以ContentPlaceHolderControl控件形式出现
      作用:可以让用户更加灵活修改页面
      默认母版页(default.master)中占位符:在系统提供任何个母版页源代码中会发现它提供了非常多占位符这
    些占位符ID都是固定对应关系如下:
      1、PlaceHolderGlobalNavigationSiteMap
      放置连接到顶级站点超连接


      2、PlaceHolderGlobalNavigation
      放置顶部行内容

      3、PlaceHolderSiteName
      放置站点名称


      4、"PlaceHolderSearchArea
      放置搜索框


      5、PlaceHolderHorizontalNav
      放置水平导航栏


      6、PlaceHolderTopNavBar 
      放置水平导航栏行内容


      7、WSSDesignConsole
      页面编辑Control控件当页面进入编辑页面模式时使用(当我们点 Site Actions, Edit Page后)


      8、SPNavigation
      在 Windows SharePo Services中默认为空用于附加页面编辑Control控件


      9、PlaceHolderPageImage
      左侧图片


      10、PlaceHolderTitleLeftBorder
      Title区左侧边框


      11、PlaceHolderTitleBreadcrumb
      TitleBreadcrumb页面导航区

      12、PlaceHolderPageTitleInTitleArea
      Breadcrumb区下面标题


      13、PlaceHolderMiniConsole
      个放置页面级命令地方比如在WIKI站点里Edit Page, History, Incoming Links


      14、PlaceHolderTitleRightMargin
      Title区右侧空白


      15、PlaceHolderTitleAreaSeparator
      TitleAreaSeparator区


      16、PlaceHolderLeftNavBarDataSource
      左侧导航区数据源


      17、PlaceHolderCalendarNavigator
      在页面中有日历时为其显示个日期选择框


      18、PlaceHolderLeftNavBarTop
      左侧导航区上面导航区


      19、PlaceHolderLeftNavBar
      左侧导航区


      20、PlaceHolderLeftActions
      左侧导航区下面动作区

      21、PlaceHolderNavSpacer
      左侧导航区宽度


      22、PlaceHolderLeftNavBarBorder
      左侧导航区边框元素


      23、PlaceHolderBodyLeftBorder
      页面body边框元素


      24、PlaceHolderPageDescription
      页面描述区


      25、PlaceHolderMain
      页面主体


      26、PlaceHolderBodyRightMargin
      页面body右边空白


      27、PlaceHolderFormDigest 
      这是页面中必备 "form digest"安全组件


      28、PlaceHolderUtilityContent
      页面底部需要块特殊内容


      29、PlaceHolderBodyAreaClass
      附加在页面顶部body中样式

      30、PlaceHolderTitleAreaClass
      TitleArea附加样式
      31、PlaceHolderAdditionalPageHead
      提供给内容页添加所有可以放在<head>区域内容如CSS、JS等


      DelegateControl是什么?有什么用?
      定义:它是个Control控件包装器
      作用:像QuickPart样用来对用户Control控件进行包装,用户可以开发ascxControl控件
      如何应用:
      1:创建web 工程MyDelegateControlDemoTest,用户Control控件:DelegateControlDemoTest.ascx;
      2:创建feature:详细内容可参考下面第 3条:什么是feature
      3:Control控件在需要编辑页面源代码中输入下面内容:ControlId为Control控件名称
    <SharePo:DelegateControlControlId="DelegateControlDemoTest"Visible="true"" runat="server">
    </SharePo:DelegateControl>


      什么是Feature?
            Features相当于个网站WebSite插件般会存放在以下路径:C:Program Files
      Common FilesMicrosoft Sharedweb server extensions12TEMPLATEFEATURES每个feature个目录每
    个目录下面包含个feature文件
      feature应用场合分为:1:场;2:WEB应用;3:网站WebSite集;4:网站WebSite


      feature架构属性列表如下:
      1:ActivateOnDefault:默认是true,介绍说明自动激活;
      2:Description:feature详细描述在网站WebSite集功能界面上会显示出来; 
      3:Hidden:是否隐藏默认是false,如果是true,则在网站WebSite集功能界面上看不到;
      4:Id:唯标识;
      5:ReceiverAssembly:事件接收器;
      6:Scop:应用范围场应用网站WebSite集网站WebSite
      7:Titel:标题
      feature文件结构中定义了其本身(ElementManest节点),指定了相关集文件依赖等信息最重要也最常用就
    是ElementMainfest节点它包含了些相关文件举例如下:它包含个Location属性指定了个包含feature元素定义
    相对路径

      Feature部署过程:
      1:在C:Program FilesCommon FilesMicrosoft Sharedweb server
    extensions12TEMPLATEFEATURES创建个和Control控件名相同文件夹"DelegateControlDemoTest",然后创
    建两个文件如下:
      feature文件如下: Location指定了对应子文件路径
    <?xmlversion="1.0"encoding="utf-8"?>
    <Feature
     Id="AA929AFF-4602-4d7f-A501-B80AC9A4BB32"
     Title="DelegateControlJiangMin"
     Description="jiangminMOSS"
     Scope="Farm"
     xmlns="http://schemas.microsoft.com/sharepo/">
     <ElementManests>
      <ElementManestLocation="DelegateControlDemoTest.xml"/>
     </ElementManests>
    </Feature>

      DelegateControlDemoTest.xml文件如下:
            这里有两个重要属性:
      1:Id,及Control控件ID和创建用户Control控件名称样;
      2:ControlSrc:Control控件路径注意路径写法;
    <?xmlversion="1.0"encoding="utf-8"?>
    <Elementsxmlns="http://schemas.microsoft.com/sharepo/">
     <Control
      Id="DelegateControlDemoTest"
      Sequence="50"
      ControlSrc="~/_CONTROLTEMPLATES/DelegateControlDemoTest.ascx">
     </Control>
    </Elements> 
      2:复制DLL到C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12BIN
      3:在命令窗口运行下面语句注册Control控件
            stsadm -o feature -filename DelegateControlDemoTestFeature.xml -force


     sharepoint中服务器导航Control控件 

    导航Control控件aspmenu:MOSS2007中站点导航是基于
    ASP.NETNavigation机制,在默认导航Control控件共有 3个在MOSS中所有导航栏都是通过
    ASP:MenuControl控件或是 ASP:TreeViewControl控件绑定到个NavigationDataSource实现因此每个导航菜
    单都有两个Control控件共同实现 首先是个 ASP:MenuControl控件定义导航栏样式和层级属性; 其次是
    SiteMapDataSource或SPNavigationProvider作为导航栏数据源Default.Mater中 3个导航栏实现各有区别顶
    部导航栏是通过DelegateControl动态加载SiteMapDataSource作为数据源而左侧两个则是动态加载个
    SPNavigationProvider实现数据源顶部导航栏代码如下:
    <SharePo:AspMenu
     ID="TopNavigationMenu"
     Runat="server"
     DataSourceID="topSiteMap"
     EnableViewState="false"
     AccessKey="<%$Resources:wss,navigation_accesskey%>"
     Orientation="Horizontal"

     StaticDisplayLevels="2"
     MaximumDynamicDisplayLevels="1"
     DynamicHorizontalOff="0"
     StaticPopoutImageUrl="/_layouts/images/menudark.g"
     StaticPopoutImageTextFormatString=""
     DynamicHoverStyle-BackColor="#CBE3F0"
     SkipLinkText=""
     StaticSubMenuIndent="0"
     CssClass="ms-topNavContainer">
     <StaticMenuStyle/>
     <StaticMenuItemStyleCssClass="ms-topnav"ItemSpacing="0px"/>
     <StaticSelectedStyleCssClass="ms-topnavselected"/>
     <StaticHoverStyleCssClass="ms-topNavHover"/>
     <DynamicMenuStyle BackColor="#F2F3F4"BorderColor="#A7B4CE"BorderWidth="1px"/>
     <DynamicMenuItemStyleCssClass="ms-topNavFlyOuts"/>
     <DynamicHoverStyleCssClass="ms-topNavFlyOutsHover"/>
     <DynamicSelectedStyleCssClass="ms-topNavFlyOutsSelected"/>
    </SharePo:AspMenu>
    <SharePo:DelegateControlrunat="server"ControlId="TopNavigationDataSource">
     <Template_Controls>
     <asp:SiteMapDataSource
      ShowStartingNode="False"
      SiteMapProvider="SPNavigationProvider"
      id="topSiteMap"
      runat="server"
      StartingNodeUrl="sid:1002"/>
     </Template_Controls>
    </SharePo:DelegateControl>


      代码介绍说明:
      1:其中aspmenu使用大多都是样式Control控件,重要属性是个数据源Control控件来源ID:DataSourceID;
      2:DelegateControl动态加载SiteMapDataSource,SiteMapProvider属性是真正数据源;
      3:StartingNodeUr定义了该站点导航栏起始位置左侧导航栏起始位置和顶部就不样顶部导航栏通常都是从

    SiteCollection开始而左侧导航栏是从当前站点开始MaximumDynamicDisplayLevels来让顶部导航栏显示更
    多级次
      如何自定义导航菜单?可以通过定义个XMLDataSource然后将ASPMenuDataSourceID指向
    XMLDataSourceID来实现自定义导航栏XMLDataSource 如下
    <asp:XmlDataSourceDataFile="sitemap.xml"ID="DemoXmlDataSource"runat="server"XPath="/*/*">
    </asp:XmlDataSource>
      其中sitemap.xml文件如下这个文件可以存放在母版页目录下,也可以放在其它地方,根据实际情况修改
    DataFile路径即可,上面例子是站点地图存放在母版页目录下情况
    <?xmlversion="1.0"encoding="utf-8"?>
    <siteMapxmlns="http://SiteMap">
    <siteMapNodetitle="自定义导航菜单"url="TestMenu.aspx"description="自定义导航菜单">
      <siteMapNodetitle="链接1"url="test1.aspx"description="测试链接1"/>
      <siteMapNodetitle="链接2"url="test2.aspx"description="测试链接2"/>
    </siteMapNode>
    </siteMap> 
      上面步骤都完成后你会发现用SPD打开设计页面能看到导航菜单加载正确但当你发布时会报下面:此网页
    中不允许使用Control控件类型.Web.UI.WebControls.XmlDataS解决方案:在对应站点下web.config文件打开
    找到下面行: 确保Safe="True" AllowRemoteDesigner="True"都为True 
    <SafeControlAssembly=".Web,Version=2.0.0.0,Culture=neutral, 
    PublicKeyToken=b03f5f7f11d50a3a" 
    Namespace=".Web.UI.WebControls"TypeName="XmlDataSource" 
    Safe="True"AllowRemoteDesigner="True"/>


      第 2部分:创建母版页 其实有了第部分准备知识我们很比较容易去创建个自定义母版页创建母版页我们用
    SPD来做
      1:复制default.master,放到同级目录下我这里命名为MyCustomMaster.master
      2:保留所有 MyCustomMaster.master源代码中服务器Control控件删除所有HTML代码;

      3:把新母版页HTML复制到 MyCustomMaster.master中;
      4:根据母版页中ContentPlaceHolder和相关Control控件来调整服务器Control控件在新母版页中位置;
      5:设置好内容页 ContentPlaceHolder;
      6:把MyCustomMaster.master设置成网站WebSite母版页
      整理总结:本文通过对占位符DelegateControl,菜单导航Control控件Feature介绍及应用比较全面介绍说明
    了如何根据默认母版页创建个简单自定义母版页过程

    转载请注明:来自ChnCMS 
    本文地址:http://www.chncms.com/2010/12/7/MOSSMASTERPAGE1.html

  • 相关阅读:
    Java线程volatile(二)
    Java线程synchronized(一)
    Java 平衡二叉树和AVL
    Data striping
    分布式系统的事务处理
    什么是面向对象
    Redis为什么是单线程
    spring 自定义事物同步器(一): TransactionSynchronizationManager 解析
    understand EntityManager.joinTransaction()
    spring 拾遗
  • 原文地址:https://www.cnblogs.com/Areas/p/2194052.html
Copyright © 2020-2023  润新知