[英]urllink in Sitecore indexs returns media url with “/sitecore/shell/~/media/…”
“urllink”是Sitecore索引中的ComputedIndexField。
如果我重建索引,那么存儲到索引中的URL會以“/〜/ media / ...”開頭,這是正確的。
但是如果索引策略是onPublishEndSync,並且我在我的媒體項上重新發布,那么網址以“/ sitecore / shell /〜/ media / ...”開頭。
我檢查過Sitecore源代碼,區別在於Context.Site。 重建索引時它為null,因此它使用“/”作為前綴。 但在發布時它是“Sitecore shell”。 因此它使用Sitecore Shell的Context.Site.VirtualFolder,即“/ sitecore / shell”。
我認為這是一個Sitecore錯誤。 ATM我想創建自己的urlLink ComputedIndexField類,並使用AbsolutePath = false的MediaUrlOptions作為修復。
只是想知道我是否遺漏了任何東西而且它實際上不是Sitecore的問題?
謝謝!
只是為此提供更新。 Sitecore確認這是一個錯誤。 他們正在尋找一種解決方法,我會在這里更新。
謝謝。
------------- 2014年12月15日更新--------------
門票現在關閉了。 Sitecore的解決方案是將來從索引中刪除這個“urlLink”字段(他們說他們會請求這個)。
原因是LinkManager應該根據當前站點上下文生成url。 但是索引時不存在站點上下文(對於內容項,您可以檢查路徑,但對於媒體項,您不能)。
當然,還有另一種解決方案是創建自己的computeredField來覆蓋媒體項的邏輯。 但是,我同意Sitecore,從索引中刪除此字段感覺更為正確。
最重要的是,使用urlLink字段的最初原因是在執行搜索時不再需要完全查詢Sitecore。 所有內容都來自Index的存儲字段值。 但另一方面,分頁通常用於搜索結果,所以即使有Sitecore的請求,它也不應該很多。
這一切都是現在,很高興看到更多的意見和討論,謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.