在對SharePoint進行開發或者功能擴展的時候,經常需要對一些默認的菜單進行擴展,以使我們開發的東西更適合SharePoint本身的樣式。SharePoint的各種功能菜單,像網站設置、Ribbon、列表里的下拉等等,都是一樣原理的,都是XML+JS腳本實現的,如果想實現這些功能,只需要一個XML發布成Feature,並在網站功能啟用,即可。
其實,關於這個並沒有什么過多可以說的東西,大家在實踐中,漸漸理解了。下面,我就舉幾個簡單的例子,做一下簡要說明。
項目結構
新建一個空白的SharePoint 2013項目,添加一個Feature文件,一個菜單定義的XML文件,如下圖。
XML菜單定義,如下圖:
例一:擴展wssuc:Welcome控件
擴展前截圖:
擴展后截圖:
擴展XML:
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="MyTopMenuLink" Location="Microsoft.SharePoint.StandardMenu" GroupId="PersonalActions" Sequence="0" Title="博客園-霖雨"> <UrlAction Url="http://www.cnblogs.com/jianyus"/> </CustomAction> </Elements>
例二 擴展SiteAction(網站設置)菜單
擴展前截圖
擴展后截圖
擴展XML
<CustomAction Id="MyTopMenuLink" Location="Microsoft.SharePoint.StandardMenu" GroupId="SiteActions" Sequence="0" Title="博客園-霖雨"> <UrlAction Url="http://www.cnblogs.com/jianyus"/> </CustomAction>
例三 擴展網站設置菜單
擴展后截圖
擴展XML
<CustomAction Id="MyTopMenuLink" Location="Microsoft.SharePoint.SiteSettings" GroupId="Customization" Sequence="106" Title="博客園-霖雨"> <UrlAction Url="http://www.cnblogs.com/jianyus"/> </CustomAction>
網站設置菜單,不僅僅可以通過GroupId設置顯示在哪個位置,還可以單獨添加一個Group,后面我們會舉例說明。
至於GroupId選擇哪一個,請參考附后的MSDN文檔。
例四 擴展文檔庫Ribbon菜單
擴展后截圖
擴展XML
<CustomAction Id="MyTopMenuLink" Location="Microsoft.SharePoint.StandardMenu" GroupId="SettingsMenu" RegistrationType="List" RegistrationId="101" Sequence="0" Title="博客園-霖雨"> <UrlAction Url="http://www.cnblogs.com/jianyus"/> </CustomAction>
RegistrationId可以區分是文檔庫,還是列表庫,是TemplateID
例五 擴展文檔庫ECB菜單
擴展后截圖
擴展XML
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="MyTopMenuLink" Location="EditControlBlock" RegistrationType="List" RegistrationId="101" Sequence="0" Title="博客園-霖雨"> <UrlAction Url="http://www.cnblogs.com/jianyus"/> </CustomAction> </Elements>
如上圖,因為Sequence是0,所以這個菜單在最上面,如果想要移動位置,設置這個值即可。
例六 擴展網站操作組
擴展后截圖
擴展XML
<!-- Custom Action Group --> <CustomActionGroup Id="CustomActionGroup" Description="自定義組" Title="我的自定義組" Location="Microsoft.SharePoint.SiteSettings" Sequence="30" /> <!-- Custom Action in Custom Action Group --> <CustomAction Id="CustomAction1" Description="自定義操作" Title="自定義操作一" GroupId="CustomActionGroup" Location="Microsoft.SharePoint.SiteSettings" Rights="ManageWeb" RequireSiteAdministrator="FALSE" Sequence="20"> <UrlAction Url="~sitecollection/_layouts/CustomAction1.aspx" /> </CustomAction> <CustomAction Id="CustomAction2" Description="自定義操作" Title="自定義操作二" GroupId="CustomActionGroup" Location="Microsoft.SharePoint.SiteSettings" Rights="ManageWeb" RequireSiteAdministrator="FALSE" Sequence="20"> <UrlAction Url="~sitecollection/_layouts/CustomAction2.aspx" /> </CustomAction>
如上圖,添加了網站操作組,可以用來添加我們的設置。在2013之前版本,類似SiteAction等,都可以進行分組,但是2013我嘗試了一下,分組沒有成功。而且,之前版本的網站設置,都是菜單分組的形式;新版本默認都沒有分組,是否支持還有待進一步研究。
后記
以上,是幾個簡單的擴展菜單例子,主要還是修改GroupId和Location來確定菜單的顯示位置,通過Rights來限制權限,Sequence來設置排序等,更多的擴展,請參考MSDN自行嘗試。
參考MSND鏈接
1、Default Custom Action Locations and IDs
http://msdn.microsoft.com/en-us/library/bb802730.aspx
2、Custom Actions and Ribbons
http://www.matthiaseinig.de/docs/SPSF/OutputHTML/SPSF_RECIPES_CATEGORY_CUSTOMACTIONS.html
包含另外三個例子,列表設置、管理中心、人員和組添加菜單










