【问题标题】:Nested Wildcards to Handle Virtual Items in Sitecore在 Sitecore 中处理虚拟物品的嵌套通配符
【发布时间】:2012-05-02 12:27:52
【问题描述】:

TLDR;在多个级别处理复杂虚拟物品的最佳或推荐方式是什么?

我目前正在做一些事情,而不是使用查询字符串变量来过滤属性,我只想扩展 URL 并允许这些 URL 进行过滤。
活动:
~/events/2012/april
~/events/lunches
~/events/6CB27D08-358E-49AA-8107-16A50E963C70

我目前有一个通配符设置来处理最后一个案例或年份,但遇到了只处理一个级别的通配符,所以我无法只用一个通配符处理/events/{0}/{1}。此外,我相信常见的友好网址最终会是/events/2012/april/<external_id>_<event_name>

使用通配符,我需要用三种不同的布局将它们放置三层,以处理我目前所知道的每种情况

Events/
        *
          *
            *

有没有更好的方法或更推荐的方法来处理多层次的复杂虚拟物品?

【问题讨论】:

    标签: c# sitecore wildcard


    【解决方案1】:

    您在此处的路径正确,您是正确的,因为您需要为 URL 的每个段添加一个通配符。但是,仅仅因为存在通配符并不意味着您需要使用它。换句话说,/events/*/* 项目将处理/events/2012/april URL。

    您可能想查看这篇博客文章 http://www.sitecore.net/Community/Technical-Blogs/Getting-to-Know-Sitecore/Posts/2011/09/Wildcards-and-Data-Driven-URLs.aspx,它会导致 Wildcard Module

    【讨论】:

    • 仍然坚持以这种方式处理我的案件三个不同的时间。似乎与* 的含义相反,但我确信 Sitecore 有这样的原因。我真的很喜欢通配符模块,因为配置会保留在 Sitecore 而不是配置文件中。
    • 通配符模块最初为我们工作,但无法让它与网站上的其他导航控件很好地配合。
    【解决方案2】:

    使用通配符项目是否有特定原因? 我认为如果你的深度超过 1 级,你最好使用 URL 重写 通配符。

    所以只制作/events 项目并将/events/{0}/{1} 重写为/events?year={0}&month={1}

    【讨论】:

    • 我开始使用通配符项目,因为我的事件不是系统中的项目,而是基于外部存储的 API 的项目,因此这是一种为事件提供 URL 的简单方法。
    • Ruud,您知道如何使用 Sitecore 进行 URL 重写吗?启用规则后,它只会破坏 Sitecore 页面(我假设是因为 Sitecore 首先运行请求而不是 URL 重写模块)。
    • 根据我的经验,IIS 重写模块在 Sitecore 管道之前执行。 (我的规则中确实启用了 stopProcessing="true",但这不应该影响 Sitecore)
    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多