2014-10-28 120 views
1

我正在試圖找到爲uCommerce網站生成網站地圖XML的最簡單方法。我正在使用它與Sitecore,但我認爲任何適用於Umbraco的解決方案也可以作爲一個開始。如何生成uCommerce網站地圖XML

我最後的手段是抓取網站(或使用工具來做),但我希望能夠以編程方式觸發它(我們的產品通過遠程提要進行更新,所以我無法掛鉤保存管道更新站點地圖),並做到這一點沒有每次我們更新產品時爬行網站。

我可以爲Sitecore找到許多Sitemap生成器,但uCommerce產品位於主內容樹之外,因此它們不包含uCommerce產品和類別。

有沒有一種簡單的方法來生成一個uCommerce站點地圖沒有自定義代碼/使用爬網?

+0

您uCommerce產品和鏈接添加它時,你說你的產品是通過遠程更新的飼料,你的意思是他們從來沒有實際添加到Sitecore作爲項目?我只問,因爲你說你「不能掛鉤到任何保存管道」,但如果該項目正在保存,那麼你應該可以這樣做,或至少寫一個新的「項目:保存」處理程序。 – 2014-10-28 19:16:45

回答

1

正如Zachary在評論中提到的,您應該能夠勾選item:saveditem:saved:remote管道。

如果不是的話,你也可以考慮創建一個agent,您可以在web.config的scheduling節點創建(或創建的文件夾包含您的解決方案的的.config作爲當然的最佳實踐)。

您可以添加一個代理:

<agent type="Your.Agent" method="Run" interval="00:10:00"> 
    <param desc="yourparameter">parametervalue</param> 
</agent> 

這意味着你的Your.Agent類應該有一個方法運行,這將在這種情況下,每隔10分鐘被稱爲 - 當然這取決於frequency設置也在同一個scheduling節點中。頻率定義了Sitecore需要檢查代理是否需要運行的頻率,間隔定義了每次運行代理需要通過多少時間。 More on Sitecore agents here。鏈接還提到了計劃任務,您應該也可以使用該任務。這僅適用於您想更新站點地圖的定義時間段,而不是每次產品更新時(例如,它可以每小時運行一次)
然後,您也可以添加具有特定值的參數(即您想要包含在您的站點地圖中的商店的位置或要排除的模板等)。

那麼你應該能夠掛接到sitemap.xml的文件,並使用類似CatalogLibrary.GetNiceUrlForProduct(productToRender)