示範如何透過 Feature 部署 CustomAction,在站台集各處選單(文件庫工具列、網站動作、項目右鍵選單 ECB、表單工具列、網站設定、內容類型設定)新增自訂連結/按鈕,並驗證呈現效果。
CustomAction 必須指定 Location(命名空間/選單類別)與 GroupId(選單內區塊):
| Location | 對應 UI 區域 | 常用 GroupId |
|---|---|---|
Microsoft.SharePoint.StandardMenu | 文件庫/列表工具列下拉選單 | NewMenu、UploadMenu、ActionsMenu、SettingsMenu、ViewToolbar、ViewSelectorMenu |
Microsoft.SharePoint.StandardMenu | 網站動作選單 | SiteActions |
EditControlBlock | 項目右鍵選單 (ECB) | (需 Type="ECBItem"、Sequence 排序) |
DisplayFormToolbar | 顯示表單工具列 | - |
EditFormToolbar | 編輯表單工具列 | - |
Microsoft.SharePoint.SiteSettings | 網站設定頁面 | Customization、SiteAdministration、SiteCollectionAdmin 等 |
Microsoft.SharePoint.ContentTypeSettings | 內容類型設定頁面 | General、AdvancedSettings 等 |
其他常用 GroupId:PersonalActions(歡迎選單)、ViewSelectorMenu(視圖切換)。
| Token | 意義 |
|---|---|
~site | 目前站台 (SPWeb) 相對路徑 |
~sitecollection | 目前站台集 (SPSite) 相對路徑 |
{ItemId} | 列表項整數 ID |
{ItemUrl} | 文件庫項目 URL(Beta 2 無效) |
{ListId} | 列表 GUID |
{SiteUrl} | 站台 URL |
{RecurrenceId} | 週期項目 ID(不可用於 ECB) |
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\UserInterfaceLightUpFeature.xml:
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="{GUID}" Title="Light Up" Description="Shows how to light up various UI areas."
Version="1.0.0.0" Scope="Site" xmlns="https://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Lightup.xml" />
</ElementManifests>
</Feature>
guidgen.exe 產生 GUID 取代 {GUID}。Lightup.xml 定義 11 個 CustomAction(節選關鍵屬性):
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
<!-- 文件庫工具列:新建選單 -->
<CustomAction Id="UILightUp.DocLibNewToolbar" RegistrationType="List" RegistrationId="101"
GroupId="NewMenu" Rights="ManagePermissions" Location="Microsoft.SharePoint.StandardMenu"
Sequence="1000" Title="MY DOCLIB NEW MENU TOOLBAR BUTTON">
<UrlAction Url="/_layouts/LightupHello.aspx?NewMenu" />
</CustomAction>
<!-- ... 其餘 10 個 CustomAction 同結構,GroupId/Location/UrlAction 不同 -->
<CustomAction Id="UILightUp.ECBItemToolbar" RegistrationType="List" RegistrationId="101"
Type="ECBItem" Location="EditControlBlock" Sequence="106" Title="MY ECB ITEM">
<UrlAction Url="/_layouts/LightupHello.aspx?ECBItem" />
</CustomAction>
<CustomAction Id="UILightUp.SiteSettings" GroupId="Customization"
Location="Microsoft.SharePoint.SiteSettings" Sequence="106" Title="MY SITE SETTINGS LINK">
<UrlAction Url="/_layouts/LightupHello.aspx?Customization" />
</CustomAction>
</Elements>
LightupHello.aspx 置於 \TEMPLATE\LAYOUTS,接收 QueryString 顯示來源:
<%@ Page Language="C#" Inherits="System.Web.UI.Page"%>
<%
string q = Page.ClientQueryString;
if (q == "NewMenu") Response.Write("您來自新建文檔選單。");
else if (q == "ECBItem") Response.Write("您來自文檔的上下文選單。");
// ... 其餘判斷
%>
stsadm -o installfeature -filename UserInterfaceLightUp\feature.xml
stsadm -o activatefeature -filename UserInterfaceLightUp\feature.xml -url https://Server/Site/Subsite
iisreset
Customization 區塊新增連結General 區塊新增連結RegistrationType="List" + RegistrationId="101":限定套用至文件庫(範本 ID 101)。Rights="ManagePermissions":僅具備該權限者可見(安全性修飾)。Sequence:同群組內排序,數值越大越靠後。Type="ECBItem":指定為 ECB 項目類型動作。此演練展示了 Feature 驅動 UI 擴充的完整生命週期:定義 → 部署 → 啟用 → 驗證,為 SharePoint 使用者介面客製化奠定標準範本。