Make your custom theme a default theme for present site and it’s sub-sites.
Following images show the OOB site themes :-
Suppose if would like to apply a new site theme when a site or sub-site is created then you need to follow the following steps:-
1. Create a new feature and set the scope as “ApplyMyTheme” scope and set the scope as Web. Attach the Event Receiver
1: <?xml version="1.0" encoding="utf-8"?>
2: <Feature Id="072b6290-252a-466d-9150-397d98c8f1c7"
3: Title="ApplyMyThemes"
4: Description="This feature will apply the custom them to the present site and site created in the future."
5: Version="12.0.0.0"
6: Hidden="FALSE"
7: Scope="Web"
8: DefaultResourceFile="core"
9: ReceiverAssembly="WSPBuilderProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cde4cc014c71f228"
10: ReceiverClass="WSPBuilderProject1.ApplyMyThemes"
11: xmlns="https://schemas.microsoft.com/sharepoint/">
12: </Feature>
2. In the event receiver apply the new site theme. Following is the sample code :-
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace WSPBuilderProject1
{
class ApplyMyThemes : SPFeatureReceiver
{
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb web = (SPWeb)properties.Feature.Parent;
if(web.Url.Contains("7000"))
{
web.ApplyTheme("Belltown");
web.Update();
}
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
}
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{
}
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{
}
}
}
3. Create a stapler feature to attach the web feature with the Site definitions feature at “Farm”
1: <?xml version="1.0" encoding="utf-8"?>
2: <Feature Id="84379d76-8f8b-4259-a02e-f6047b88f6d4"
3: Title="Stappler"
4: Description="Description for Stappler"
5: Version="12.0.0.0"
6: Hidden="FALSE"
7: Scope="Farm"
8: DefaultResourceFile="core"
9: xmlns="https://schemas.microsoft.com/sharepoint/">
10: <ElementManifests>
11: <ElementManifest Location="elements.xml"/>
12: </ElementManifests>
13: </Feature>
14:
4. Staple the feature with the site definitions : -
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
3: <FeatureSiteTemplateAssociation Id="072b6290-252a-466d-9150-397d98c8f1c7" TemplateName="STS#0" />
4: <FeatureSiteTemplateAssociation Id="072b6290-252a-466d-9150-397d98c8f1c7" TemplateName="STS#1" />
5: <FeatureSiteTemplateAssociation Id="072b6290-252a-466d-9150-397d98c8f1c7" TemplateName="STS#2" />
6: </Elements>