我从一个基本站点创建了一个站点模板,该站点本身是从基本团队站点模板创建的。现在我想在创建它的网络外部使用该网站模板,这样它就像一个全局模板。如何引用/查找SharePoint 2010网站模板?
例如,我希望我的新模板出现在get-spwebtemplate显示的模板列表中,或将“stp”文件复制到测试系统,并使用捆绑模板在那里创建新站点。
这可能吗?如果不可能,分享点的正确方法是什么?
(使用SharePoint 2010 Server RC)
谢谢!
我从一个基本站点创建了一个站点模板,该站点本身是从基本团队站点模板创建的。现在我想在创建它的网络外部使用该网站模板,这样它就像一个全局模板。如何引用/查找SharePoint 2010网站模板?
例如,我希望我的新模板出现在get-spwebtemplate显示的模板列表中,或将“stp”文件复制到测试系统,并使用捆绑模板在那里创建新站点。
这可能吗?如果不可能,分享点的正确方法是什么?
(使用SharePoint 2010 Server RC)
谢谢!
我相信我现在知道如何做到这一点。我很感激任何人都可以权衡这样做的“正确”方式,因为这个过程似乎有点奇怪。
使用用户界面,您可以使用网站集中的库存模板创建网页,并通过向网页集添加小块并删除不需要的内容来对其进行自定义。然后,选择您希望用作模板的网页,以管理员身份选择“网站设置”,然后选择“将网站另存为模板”,然后在其中指定文件名,友好名称和描述性文本。这样做会将生成的模板显着放置到数据库中,并在“网站设置”页面上的“解决方案”列表中创建一个引用。 (如果您访问'解决方案'列表,您可以单击模板并将其保存为本地文件,然后可以将其上载到另一个站点,这很有帮助)。
它相当知名的,你可以通过添加一个新的网页到网站的网页集合,它看起来像这样在代码中创建一个网站:
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#程序中的名称。
我没有在这里探索所有的排列,例如,你可能只需要在.Add调用中使用基于GUID的名字,但要明确,这是我的工作顺序。我很想听听这是疯狂的 - 请让我知道更优雅的东西:
// 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!
那里有一个用于SharePoint 2010的RC? – Flo 2010-02-08 09:09:30