我有一个多站点 Sitecore 项目。我知道如何通过 webconfig 的 ErrorPage、ItemNotFoundUrl、LayoutNotFoundUrl、LinkItemNotFoundUrl 处理一个站点的错误页面。
但是,我想为每个站点显示不同的错误页面。我怎样才能做到这一点?
在任何情况下,您都可以将每个站点的错误页面的 URL 存储为/configuration/sitecore/sites/site
web.config 中的元素通过扩展Sitecore.Sites.SiteContext
class (有关扩展现有类的信息,请参阅 参考资料 http://www.sitecore.net/en/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/Extend-Classes-Provided-by-the-Sitecore-ASPNET-CMS.aspx).
The SDN论坛帖子 http://sdn.sitecore.net/forum//ShowPost.aspx?PostID=30233404 专门提供更多信息/ItemNotFound
条件,包括扩展的示例Sitecore.SItes.SiteContext
.
For ItemNotFoundUrl
,我认为这取决于你是使用一个项目还是一个文件作为404页面。如果你用items来处理404,那么在item解析器之后,添加一个处理器到httpRequestBegin
如果上下文项为空,则将上下文项设置为该站点的 404 项的管道。如果您使用文件,那么我认为覆盖Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound()
and Sitecore.Resources.Media.MediaRequestHandler.DoProcessRequest()
并更新 web.config 文件中相应的引用。
For ErrorPage
,我认为你必须重写Sitecore.Pipelines.RenderLayout.SecurityCheck.Process
并更新 web.config 中相应的引用。
For LayoutNotFoundUrl
,我认为你必须重写Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleLayoutNotFound
,并更新web.config中相应的引用。
For LinkItemNotFoundUrl
,我可能会向 renderField 管道添加一个处理器,以将设置的默认值替换为适用于上下文站点的值。
如果这是一个常见的需求,我们应该将其变成Sitecore共享源项目,或者将其添加到现有项目中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)