Window SharePoint Service 3.0的Features可以看作是一些开启或者关闭的插件,每个插件中包含一些数据或者操作,这样就可以将网站定制简化为若干插件的组合。比如说,可以通过管理界面激活或者关闭一些Feature来实现修改网站模板的效果。
Features可用于确定自定义代码运行的语义环境;可以提供安装和卸载,激活或者关闭方式的插件模式;可以存放一些需要的属性;可以存放一些可以安全运行的代码。Features实际上提供了一种用于分发部署的SharePoint解决方案的框架。
Features的基本概念
1.Features文件结构
在安装目录下, C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES该路径下每一个文件夹对应着一个Feature,每个文件夹中都有一个Feature.xml文件,这个文件定义了此Feature的基本属性,并指明了被包含近来的资源文件。被此Feature所使用的其它文件可同样一起包含在这个字文件夹中,比如aspx,html,xsn,resx,dll文件,等。
2.Features的使用范围的层次
站点级,站点集级,Web应用程序级(即虚拟服务器级),服务器场级。
站点(集)级的Features包括可以应用到站点集或一个单独站点特性,比如列表模板,相关文件,内容类型;Web应用程序级Features可以包含虚拟服务器程序集以及服务器管理链接;服务器场级的Features基本上都是默认激活的。
3.Features的依赖关系
Features是可以定义依赖关系的,因此有的Features的激活必须以其它Features的激活为前提。同级的Features是可以建立依赖关系的,而对于不同级的,则要求由固定的方向。比如说,一个站点级的可以依赖于一个站点集级的Feature,但是反过来则是不可以的。
Feature.xml的文件结构
Feature.xml文件定义了一个Feature文件的属性以及其相关的程序集,文件,依赖关系,等等。
各个节点的定义如下:
"Feature":包括ID,Title,DefaultResourceFile,Description等属性,为整个文件的根元素;
"ActivationDependency":包括FeatureID,Title,Description,Url等,用于定义依赖关系;
"ElementManifest":包括Location属性,用于定义根元素说明文件的相对路径;
"ElementFile":包括Location属性,用于定义根元素文件的相对路径。
Features实战
首先,在C:"Program Files"Common Files"Microsoft Shared"web server extensions"12"TEMPLATE"FEATURES" 路径下,创建一个名为”CustomFeature” 的目录,在这个目录下创建Feature.xml 文件,其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="EC27054B-9259-4bb2-94CF-29AD6EF7FD5D"
Title="Light Up"
Description="This example shows how you can light up various areas in WSS3.0"
Version="1.0.0.0"
Scope="Site"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location=" LightUp.xml" />
</ElementManifests>
</Feature>
其中Id是Guid编码,使用D:"Program Files"Microsoft Visual Studio 8"Common7"Tools路径下的guidgen.exe命令,或者从vs2005中直接获取。
其次,创建LightUp.xml文件。这个例子,为文档库增加自定义动作链接,这些链接会指向统一的页面,而这个页面可以显示执行它的动作。
<?xml version="1.0" encoding="utf-8"?>
<Elements
xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="CustomFeature.DocLibNewToolBar"
RegistrationType="List"
RegistrationId="101"
GroupId="NewMenu"
Rights="ManagePermissions"
Location="Microsoft.SharePoint.StandardMenu"
Title="MY DOCLIB NEW MENU TOOLBAR BUTTON"
Sequence="1000" >
<UrlAction Url="/_layouts/CutomFeatureHello.aspx?NewMenu"/>
</CustomAction>
<CustomAction
Id="CustomFeature.DocLibUploadToolbar"
RegistrationType="List"
RegistrationId="101"
GroupId="UploadMenu"
Rights="ManagePermissions"
Location="Microsoft.SharePoint.StandardMenu"
Title="MY DOCLIB UPLOAD MENU TOOLBAR BUTTON"
Sequence="1000" >
<UrlAction Url="/_layouts/CutomFeatureHello.aspx?UploadMenu"/>
</CustomAction>
<CustomAction
Id="CustomFeature.DocLibActionsToolBar"
RegistrationType="List"
RegistrationId="101"
GroupId="ActionsMenu"
Rights="ManagePermissions"
Location="Microsoft.SharePoint.StandardMenu"
Title="MY DOCLIB Actions MENU TOOLBAR BUTTON"
Sequence="1000" >
<UrlAction Url="/_layouts/CutomFeatureHello.aspx?ActionsMenu"/>
</CustomAction>
<CustomAction
Id="CustomFeature.SiteActionsToolBar"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Title="MY SITE ACTIONS BUTTON"
Sequence="1000" >
<UrlAction Url="/_layouts/CutomFeatureHello.aspx?SiteActions"/>
</CustomAction>
<CustomAction
Id="CustomFeature.SiteSettings"
GroupId="Customization"
Location="Microsoft.SharePoint.SiteSettings"
Title="MY SITE SETTINGS LINK"
Sequence="1000" >
<UrlAction Url="/_layouts/CutomFeatureHello.aspx?Customization"/>
</CustomAction>
</Elements>
再次,在C:"Program Files"Common Files"Microsoft Shared"web server extensions"12"TEMPLATE"LAYOUTS路径下创建CutomFeatureHello.aspx,其内容为:
<%@ Page Language="C#" Inherits="System.Web.UI.Page" %>
<%
string ClientQuery = Page.ClientQueryString;
if(ClientQuery == "NewMenu")
{
Response.Write("New Menu");
}
else if(ClientQuery == "UploadMenu")
{
Response.Write("UploadMenu");
}
else if(ClientQuery == "ActionsMenu")
{
Response.Write("ActionsMenu");
}
else if(ClientQuery == "SettingMenu")
{
Response.Write("SettingMenu");
}
else if(ClientQuery == "SiteActions")
{
Response.Write("SiteActions");
}
else if(ClientQuery == "Customization")
{
Response.Write("Customization");
}
%>
最后一步,安装并激活Feature
Stsadm –o installfeature –filename CustomFeature"Feature.xml
Stsadm –o activatefeature –filename CustomFeature"Feature.xml –url
iisreset
效果如下: