2013-05-20 55 views
1

在公共網站的主頁上,我們有多個模塊按照策劃內容(用戶手動選擇文章/出版物)與供稿內容(基於參數自動填充模塊,通常按日期排序)劃分。這些模塊位於主圖像和菜單下方主頁的主體中。這些可以按照混合順序,而不一定按照任何特定的順序。策劃內容與供稿內容重複數據刪除

所有這些內容都存儲在Sitecore中,並且這兩種模塊類型由不同的模板類型分隔。

有時某些文章會顯示在主頁上的兩種模塊類型中。我們想避免這種重複數據刪除。我們有一些考慮這樣做的方法,但希望看看是否有人以前做過這件事,並決定採用最佳方法。以下是我們提出的兩種解決方案 -

  1. 加載手動策劃的所有模塊。將逗號分隔的模塊ID存儲到隱藏字段中。由於Feed模塊已加載,因此忽略隱藏字段中帶有ID的任何商品。

  2. 加載所有手動策劃的內容。將ID存儲到Web服務器內存中的列表或數組中。隨着Feed模塊的加載,請忽略列表或陣列中存在ID的任何項目。

我們在這裏看到的唯一的潛在問題是飼料的順序和策劃的模塊將被混亂了,所以我們不會有任何前饋內容模塊讓所有策展內容ID的方式加載。

歡迎任何建議/想法。

感謝

+0

那麼所有的文章/出版物都來自同一個飼料?然後用戶手動選擇其中一些爲「精選/策劃」?他們如何選擇他們?我假設的Treelist還是多列表? – jammykam

+0

Feed和Picked模塊的文章具有相同的來源。 Picked模塊有手動選擇的文章。資訊提供已自動填入內容。 Picked內容來自多列表字段。 – Gabbar

回答

0

最簡單的解決方案(假設你正在使用網絡形成sublayouts)將在某種程度上延長你的第二個解決方案,與手動選擇的物品模塊加載它們OnLoad方法而帶有來自Feed的物品的模塊將它們裝入OnPreRender方法中。這是快速和骯髒的解決方案,但如果你需要一個快速勝利的作品。

更好的解決方案是創建一個提供程序類,它將作爲所有請求數據的模塊之間的中間人,並且根據http請求擁有該類的單個實例(可以將其存儲在例如HttpContext.Current.Items中)。所有模塊都會要求該提供商在其OnLoad方法中具有某種優先級的文章(在您的情況下,手動選擇的項目的優先級高於Feed模塊)以及委託給文章所應執行的方法從提供者返回。

然後在頁面的PreRender方法中,您需要通知提供者所有對這些文章的請求已經被註冊,並且提供者將根據它們的優先級將文章返回給所有註冊的模塊(通過一種簡單的方法檢查內容的唯一性),通過調用在模塊內容請求中傳遞的委託。這些回調應該綁定到中繼器,或者以模塊中您需要的任何方式使用。

您可以稍後在頁面中輕鬆註冊更多模塊,而不會對代碼進行任何更改,並確保頁面上的所有鏈接都是唯一的。

+0

這兩個模塊都是兩個不同的子佈局,並手動連接到頁面項目。不確定是否可以先加載一個,因爲它會違反網站其他部分的慣例。 – Gabbar