我创建从中本身从基本的团队网站模板创建一个基本的网站网站模板。现在我想用该网站模板创建它所以它的作用就像一个全局模板网络之外。

例如,我想我的新模板出现在由get-spwebtemplate所示的模板列表或“STP”文件复制到测试系统,并使用附带的模板创建有一个新的站点。

时,可能吗?如果不能,有什么SharePoint的正确方法是什么?

(使用SharePoint 2010服务器RC)

谢谢!

有帮助吗?

解决方案

我相信我知道现在该怎么做。我将不胜感激任何人在权衡“正确”的方式做到这一点,因为这个过程似乎有点不可思议。

使用UI,您可以使用网站集内的股票模板创建网页,并通过添加件到它,并移除事情你不想定制。然后,在网络中选择您希望作为模板来使用,作为管理员,选择“网站设置”,然后“保存站点作为模板”,然后可在指定的文件名,友好名称和描述性文本。这样做可以把结果模板到数据库中明显,并且创建了住在“解决方案”名单也将网站设置页上的参考。 (如果您访问“解决方案”列表中,您可以点击模板,并将其保存为,然后可以上传到另一个站点本地文件,这是有帮助的)。

它相当知名的,你可以通过添加一个新的Web到网站的网页集合,它看起来像这样在代码中创建一个网站:

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的名称,但要明确,这是为我工作的顺序。我很想听听,这是madness--请让我知道的东西更优雅:

        // 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!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top