我使用“网站设置”将“网站另存为模板”,然后使用该自定义网站模板创建几个网站(或者我应该将其称为解决方案?)
如何让我的C#找出从这个自定义网站模板创建的网站?
请注意,无论网站是否是使用此自定义模板创建的,SPWeb的.WebTemplate,.WebTemplateId和.Configuration都会分别返回“STS”,1和1。我认为那是因为他们报告了基础SharePoint开箱即用的模板。
提前致谢。
答案 0 :(得分: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集合中获取自定义模板名称的简单案例。
答案 1 :(得分:0)
来自http://www.go4sharepoint.com/Forum/determine-site-template-site-11323.aspx
您可以使用WebTemplate和Configuration的组合 的性质 SPWeb对象,以找出最初构建网站的模板 从。 WebTemplate将包含类似“STS”的名称 12个hive Template / sitetemplates目录中的子目录 包含网站定义。配置将对应于 该子目录中onet.xml内的配置ID。不过那里 有几个问题。
这是一个与SharePoint 2007有关的参考,但我认为核心概念仍然适用,除了对“12”配置单元的任何引用外,应该引用“14”配置单元。
答案 2 :(得分:0)
要了解发生的情况,您需要了解网站定义和网络模板之间SharePoint的差异:
虽然经常互换使用,但它们是不同的,并且在SharePoint中的处理方式不同。站点定义,无论是开箱即用还是自定义,都存在于14 hive \ TEMPLATE \ SiteTemplates中。另一方面,Web模板将站点定义实例的自定义保存到.stp或.wsp文件,这允许该站点在其他站点实例中进行复制。
所以,这是真正的问题:甚至微软也对网站定义和网页模板之间的区别感到困惑。因为当他们命名WebTemplate属性时,他们意味着站点定义,而不是Web模板。
请注意MSDN所说的内容:
通过将网站另存为模板来创建自定义网站模板时 然后从该模板WebTemplate创建一个新站点 property包含 网站定义的名称 自定义模板派生,而不是自定义模板的名称。因此如果 用于创建自定义模板的网站本身已创建 从标准团队网站定义,WebTemplate属性 从新模板创建的所有网站都将返回“STS”
通过将网站另存为模板来创建网站模板时 然后从该模板创建一个站点,即Configuration属性 包含网站定义配置的ID 网站模板派生。
(强调我的)
这支持您在问题中发现的内容。那么如何确定用于创建网站的自定义Web模板?我不确定这是可能的。因为如果可能的话,我希望MSDN能够提供另外一两句话,告诉他们如何完成他们刚刚解释过的这些属性不能做的事情。此外,在搜索时,我已经发现这个问题几次,但从来没有一个令人满意的答案。