2012-10-31 66 views
1

我已經想通過代碼隱藏(假設我有一個zip文件)來安裝包。據我瞭解,它只安裝在主數據庫上。然後,我如何將已安裝的項目轉移到Web數據庫? Cna I在Web數據庫上安裝軟件包?有沒有辦法在安裝過程中獲取物品,然後以某種方式發佈它們?達到此目的的最佳方法是什麼?通過代碼安裝sitecore包到所有目標

回答

1

除非你知道你在哪裏安裝在主項的確切根項目,最好的辦法是通過C#整個樹從發佈到masterweb

的第2.2.2節內容API食譜(PDF link)有這個片段如何做到這一點:

var master = Sitecore.Configuration.Factory.GetDatabase("master"); 
var target = Sitecore.Configuration.Factory.GetDatabase("web"); 
Sitecore.Data.Database[] targetDatabases = { target }; 
var languages = master.Languages; 
Sitecore.Publishing.PublishManager.PublishIncremental(master, targetDatabases, languages); 
+0

嗯...問題是,我並不想要整棵樹去 - 我只想要包的物品去網上。有沒有一種方法可以獲得包裝'剛剛'安裝的物品? –

3

當您創建包時,您可以從特定數據庫中選擇項目。 默認情況下,這是主人,但您也可以從核心和網絡中選擇他們。

項目將始終安裝在它們來自的相同數據庫中。

enter image description here

0

你也許可以嘗試這樣的方法。由於您已經從代號隱藏安裝軟件包,因此您可以從軟件包安裝開始併發布它們開始獲取已修改項目的列表。

Item rootItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Site.RootPath); 
List<Item> modifiedItemList = rootItem.Axes.GetDescendants(). 
     Where(item => item.Statistics.Updated >= installDateTime 
      || item.Statistics.Created >= installDateTime).ToList(); 
// add te items in the list to the publishing queue 

該解決方案有點髒,但應該解決您的問題。