Я считаю, что знаю, как это сделать сейчас. Я был бы признателен, если бы кто-нибудь взвесил «правильный» способ сделать это, потому что этот процесс кажется немного странным.
Используя пользовательский интерфейс, вы можете создать веб-сайт с использованием шаблона запаса в семействе сайтов и настроить его, добавив в него кусочки и удалив ненужные вещи. Затем, выбрав веб-сайт, который вы хотите использовать в качестве шаблона, в качестве администратора, выберите «Настройки сайта», а затем «Сохранить сайт как шаблон», где вы можете назначить имя файла, дружественное имя и описательный текст. Выполнение этого помещает полученный шаблон в базу данных, очевидно, и создает ссылку, которая находится в списке «Решения» также на странице «Настройки сайта». (Если вы посетите список «Решения», вы можете щелкнуть по шаблону и сохранить его в виде локального файла, который затем может быть загружен на другой сайт, что полезно).
Это достаточно хорошо известно, что вы можете создать сайт в коде путем добавления нового Интернет для сбора веб-сайта, который выглядит следующим образом:
SPWeb newWeb = subSite.Webs.Add(
"pathtoweb",
"Title of New Web",
"Web Description",
1033,
template,
false, false);
где «шаблон» здесь экземпляр из SPWebTemplate, который вы хотите использовать. Если это один из шаблонов запаса, вы можете обычно ссылаться на них по имени, например, «STS # 0» и т. Д. Вместо приведенной здесь ссылки на шаблон. Возникает вопрос: как получить имя настраиваемого шаблона, чтобы использовать его в вызове API.
Чтобы найти «имя» шаблон, который был создан, я использовал PowerShell как этот
$x = get-spsite http://machine/managedpath/sitecollectionname
$x.GetWebTemplates(1033)
, которые сбрасывали все шаблоны на этом дочернем и включен мои измененные шаблоны в конце с не очень удобно имена, которые я копировал и вставлял в свою программу на C#.
Я не изучал все перестановки здесь, например, вы, вероятно, можете просто использовать имя GUID в вызове .Add, но чтобы быть явным, это последовательность, которая сработала для меня. Я хотел бы услышать, что это безумие - пожалуйста, дайте мне знать что-то более элегантное:
// or any of the other hundred ways to do this...
SPSite s = new SPSite("your url here");
SPWeb subSite = s.RootWeb;
// 1033 is the locale id for English
SPWebTemplateCollection wtc = s.GetWebTemplates(1033);
// use the name for the index
SPWebTemplate template =
wtc["{8925048C-DF71-guidguidguidguid}#MyTemplate"];
SPWeb newWeb = subSite.Webs.Add(
"pathtoweb",
"Title of New Web",
"Web Description",
1033,
template,
false, false);
SharePoint!
Там есть RC для SharePoint 2010? – Flo