• [MOSS开发]:母版页的应用


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

          MOSS母版页分为以下两类:

          1:网站母版页:当前站点下的当前用户创建的页面所使用的母版页;

          2:系统母版页:网站中所有的表单和视图界面等系统功能页面所使用的母版页,这些页面大多存在于_layout目录下面。

          MOSS母版页编辑工具:

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

          第一部分:创建MOSS的母版页需要的准备知识:

          第一:占位符的概念及作用。

               概念:在母版页中预留出一部分空间供内容页使用。以ContentPlaceHolder控件的形式出现。

               作用:可以让用户更加灵活的修改页面。

               默认母版页(default.master)中的占位符:在系统提供的任何一个母版页的源代码中,会发现它提供了非常多的占位符,这些占位符的ID都是固定的。对应关系如下:

              1、PlaceHolderGlobalNavigationSiteMap

                   放置连接到顶级站点的超连接

              2、PlaceHolderGlobalNavigation

                   放置顶部一行内容。

              3、PlaceHolderSiteName

                   放置站点名称

              4、"PlaceHolderSearchArea

                   放置搜索框

              5、PlaceHolderHorizontalNav

                  放置水平导航栏

              6、PlaceHolderTopNavBar

                  放置水平导航栏一行内容

              7、WSSDesignConsole

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

              8、SPNavigation

                  在 Windows SharePoint Services中默认为空,用于附加的页面编辑控件

              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是什么?有什么用?

              定义:它是一个控件的包装器。

              作用:像QuickPart一样,用来对用户控件进行包装,用户可以开发ascx控件。

              如何应用:

                1:创建web 工程MyDelegateControlDemoTest,用户控件:DelegateControlDemoTest.ascx;

                2:创建feature:详细内容可参考下面的第三条:什么是feature。

                3:调用控件。在需要的编辑的页面源代码中输入下面内容:ControlId为控件名称。

    <SharePoint:DelegateControl ControlId="DelegateControlDemoTest" Visible="true""  runat="server">
    </SharePoint:DelegateControl>

                            

           第三:什么是Feature? Features相当于一个网站的插件,一般会存放在以下路径:C:\Program Files\

    Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES,每一个feature一个目录,每个目录下面包含一个feature文件。

                   feature的应用场合分为:1:场;2:WEB应用程序;3:网站集;4:网站。

                   feature架构的属性列表如下:

                  1:ActivateOnDefault:默认是true,说明自动激活;

                  2:Description:feature的详细描述,在网站集功能界面上会显示出来;

                  3:Hidden:是否隐藏,默认是false,如果是true,则在网站集功能界面上看不到;

                  4:Id:唯一标识;

                  5:ReceiverAssembly:事件接收器;

                  6:Scop:应用范围,场,应用程序,网站集,网站

                  7:Titel:标题。

                 feature的文件结构中,定义了其本身(ElementManifest节点),指定了相关的程序集,文件,依赖等信息,最重要的也最常用的就是ElementMainfest节点。它包含了一些相关文件,示例如下:它包含一个Location的属性,指定了一个包含feature元素定义的相对路径。

                 Feature的部署过程:

                  1:在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES创建一个和控件名相同的文件夹"DelegateControlDemoTest",然后,创建两个文件如下:

                  feature文件如下: Location指定了对应子文件的路径。

    <?xml version="1.0" encoding="utf-8"?>
    <Feature
      Id
    ="AA929AFF-4602-4d7f-A501-B80AC9A4BB32"
      Title
    ="DelegateControlJiangMin"
      Description
    ="jiangminMOSS"
      Scope
    ="Farm"
      xmlns
    ="http://schemas.microsoft.com/sharepoint/">
      
    <ElementManifests>
        
    <ElementManifest Location="DelegateControlDemoTest.xml" />
      
    </ElementManifests>
    </Feature>

        

                  DelegateControlDemoTest.xml文件如下:这里有两个重要的属性:

                     1:Id,及控件的ID,和创建的用户控件名称一样;

                     2:ControlSrc:控件的路径,注意路径写法;

    <?xml version="1.0" encoding="utf-8" ?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      
    <Control
        Id
    ="DelegateControlDemoTest"
        Sequence
    ="50"
        ControlSrc
    ="~/_CONTROLTEMPLATES/DelegateControlDemoTest.ascx">
      
    </Control>
    </Elements>

                2:复制DLL到C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN

                3:在命令窗口运行下面语句注册控件。

                   stsadm -o installfeature -filename DelegateControlDemoTest\Feature.xml -force

             第四:sharepoint中的服务器导航控件。 导航控件aspmenu:MOSS2007中的站点导航是基于ASP.NET的Navigation机制的,在默认的导航控件一共有三个。在MOSS中所有导航栏都是通过ASP:Menu控件或是 ASP:TreeView控件绑定到一个NavigationDataSource实现的,因此每一个导航菜单都有两个控件共同实现。 首先是一个 ASP:Menu控件定义导航栏的样式和层级属性; 其次是SiteMapDataSource或SPNavigationProvider作为导航栏的数据源Default.Mater中,三个导航栏的实现各有不同,顶部的导航栏是通过DelegateControl动态加载SiteMapDataSource作为数据源的,而左侧的两个则是动态加载一个SPNavigationProvider实现的数据源。顶部的导航栏代码如下:

    Code


                     代码说明:

                       1:其中aspmenu的使用大多都是样式控件,重要的属性是一个数据源控件的来源ID:DataSourceID;

                       2:DelegateControl动态加载SiteMapDataSource,SiteMapProvider属性是真正的数据源;

                       3:StartingNodeUr定义了该站点导航栏的起始位置,左侧的导航栏的起始位置和顶部的就不一样。因为顶部的导航栏通常都是从SiteCollection开始的,而左侧的导航栏是从当前站点开始的。MaximumDynamicDisplayLevels来让顶部导航栏显示更多的级次。

                    如何自定义导航菜单?可以通过定义一个XMLDataSource,然后将ASPMenu的DataSourceID指向XMLDataSource的ID来实现自定义的导航栏。XMLDataSource 如下。


    <asp:XmlDataSource DataFile="sitemap.xml" ID="DemoXmlDataSource" runat="server" XPath="/*/*"></asp:XmlDataSource>


                 其中sitemap.xml文件如下。这个文件可以存放在母版页的目录下,也可以放在其它地方,根据实际情况修改DataFile的路径即可,上面的例子是站点地图存放在母版页目录下的情况。

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://SiteMap" >
    <siteMapNode title="自定义导航菜单" url="TestMenu.aspx" description="自定义导航菜单">
        
    <siteMapNode title="链接 1" url="test1.aspx" description="测试链接1" />
        
    <siteMapNode title="链接 2" url="test2.aspx" description="测试链接2" />
    </siteMapNode>
    </siteMap>


               上面的步骤都完成后,你会发现用SPD打开设计页面,能看到导航菜单加载正确,但当你发布时,会报下面的错误:此网页中不允许使用控件类型System.Web.UI.WebControls.XmlDataS,解决方案:在对应站点下的web.config文件,打开找到下面的行: 确保Safe="True" AllowRemoteDesigner="True"都为True。

    <SafeControl Assembly="System.Web, Version=2.0.0.0, Culture=neutral, 

    PublicKeyToken=b03f5f7f11d50a3a"

     Namespace="System.Web.UI.WebControls" TypeName="XmlDataSource" 

    Safe="True" AllowRemoteDesigner="True" />

           

            第二部分:创建母版页。 其实有了第一部分的准备知识,我们很比较容易的去创建一个自定义的母版页。创建母版页我们用SPD来做。

                1:复制default.master,放到同级目录下,我这里命名为MyCustomMaster.master。

                2:保留所有 MyCustomMaster.master源代码中的服务器控件,删除所有HTML代码;

                3:把新的母版页的HTML复制到 MyCustomMaster.master中;

                4:根据母版页中的ContentPlaceHolder和相关控件来调整服务器控件在新的母版页中的位置;

                5:设置好内容页的 ContentPlaceHolder的;

                6:把MyCustomMaster.master设置成网站母版页。

         总结:本文通过对占位符,DelegateControl,菜单导航控件,Feature的简介及应用,比较全面的说明了如何根据默认母版页创建一个简单的自定义母版页的过程。

       


  • 相关阅读:
    mysql data type <----> java data type (数值)
    line number is important in Exceptions.
    dom4j 使用原生xpath 处理带命名空间的文档
    dom4j 通过 org.dom4j.XPath 设置命名空间来支持 带namespace 的 xpath
    dom4j 创建一个带命名空间的pom.xml 文件
    xml to xsd ; xsd to xml
    sax 动态切换 抓取感兴趣的内容(把element当做documnet 处理)
    d3.js <一>
    python学习进阶一
    Java *字格
  • 原文地址:https://www.cnblogs.com/ASPNET2008/p/1378460.html
Copyright © 2020-2023  润新知