我有一個多站點Sitecore項目。我知道如何通過webconfig的ErrorPage,ItemNotFoundUrl,LayoutNotFoundUrl,LinkItemNotFoundUrl處理一個網站的錯誤頁面。Sitecore - 多站點錯誤頁面處理
但是,我想要爲每個站點顯示不同的錯誤頁面。我怎樣才能做到這一點?
我有一個多站點Sitecore項目。我知道如何通過webconfig的ErrorPage,ItemNotFoundUrl,LayoutNotFoundUrl,LinkItemNotFoundUrl處理一個網站的錯誤頁面。Sitecore - 多站點錯誤頁面處理
但是,我想要爲每個站點顯示不同的錯誤頁面。我怎樣才能做到這一點?
關於如何爲多站點安裝執行此操作,有一個entry in the SDN scrapbook。
在任何情況下,您都可以通過擴展Sitecore.Sites.SiteContext
類(see for information about extending existing classes)將每個站點的錯誤頁面的URL存儲爲web.config中的/configuration/sitecore/sites/site
元素的屬性。
SDN forum post提供了有關404 /ItemNotFound
條件的更多信息,包括Sitecore.SItes.SiteContext
的擴展示例。
對於ItemNotFoundUrl
,我認爲這取決於您是使用項目還是文件作爲404頁面。如果用項目處理404,則在項目解析器之後,如果上下文項目爲空,則將處理器添加到httpRequestBegin
管道以將該上下文項目設置爲該項目的404項目。如果您使用文件,那麼我認爲覆蓋Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound()
和Sitecore.Resources.Media.MediaRequestHandler.DoProcessRequest()
並更新web.config文件中的相應引用。
對於ErrorPage
,我認爲你將不得不重寫Sitecore.Pipelines.RenderLayout.SecurityCheck.Process
並更新web.config中的相應引用。
對於LayoutNotFoundUrl
,我認爲你將不得不覆蓋Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleLayoutNotFound
,並更新web.config中的相應引用。
對於LinkItemNotFoundUrl
,我可能會在renderField管道中添加一個處理器,以使用適用於上下文站點的值替換設置的默認值。
如果這是一個常見要求,我們應該把它變成一個Sitecore Shared Source項目,或者將它添加到一個現有的項目中。
這看起來很有希望,謝謝! – ThisGuy 2010-11-10 14:49:42
有一個共享源項目應該符合要求是大多數的部分。它被稱爲Sitecore Error Manager。
希望有所幫助。
我正在檢查該帖子,謝謝。 – ThisGuy 2010-11-10 14:50:01