Feature Stapling wird genutzt, um z.B. bei der Erstellung einer MySite direkt eine neue Masterpage zuzuweisen.
Feature.xml
<?xml version="1.0" encoding="utf-8"?> <Feature Id="F9AB6989-A3A8-4df2-8254-12987EE4FAA5" Title="SiteStaplerFeature" Scope="Farm" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="Elements.xml" /> </ElementManifests> </Feature>
Elements.xml
<?xml version="1.0" encoding="utf-8"?> <Elements Id="F52F4322-4086-4341-8B88-4368779C1E37" xmlns="http://schemas.microsoft.com/sharepoint/" > <FeatureSiteTemplateAssociation Id="f6924d36-2fa8-4f0b-b16d-06b7250180fa" TemplateName="SPSPERS#0"/> <FeatureSiteTemplateAssociation Id="6ED78B2A-201F-4511-BACE-F7B4B0CB75A8" TemplateName="SPSPERS#0"/> <FeatureSiteTemplateAssociation Id="14872A49-4124-4a91-BA61-EB0BD5155BF2" TemplateName="SPSPERS#0"/> </Elements>
Diese Angaben aktivieren:
- Publishing Feature
- Feature zum Verteilen der neuen Masterpage
- Anlegen einer neuen Seite mit Webpart
TemplateName="SPSPERS#0" steht in diesem Fall für die MySite
MySite Masterpage Feature
Feature.xml
<?xml version="1.0" encoding="utf-8"?> <Feature Id="6ED78B2A-201F-4511-BACE-F7B4B0CB75A8" Title="MySiteMasterPage" Scope="Site" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/" ReceiverAssembly="MyAssembly.MyNameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=282025704650b387" ReceiverClass="MyAssembly.MyNameSpace.FeatureRecieverClass"> <ElementManifests> <ElementManifest Location="MySiteMasterPage\Module.xml" /> <ElementFile Location="MySiteMasterPage\MySite.master" /> </ElementManifests> </Feature>
Elements.xml
<?xml version="1.0" encoding="utf-8"?> <Elements Id="D8789972-4B6C-49b2-9A34-431BD5C296F3" xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="MySiteMasterPage" List="116" Url="_catalogs/masterpage"> <File Path="MySiteMasterPage\MySite.master" Url="MySite.master" Type="GhostableInLibrary" /> </Module> </Elements>
Codebehind/FeatureReceiver
public override void Featureactivating(SPFeatureReceiverProperties properties) {
SPSite site = (SPSite)properties.Feature.Parent;
SPWeb web = site.OpenWeb();
web.CustomMasterUrl = "/_catalogs/masterpage/MySite.master";
web.Update();
}
Feature Dependencies
Feature Dependencies werden benutzt, um weitere Features zu aktivieren die benötigt werden, dies ist z.B. notwendig für das Publishing Feature!
Feature.xml
<Feature xmlns=http://schemas.microsoft.com/sharepoint/ Id="14872A49-4124-4a91-BA61-EB0BD5155BF2" Scope="Web" Hidden="False" Title="MySitePage" Description="Deploys a custom page with a webpart."> <ElementManifests> <ElementManifest Location="MySitePages/elements.xml" /> </ElementManifests> <ActivationDependencies> <ActivationDependency FeatureId="22A9EF51-737B-4ff2-9346-694633FE4416" /> <ActivationDependency FeatureId="A392DA98-270B-4e85-9769-04C0FDE267AA" /> <ActivationDependency FeatureId="AEBC918D-B20F-4a11-A1DB-9ED84D79C87E" /> <ActivationDependency FeatureId="89E0306D-453B-4ec5-8D68-42067CDBF98E" /> <ActivationDependency FeatureId="D3F51BE2-38A8-4e44-BA84-940D35BE1566" /> </ActivationDependencies> </Feature>
Zusätzlich verteilt dieses Feature noch eine Seite in die Pages Library und richtet darauf ein Core Results Webpart ein:
Elements.xml
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="Pages" List="850" Url="Pages"> <File Name="SearchResult.aspx" Url="SearchResult.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" > <AllUsersWebPart WebPartZoneID="Header" WebPartOrder="1"> <![CDATA[ <webParts> <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> <metaData> <type name="Microsoft.Office.Server.Search.WebControls.PeopleCoreResultsWebPart, Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <importErrorMessage>Cannot import this Web Part.</importErrorMessage> </metaData> <data> <properties> <property name="CacheXslStorage" type="bool">True</property> <property name="Default" type="string" /> <property name="ChromeState" type="chromestate">Normal</property> </properties> </data> </webPart> </webParts> ]]> </AllUsersWebPart> </File> </Module> </Elements>