2010-02-05 72 views
0

我從一個基本站點創建了一個站點模板,該站點本身是從基本團隊站點模板創建的。現在我想在創建它的網絡外部使用該網站模板,這樣它就像一個全局模板。如何引用/查找SharePoint 2010網站模板?

例如,我希望我的新模板出現在get-spwebtemplate顯示的模板列表中,或將「stp」文件複製到測試系統,並使用捆綁模板在那裏創建新站點。

這可能嗎?如果不可能,分享點的正確方法是什麼?

(使用SharePoint 2010 Server RC)

謝謝!

+1

那裏有一個用於SharePoint 2010的RC? – Flo 2010-02-08 09:09:30

回答

0

我相信我現在知道如何做到這一點。我很感激任何人都可以權衡這樣做的「正確」方式,因爲這個過程似乎有點奇怪。

使用用戶界面,您可以使用網站集中的庫存模板創建網頁,並通過向網頁集添加小塊並刪除不需要的內容來對其進行自定義。然後,選擇您希望用作模板的網頁,以管理員身份選擇「網站設置」,然後選擇「將網站另存爲模板」,然後在其中指定文件名,友好名稱和描述性文本。這樣做會將生成的模板顯着放置到數據庫中,並在「網站設置」頁面上的「解決方案」列表中創建一個引用。 (如果您訪問'解決方案'列表,您可以單擊模板並將其保存爲本地文件,然後可以將其上載到另一個站點,這很有幫助)。

它相當知名的,你可以通過添加一個新的網頁到網站的網頁集合,它看起來像這樣在代碼中創建一個網站:

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#程序中的名稱。

我沒有在這裏探索所有的排列,例如,你可能只需要在.Add調用中使用基於GUID的名字,但要明確,這是我的工作順序。我很想聽聽這是瘋狂的 - 請讓我知道更優雅的東西:

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

相關問題