Feature Stapling In SharePoint 2010

Referred URL - http://blogs.msdn.com/b/kunal_mukherjee/archive/2011/01/11/feature-stapling-in-sharepoint-2010.aspx

Feature Stapling is the great way if the site definition is already in use (and sites have been created). Feature Stapling has two features. A "Stapler" feature which staples another feature to the site definition and the"Staplee" feature which will be stapled.

If you have created a site definition, there are several ways of using features with it. These are:-

  1. Create a site from the definition and subsequently deploy your features to the site.
  2. Include the features in the site definition (onet.xml) before using it to create sites.
  3. Use feature stapling to associate your features to the site definition.

For Example suppose you want to apply a custom Theme to all of the "Publishing site" site definitions. This can be solved by creating a feature which will apply the Custom theme to the site and it can be associated with the publishing site's site definition. Or Suppose if you want to activate a custom list to all the Team sites , this can also be solved creating a feature which on activating when you create a team site the custom list gets created.

How to Create Feature stapler.

1. First we need to create the Features (Staplee) which we want install on creation of site (publishing or team site etc.). How to Create feature.

2. Create a Feature Stapler as below

<?xml version="1.0" encoding="utf-8" ?>

<Feature xmlns="http://schemas.microsoft.com/sharepoint/" Id="C384D136-79A8-48BD-AF73-C630547F4D8E" Title="ExampleStapler" Description="This feature staples the

           other feature to the Team Site definition." Scope="Farm" Hidden="False"Version="1.0.0.0" >

   <ElementManifests>
        <ElementManifest Location="Elements.xml"/>
    </ElementManifests>
</Feature>

3. Create an element xml which is nothing but where feature association takes place.In order to add element.xml we need to create a module in Visual studio 2010 and then add the element.xml

    <?xml version="1.0" encoding="utf-8" ?>

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<FeatureSiteTemplateAssociation Id="b8f334a0-1ffe-420d-b6e2-54a9faa6ba95"TemplateName="STS#0" />

<FeatureSiteTemplateAssociation Id="07cb8bd4-7004-4021-8355-48d17de287e5"TemplateName="STS#0" />

<FeatureSiteTemplateAssociation Id="90C924A7-32F7-4C19-BD4C-AF49EF0563A9"TemplateName="STS#0" />

    </Elements>

The FeatureSiteTemplateAssociationID element maps feature(The Features which we want to install on creation of Site) GUIDs to site definitions.
Feature-stapling won't affect any sites which have already been created from a site definition, only subsequent sites. The only way to do this is to activate your features individually on the site.

So Once you deploy Feature Stapler to web application level and then you create a team Site the associated(Stappled)  features will get activated.

You May Also Like

0 comments