Создание нового сайта sharepoint 2010 под родительским сайтом с помощью моего пользовательского шаблона Prograically с использованием Visual Studio 2010 - PullRequest
0 голосов
/ 18 сентября 2010

У меня есть родительский веб-сайт, на котором я хочу создавать дочерние сайты на лету, используя Visual Studio 2010.

Дочерние сайты, которые я хочу создать, имеют общую структуру (в списках и пользовательских списках).

Итак, я сохранил шаблон в sharepoint 2010, он становится wsp и попадает в галерею.

Теперь, как мне использовать этот шаблон, скажем, mytemplate.wsp, для создания сайта в visual studio.

Я попробовал это

с использованием (сайт SPSite = новый SPSite ("http://infml01132:5566/sites/VRND"))

        {

            using (SPWeb web = site.OpenWeb())

            {



                SPWebTemplateCollection myTemplates = site.GetCustomWebTemplates(Convert .ToUInt32(web.Locale.LCID));

                //SPWebTemplateCollection temlates1 = site.GetCustomWebTemplates(1033);

                //SPWebTemplateCollection temlates = site.GetWebTemplates(1033);

                //SPCustomWebTemplate

                SPWebTemplate subsitetemplate = myTemplates["vrndtmpl" ];



                web.Webs.Add("subsite1" , "rnd subsite1" , "subsite description changed" , Convert .ToUInt16(1033), subsitetemplate, false , false );

            }

        }

Но я не могу получить свой шаблон в коллекции mytemplates.

Спасибо

1 Ответ

1 голос
/ 18 сентября 2010

Мы используем этот код для получения шаблона сайта по его имени:

private SPWebTemplate GetSiteTemplate(SPSite site, string templateName, int lcid)
{
    foreach (SPWebTemplate webTemplate in site.GetWebTemplates(lcid))
    {
        if (webTemplate.Name.ToLower().Contains(templateName.ToLower()))
        {
            return webTemplate;
        }
    }
    return null;
}

Это 100% работает.Итак, в вашем случае вы должны написать:

using (SPSite site = new SPSite ("http://infml01132:5566/sites/VRND"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPWebTemplate subsitetemplate = GetSiteTemplate(site, "vrndtmpl", 1033);
        web.Webs.Add("subsite1" , "rnd subsite1" , "subsite description changed" , uint(1033), subsitetemplate, false , false);
     }
}

Также, пожалуйста, убедитесь, что вы развернули шаблон вашего сайта в каталоге SiteTemplates, а соответствующий файл webtemp.xml в <14 hive> \ TEMPLATE \ 1033 \ XML или развернул его с помощью функции, как описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...