Here is a piece of code that I know you will find useful one day. Basically, you supply it with an existing site definition, say “STS#1”, and this will then create a site for you, based on the supplied site definition, at the URL you asked for.

Here goes –

public static bool CreateSite(
    string parentSiteURL, string siteURLRequested, 
    string siteTitle, string siteTemplateName)
{
    bool returnCondition = false; // Assume failure.

    const Int32 LOCALE_ID_ENGLISH = 1033;

    using (SPSite siteCollection = new SPSite(parentSiteURL))
    {
        SPWeb parentWeb = siteCollection.OpenWeb();
        SPWebTemplateCollection Templates = 
            siteCollection.GetWebTemplates(Convert.ToUInt32(LOCALE_ID_ENGLISH));
        SPWebTemplate siteTemplate = Templates[siteTemplateName];
        if (parentWeb.Webs[siteURLRequested].Exists)
        {
            parentWeb.Webs.Delete(siteURLRequested);
        }

        parentWeb.Webs.Add(
            siteURLRequested, 
            siteTitle, 
            "", 
            Convert.ToUInt32(LOCALE_ID_ENGLISH), 
            siteTemplate, 
            false, false);

        // All is good? 
        returnCondition = true;
    }

    return returnCondition;
}
Advertisements