1

我使用“站点设置”来“将站点另存为模板”,然后使用该自定义站点模板创建几个站点(或者我应该将其称为解决方案吗?)

如何让我的 C# 确定哪些网站是从此自定义网站模板创建的?

请注意,无论站点是否使用此自定义模板创建,SPWeb 的 .WebTemplate、.WebTemplateId 和 .Configuration 都会分别返回“STS”、1 和 1。我认为这是因为他们正在报告基础 SharePoint 开箱即用模板。

提前致谢。

4

3 回答 3

1

为什么不在网络的 PropertyBag 中添加一个条目?以“web_template_id”为键,模板的 ID 或名称作为值。您可以使用 SharePoint Designer 轻松完成此操作,并且 PropertyBag 作为 Web 模板 WSP 的一部分包含在内。

或者,如果将模板导入 Visual Studio,则可以以声明方式将条目添加到 Web 的属性包中,如下所示:

<Property Name="web_template_id" Value="SiteTemplates.TemplateName" Type="string" />

这是一个从代码中 SPWeb 对象的 AllProperties 集合中获取自定义模板名称的简单案例。

于 2014-07-17T14:33:23.463 回答
0

From http://www.go4sharepoint.com/Forum/determine-site-template-site-11323.aspx

You can use a combination of the WebTemplate and Configuration properties of the SPWeb object to find out which template the site was originally built from. The WebTemplate will contain something like "STS" which is the name of the subdirectory in the 12 hive Template/sitetemplates directory containing the site definition. The Configuration will correspond to the Configuration ID inside the onet.xml in that subdirectory. However there are a couple issues with this.

This is a reference that is pertains to SharePoint 2007, but I believe the core concepts still apply, except for any reference to the "12" hive, should refer to the "14" hive.

于 2013-03-06T03:09:21.760 回答
0

要了解发生了什么,您需要了解 SharePoint 中网站定义和 Web 模板之间的区别:

虽然经常互换使用,但它们是不同的,并且在 SharePoint 中的处理方式也不同。站点定义,无论是开箱即用的还是自定义的,都存在于 14 个 hive\TEMPLATE\SiteTemplates 中。另一方面,Web 模板将站点定义实例的自定义设置保存到 .stp 或 .wsp 文件中,从而允许在其他站点实例中复制该站点。

所以,真正的问题是:即使是微软也对站点定义和 Web 模板之间的区别感到困惑。因为当他们命名 WebTemplate 属性时,他们指的是站点定义,而不是 Web 模板。

请注意 MSDN 所说的:

SPWeb.WebTemplate 属性

当您通过将网站另存为模板来创建自定义网站模板,然后从该模板创建新网站时,WebTemplate 属性包含派生自定义模板网站定义的名称,而不是自定义模板的名称。因此,如果用于创建自定义模板的网站本身是根据标准团队网站定义创建的,则从新模板创建的所有网站的 WebTemplate 属性将返回“STS”

SPWeb.Configuration 属性

当您通过将站点另存为模板来创建站点模板,然后从该模板创建站点时,配置属性 包含站点模板派生的站点定义配置的 ID 。

(强调我的)

这支持您在问题中发现的内容。那么,您如何确定用于创建站点的自定义 Web 模板呢?我不确定这是否可能。因为如果可能的话,我希望 MSDN 会再提供一两句话来说明如何完成他们刚刚解释过的这些属性不具备的功能。另外,在搜索中,我发现这个问题被问了几次,但从来没有一个令人满意的答案。

于 2013-03-06T16:41:07.493 回答