SharePoint 2010 母版頁沿用 ASP.NET 2.0 技術,實現版面與內容分離。從 2007 升級而來的概念雖相似,但 2010 引入 Ribbon(功能區)、最小母版頁、Starter 母版頁等重大變化。本文系統整理母版頁類型、必要 ContentPlaceHolder、Ribbon 整合步驟、捲動固定功能區、模式對話框隱藏區域、Web 部件置放等實戰技巧。
| 母版頁 | 用途 | 特徵 |
|---|---|---|
| v4.master | 預設小組網站 | 含 Ribbon、網站動作在左側 |
| default.master | 2007 升級網站 | 無 Ribbon、網站動作在右側 |
| minimal.master | 搜尋中心、Office Web Apps | 極精簡、無導覽、開箱即用 |
| Starter Master Pages | 開發者客製化基底 | 2007 稱 minimal,精簡至核心功能 |
| simple.master | 登入/錯誤/存取拒絕頁面 | 位於 `_layouts`,需取代檔案客製化 |
| application.master 等 | 中央管理、對話框、選取器等 | 一般不動 |
<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="background:#ffff99"><%-- 網站動作選單 --%></span>
</SharePoint:SPRibbonPeripheralContent>
<span style="background:#ffff99"><%-- 全域導覽 --%></span>
<SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight" CssClass="s4-trc-container s4-notdlg">
<span style="background:#ffff99"><%-- 右上角控制項 --%></span>
</SharePoint:SPRibbonPeripheralContent>
</SharePoint:SPRibbon>
</div>
<div id="notificationArea" class="s4-noti">
<span style="background:#ffff99"><%-- 通知區域 --%></span>
</div>
<asp:ContentPlaceHolder ID="SPNavigation" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="PublishingConsole" />
</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>
<div id="s4-workspace">
<div id="s4-bodyContainer"> 內容 </div>
</div>
| ID | 描述 | 必要 |
|---|---|---|
| PlaceHolderQuickLaunchTop | 快速啟動頂部 | 是 |
| PlaceHolderQuickLaunchBottom | 快速啟動底部 | 是 |
| PlaceHolderPageTitle | 網站標題 | 否 |
| PlaceHolderAdditionalPageHead | Head 額外腳本/樣式 | 否 |
| PlaceHolderBodyAreaClass | Body 區域 CSS 類別 | 否 |
| SPNavigation | 頁面編輯控制項容器 | 否 |
| PlaceHolderSiteName | 目前網站名稱 | 否 |
| PlaceHolderPageTitleInTitleArea | 標題區頁面標題 | 否 |
| PlaceHolderPageDescription | 頁面描述 | 否 |
| PlaceHolderSearchArea | 搜尋控制項位置 | 否 |
| PlaceHolderGlobalNavigation | 麵包屑 | 否 |
| PlaceHolderTitleBreadcrumb | 麵包屑文字 | 否 |
| PlaceHolderGlobalNavigationSiteMap | 全域導覽(子/同級網站) | 否 |
| PlaceHolderTopNavBar | 頂部導覽列容器 | 否 |
| PlaceHolderHorizontalNav | 頂部導覽選單 | 否 |
| PlaceHolderLeftNavBarDataSource | 左側導覽資料來源 | 否 |
| PlaceHolderCalendarNavigator | 日期選擇器 | 否 |
| PlaceHolderLeftNavBarTop | 左側導覽頂部 | 否 |
| PlaceHolderLeftNavBar | 快速啟動欄 | 否 |
| PlaceHolderLeftActions | 快速啟動其他物件 | 否 |
| PlaceHolderMain | 頁面主要內容 | 否 |
| PlaceHolderFormDigest | Form Digest 容器 | 否 |
| PlaceHolderUtilityContent | Form 標籤外底部內容 | 否 |
| PlaceHolderTitleAreaClass | 標題區 CSS 類別(現於 head) | 否 |
| 其餘相容性 PlaceHolder | 向後相容,非 UI 組成 | 否 |
<!-- Head 區域 -->
<SharePoint:SPPageManager runat="server" />
<SharePoint:ScriptLink defer="true" runat="server" />
<!-- Form 區域,Ribbon 之前 -->
<asp:ScriptManager ID="ScriptManager" runat="server"
EnablePageMethods="false" EnablePartialRendering="true"
EnableScriptGlobalization="false" EnableScriptLocalization="true" />
加入 CSS 類別 `s4-notdlg`:
<div class="cccontent s4-notdlg">你的內容</div>
<asp:ContentPlaceHolder ID="PlaceHolderCopyright" runat="server" />
<asp:Content ContentPlaceholderID="PlaceHolderCopyright" runat="server"></asp:Content>
掌握 v4.master 架構、Ribbon 整合、必要預留位置、捲動固定、模式對話框隱藏與 Web 部件預留,即能建立符合 SharePoint 2010 UX 標準、可維護性高的客製化母版頁。