2013-03-06 100 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

相關問題