2013-03-06 101 views
1

我使用“网站设置”将“网站保存为模板”,然后使用该自定义网站模板创建一对网站(或者我应该将它称为解决方案吗? )SharePoint - 确定网站创建的自定义网站模板从

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

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

在此先感谢。

+1

另外,这个问题可能实际上更适合于SharePoint StackExchange站点:http://sharepoint.stackexchange.com/ – 2013-03-06 03:10:23

+0

是的。我首先在那里问过,但它仍然只有2种观点,我认为他们都是我的。我想我会在这里尝试我的运气,因为这是一个编程问题。 – Swanny 2013-03-06 03:29:23

+0

更正。显然,我发布到SharePoint元网站。现在我知道元位的含义。 – Swanny 2013-03-06 20:47:16

回答

0

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

可以使用WebTemplate和配置的 的SPWeb对象 属性的组合,找出哪个模板网站始建 从。 WebTemplate将包含类似于“STS”的东西,其名称为 ,该名称包含网站定义的12配置单元模板/网站模板目录 中的子目录。该配置将对应于该子目录中onet.xml中的 配置ID。然而 是一个与此相关的问题。

这是与SharePoint 2007有关的参考,但我相信核心概念仍然适用,除了对“12”配置单元的引用,应该参考“14”配置单元。

+0

是的,但是这些属性的值是相同的,无论该网站是否是从自定义网站模板创建的。其他网站创建的空白网站似乎符合“STS”分类。 STS目录中肯定没有自定义网站模板的标志。我认为问题的一部分是“另存为网站模板”实际上保存为解决方案,而不是网站模板,因此网站模板可能与此无关。 – Swanny 2013-03-06 03:27:07

0

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

虽然经常互换使用,但是不同的,并在SharePoint中以不同方式处理。无论是开箱即用还是自定义,“网站定义”都位于14个配置单元\ TEMPLATE \ SiteTemplates中。另一方面,Web模板会将自定义项保存到站点定义的实例中,以便将.stp或.wsp文件保存,该文件允许将该站点复制到其他站点实例中。

因此,这是一个真正的问题:即使微软在网站定义和网页模板之间的区别也会感到困惑。因为当他们命名WebTemplate属性时,它们表示网站定义,而不是Web模板。

注意什么MSDN说:

SPWeb.WebTemplate Property

当您保存网站作为模板 创建自定义网站模板,然后从该模板创建新网站,该WebTemplate 属性包含网站定义的名称 自定义模板从中导出,而不是自定义模板的名称。因此,如果 是用于创建是自找苦吃从标准工作组网站定义 自定义模板,中 的WebTemplate属性,从新的模板创建将返回“STS”

SPWeb.Configuration Property

所有网站的网站

当您保存网站作为模板,然后 从模板配置属性 创建网站创建网站模板包含网站定义配置的ID从中 网站模板派生

(重点煤矿)

这支持你在你的问题发现了什么。那么您如何确定自定义Web模板用于创建网站?我不确定这是可能的。因为如果可能的话,我希望MSDN能够提供另外一两句话,告诉他们如何完成他们刚刚解释过的这些属性不做的事情。另外,在四处搜寻时,我发现这个问题有几次,但从来没有一个令人满意的答案。

+0

谢谢。我感受到了这种情况。我想我可以像添加特定名称的隐藏列表一样添加一个artefact,然后搜索它。 – Swanny 2013-03-06 20:07:02

+0

我一直在思考这些问题。即使这是可能的,但显然如此深奥,以至于您可能会花更多时间找到答案,而不是实施自定义解决方法。 – 2013-03-06 20:55:46

1

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

另外,如果您导入模板到Visual Studio中,你可以声明一个条目添加到网页的属性包,像这样:

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

它然后从AllProperties获取自定义模板名称的简单情况在您的代码中收集SPWeb对象。

+0

是的。这就是我最终做的。我从来没有时间回去调试SP,找出为什么会有差异,但它会很高兴知道。 – Swanny 2014-09-05 05:14:25

相关问题