Creare un sito programmaticamene partendo da un custom template
In SharePoint Server 2010 i siti salvati come template non sono più dei file con estensione STP, ma sono delle solution (.WSP).
Le solution sono salvate in Site Actions / Site Settings / Galleries / Solutions (http://sharepoint2010/_catalogs/solu...llItems.aspx ).
Per recuperare via codice il template di sito bisogna usare il metodo GetWebTemplates dell'oggetto SPSite, questo ritorna una collection di template.
Per trovare un template specifico bisogna ciclare e confrontare il nome.
I template custom hanno il nome composto secondo questa convenzione:
ad esempio
Per creare un sito con un template in inglese (1033) salvato con nome ProjectTemplate:
Le solution sono salvate in Site Actions / Site Settings / Galleries / Solutions (http://sharepoint2010/_catalogs/solu...llItems.aspx ).
Per recuperare via codice il template di sito bisogna usare il metodo GetWebTemplates dell'oggetto SPSite, questo ritorna una collection di template.
Per trovare un template specifico bisogna ciclare e confrontare il nome.
I template custom hanno il nome composto secondo questa convenzione:
Text
{guid}#nomeTemplate
Text
{AC75BCC4-EF27-4F72-B7ED-02E5B80E123E}#ProjectTemplate
C#
//get custom template
public SPWebTemplate GetWssTemplate(uint lcid, SPSite site, string templateName)
{
//SPWebTemplateCollection templates = site.GetCustomWebTemplates(lcid);
SPWebTemplateCollection templates = site.GetWebTemplates(lcid);
SPWebTemplate template = null;
foreach (SPWebTemplate t in templates)
{
if (t.Name.EndsWith("#" + templateName
, StringComparison.InvariantCultureIgnoreCase) == true)
{
template = t;
break;
}
}
return template;
}
In SharePoint 2007 si usava il metodo GetCustomWebTemplates
Per creare un sito con un template in inglese (1033) salvato con nome ProjectTemplate:
C#
using (SPSite site = new SPSite("http;//sharepoint2010"))
{
using (SPWeb web = site.OpenWeb())
{
SPWebTemplate template = GetWssTemplate(1033, site, "ProjectTemplate");
SPWebCollection webs = web.Webs;
SPWeb newWeb = webs.Add(url, "titolo", "description", 1033, template, false, false);
}
}