SharePoint 2013 自定义扩展菜单
在对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=""
Title="博客园-霖雨">
<UrlAction Url="http://www.cnblogs.com/jianyus"/>
</CustomAction>
</Elements>
例二 扩展SiteAction(网站设置)菜单
扩展前截图

扩展后截图

扩展XML
<CustomAction
Id="MyTopMenuLink"
Location="Microsoft.SharePoint.StandardMenu"
GroupId="SiteActions"
Sequence=""
Title="博客园-霖雨">
<UrlAction Url="http://www.cnblogs.com/jianyus"/>
</CustomAction>
例三 扩展网站设置菜单
扩展后截图

扩展XML
<CustomAction
Id="MyTopMenuLink"
Location="Microsoft.SharePoint.SiteSettings"
GroupId="Customization"
Sequence=""
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=""
Sequence=""
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=""
Sequence=""
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="" /> <!-- Custom Action in Custom Action Group -->
<CustomAction
Id="CustomAction1"
Description="自定义操作"
Title="自定义操作一"
GroupId="CustomActionGroup"
Location="Microsoft.SharePoint.SiteSettings"
Rights="ManageWeb"
RequireSiteAdministrator="FALSE"
Sequence="">
<UrlAction Url="~sitecollection/_layouts/CustomAction1.aspx" />
</CustomAction> <CustomAction
Id="CustomAction2"
Description="自定义操作"
Title="自定义操作二"
GroupId="CustomActionGroup"
Location="Microsoft.SharePoint.SiteSettings"
Rights="ManageWeb"
RequireSiteAdministrator="FALSE"
Sequence="">
<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
包含另外三个例子,列表设置、管理中心、人员和组添加菜单
SharePoint 2013 自定义扩展菜单的更多相关文章
- SharePoint 2013 自定义扩展菜单(二)
接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...
- SharePoint 2013:自定义ECB菜单项的添加
本文分别介绍了两种常用的添加ECB菜单项的方式. 声明式创建 这也是微软最佳实践推荐的方式.在VS中创建一个SharePoint空解决方案,并添加一个“空元素”类型的SPI. 在Elements.xm ...
- 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询
前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...
- SharePoint 2013 添加Ribbon菜单
原文:SharePoint 2013 添加Ribbon菜单 前言:今天,我们尝试一下添加SharePoint2013的Ribbon菜单,这个Ribbon菜单是由XML定义,JavaScript脚本来实 ...
- 【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
//http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html 由于项目 ...
- [FBA]SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
//http://tech.ddvip.com/2014-05/1401197453210723.html 由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取 ...
- SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用
由于项目的需要,登录SharePoint Application的用户将从一个统一平台中获取,而不是从Domain中获取,所以需要对SharePoint Application的身份验证(Claims ...
- SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...
- sharepoint 2013 自定义列表eventhandle权限控制
记录一下如何在sharepoint server 2013自定义列表中,使用eventhandle控制自定义列表custom list的条目item权限. ///<summary> /// ...
随机推荐
- IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...
- Entity Framework Code First关系映射约定
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
- Activity四种启动模式
转载博客:http://blog.csdn.net/shinay/article/details/7898492 Activity启动方式有四种,分别是:standardsingleTopsingle ...
- 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- Detach Volume 操作 - 每天5分钟玩转 OpenStack(55)
上一节我们成功地通过 attach 操作为 instance 添加了 volume,而与之相对的操作是 detach,就是将 volume 从 instance 上卸载下来. 下图是 Detach 操 ...
- 【基础进阶】URL详解与URL编码
作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很 ...
- iOS开发之使用XMPPFramework实现即时通信(一)
关于XMPP的理论介绍在本篇博客中就不做赘述了,如何在我们之前的微信中加入XMPP协议来实现通信呢?下面将会介绍一下XMPP的基本的知识,让我们的微信可以实现互联通信.要做的准备工作是要有服务器支持X ...
- 基础知识javascript--事件
群里有一个小伙伴在处理事件监听函数的时候,遇到了一点问题,正好我比较空闲,于是帮他指出了代码中的问题,顺便整理一下,方便以后遇到类似问题的伙伴们有一个参考. 这是一个很简单的问题,对于基础知识比较杂实 ...
- 小菜学习设计模式(三)—工厂方法(Factory Method)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 【十大经典数据挖掘算法】CART
[十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 前言 分类与回归树(Class ...