Sharepoint3 - 制作一个最简单的MasterPage模板

序言:这半年时间都在忙公司的MOSS2007(Sharepoint3)的项目,尽管我对Sharepoint这个东西没什么好感,但在这半年多的开发工作里,还是总结出了一点经验和技巧,现在分享出来希望能给刚学Sharepoint3的新人有点帮助。

正文:在MSDN上有一篇文章也是说如何制作一个最简单的Masterpage,但很不幸的告诉大家,那个文章所写的Masterpage是错误的,在某些特定的页面会抛Error,所以我就花了点时间自己重新整理一个。
<% @Master language="C#" %>
<% @ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"  %>   <% @ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"  %>   <% @ Import Namespace="Microsoft.SharePoint"  %>
<% @ Import Namespace="Microsoft.SharePoint.ApplicationPages"  %>
<% @ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" 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  dir ="<%$Resources:wss,multipages_direction_dir_value%>"  runat ="server"  xmlns:o ="urn:schemas-microsoft-com:office:office"  __expr-val-dir ="ltr" >
< HEAD  runat ="server" >
    
< META  Name ="GENERATOR"  Content ="Microsoft SharePoint" >
    
< META  Name ="progid"  Content ="SharePoint.WebPartPage.Document" >
    
< META  HTTP-EQUIV ="Content-Type"  CONTENT ="text/html; charset=utf-8" >
    
< META  HTTP-EQUIV ="Expires"  content ="0" >
    
< SharePoint:RobotsMetaTag  runat ="server" />
    
< Title  ID =onetidTitle >< asp:ContentPlaceHolder  id =PlaceHolderPageTitle  runat ="server" /></ Title >
    
< SharePoint:CssLink  runat ="server" />
    
< SharePoint:Theme  runat ="server" />
    
< SharePoint:ScriptLink  language ="javascript"  name ="core.js"  Defer ="true"  runat ="server" />
    
< SharePoint:CustomJSUrl  runat ="server" />
    
< SharePoint:SoapDiscoveryLink  runat ="server" />
    
< asp:ContentPlaceHolder  id ="PlaceHolderAdditionalPageHead"  runat ="server" />
    
< SharePoint:DelegateControl  runat ="server"  ControlId ="AdditionalPageHead"  AllowMultipleControls ="true" />
</ HEAD >
< BODY  scroll ="yes"  onload ="javascript:if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();" >
  
< form  runat ="server"  onsubmit ="return _spFormOnSubmitWrapper();" >
          
<!-- 必选项 -->
          
< WebPartPages:SPWebPartManager  id ="m"  runat ="Server" />
          
          
<!-- 可选项,是头顶那个欢迎信息和登录的控件 -->
          
< wssuc:Welcome  id ="IdWelcome"  runat ="server"  EnableViewState ="false" ></ wssuc:Welcome >
          
          
<!-- 可选项,SiteAction那个按钮的控件 -->
          
< SharePoint:SiteActions  runat ="server"  AccessKey ="<%$Resources:wss,tb_SiteActions_AK%>"  id ="SiteActionsMenuMain"
            PrefixHtml
="&lt;div&gt;&lt;div&gt;"
            SuffixHtml
="&lt;/div&gt;&lt;/div&gt;"
            MenuNotVisibleHtml
="&amp;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 >
        
        
<!-- 可选项,设计状态下的Console -->             
        
< asp:ContentPlaceHolder  ID ="WSSDesignConsole"  runat ="server" >
            
< wssuc:DesignModeConsole  id ="IdDesignModeConsole"  runat ="server" />
        
</ asp:ContentPlaceHolder >
        
        
<!-- 这个tag比较重要,它是设置Webpart的那个工具条,如果页面上不加上这个Tag,那个工具条就会生成在页面的最下端,从而破坏页面结构 -->
        
< PlaceHolder  id ="MSO_ContentDiv"  runat ="server" ></ PlaceHolder >   
        
        
<!-- 必选项,这个就不用说了吧 -->
        
< asp:ContentPlaceHolder  id ="PlaceHolderMain"  runat ="server" ></ asp:ContentPlaceHolder >
 
        
< input  type ="text"  name ="__spDummyText1"  style ="display:none;"  size =1 />
        
< input  type ="text"  name ="__spDummyText2"  style ="display:none;"  size =1 />
        
        
<!-- 没用的PlaceHolder不要删除掉,因为有些页面会把东西输出到这些PlaceHolder的,少一个都可能会出错,把他隐藏就行 -->
          
< div  style ="display:none" >
              
< asp:ContentPlaceHolder  id ="PlaceHolderUtilityContent"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderBodyAreaClass"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderTitleAreaClass"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderGlobalNavigationSiteMap"  runat ="server" >
                
< asp:SiteMapPath  SiteMapProvider ="SPSiteMapProvider"  id ="GlobalNavigationSiteMap"  RenderCurrentNodeAsLink ="true"  SkipLinkText =""  NodeStyle-CssClass ="ms-sitemapdirectional"  runat ="server" />
            
</ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderGlobalNavigation"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderSiteName"  runat ="server" >
                
< SharePoint:SPLinkButton  runat ="server"  NavigateUrl ="~site/"  id ="onetidProjectPropertyTitle" >
                 
< SharePoint:ProjectProperty  Property ="Title"  runat ="server"   />
                
</ SharePoint:SPLinkButton >
            
</ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderSearchArea"  runat ="server" >
                
< SharePoint:DelegateControl  runat ="server"  ControlId ="SmallSearchInputBox" />
            
</ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderHorizontalNav"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderTopNavBar"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  ID ="SPNavigation"  runat ="server" >
                
< SharePoint:DelegateControl  runat ="server"  ControlId ="PublishingConsole"
                   PrefixHtml
="&lt;tr&gt;&lt;td colspan=&quot;4&quot; id=&quot;mpdmconsole&quot; class=&quot;ms-consolemptablerow&quot;&gt;"
                   SuffixHtml
="&lt;/td&gt;&lt;/tr&gt;" >
                
</ SharePoint:DelegateControl >
            
</ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderPageImage"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderTitleLeftBorder"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderTitleBreadcrumb"  runat ="server" >
                
< asp:SiteMapPath  SiteMapProvider ="SPContentMapProvider"  id ="ContentMap"  SkipLinkText =""  NodeStyle-CssClass ="ms-sitemapdirectional"  runat ="server" />   &nbsp;
            
</ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderPageTitleInTitleArea"  runat ="server"   />
            
< asp:ContentPlaceHolder  id ="PlaceHolderMiniConsole"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderTitleRightMargin"  runat ="server" ></ asp:ContentPlaceHolder >
            
< 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 >
            
< asp:ContentPlaceHolder  id ="PlaceHolderTitleAreaSeparator"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderLeftActions"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderNavSpacer"  runat ="server" ></ asp:ContentPlaceholder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderLeftNavBarBorder"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderBodyLeftBorder"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderPageDescription"  runat ="server" />
            
< asp:ContentPlaceHolder  id ="PlaceHolderBodyRightMargin"  runat ="server" ></ asp:ContentPlaceHolder >
            
< asp:ContentPlaceHolder  id ="PlaceHolderFormDigest"  runat ="server" >
                
< SharePoint:FormDigest  runat =server />
              
</ asp:ContentPlaceHolder >
        
</ div >
    
</ form >
</ BODY >
</ HTML >

PS:其实有一些Sharepoint自带的控件是很好用的,希望大家能发掘出来

这个模板是基于Blank site那个模板加工的,如果是MOSS里的Publish模板那者一些特殊的模板可能还要加点东西上去。
希望这个能为大家带来帮助。

有问题可以联系我的Email或者留言,我会尽量做到有问必复的。
Email: [email protected]

你可能感兴趣的:(SharePoint)