2010-11-08 49 views
3

我有一個多站點Sitecore項目。我知道如何通過webconfig的ErrorPage,ItemNotFoundUrl,LayoutNotFoundUrl,LinkItemNotFoundUrl處理一個網站的錯誤頁面。Sitecore - 多站點錯誤頁面處理

但是,我想要爲每個站點顯示不同的錯誤頁面。我怎樣才能做到這一點?

回答

5

在任何情況下,您都可以通過擴展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項目,或者將它添加到一個現有的項目中。

+0

這看起來很有希望,謝謝! – ThisGuy 2010-11-10 14:49:42

4

有一個共享源項目應該符合要求是大多數的部分。它被稱爲Sitecore Error Manager

希望有所幫助。