Site templates provides a simple and quick way of provisioning new sites with common lists and library's.
However, in order to programmatically create a site from a template it is necessary to know the internal name used to reference the web template.
The format of the internal name for a custom web template is a Guid followed by a hash followed by the template name. You can find the name for the template using either PowerShell or C#.
PowerShell
The following PowerShell can be used to output the full template name for a given template.
$site.GetWebTemplates(1033) | Where-Object {$_.name -like "*[TemplateName]*"} | Select Name
The following PowerShell can be used to output all the full templates within the site collection.
C#
The following C# can be used to find the desired web template given the templates name.
{
string TemplateName = string.Empty;
using (var site = new SPSite(SiteUrl))
{
using (var web = site.OpenWeb())
{
SPWebTemplateCollection templates = web.Site.GetWebTemplates(1033);
foreach (SPWebTemplate template in templates)
{
string[] templateInfo = template.Name.Split('#');
string CustomWebTemplateName = templateInfo[1];
if (CustomWebTemplateName.ToLower().Equals(WebTemplateName.ToLower()))
{
TemplateName = template.Name;
break;
}
}
}
}
return TemplateName;
}
Once you have the full template name for the template you can then using it to programmatically create a site. Click here to see how to programmatically create a site using a web template.
Use Regex.Is math with ignorecase , that will make you code more nicer
ReplyDelete