2012-05-02 28 views
2

TLDR;什么是在多个层面上处理复杂虚拟物品的最佳或推荐方式?嵌套通配符处理Sitecore中的虚拟物品

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

我现在有一个通配符设置处理最后一种情况或一年,但遇到了一个通配符的障碍只处理一个水平,所以我无法仅使用一个通配符来处理/events/{0}/{1}。更进一步,我认为,共同友好的URL将结束是/events/2012/april/<external_id>_<event_name>

使用通配符,我需要把它们深三层三种不同的布局来处理每个案件,从我目前知道

Events/ 
     * 
      * 
      * 

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

回答

3

你在这里的正确路径,你是正确的,你需要一个通配符项的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

+0

还是坚持了处理我的情况下这样三个不同的时间。似乎与'*'意味着什么相反,但我确信Sitecore有这样一个原因。我非常喜欢通配符模块,但配置会保留在Sitecore中,而不是配置文件。 – al3xnull

+0

通配符模块最初适用于我们,但无法使其与网站上的其他导航控件良好地配合使用。 – al3xnull

2

是否有使用通配符项的具体原因是什么? 我认为如果你要通过 通配符进行超过1级的深度处理,那么你最好用URL重写。

所以只使/events项目和重写/events/{0}/{1}/events?year={0}&month={1}

+0

我开始使用通配符项,因为我的事件不是系统中的项目,而是基于API的项目而不是系统,因此这是向事件提供URL的简单方法。 – al3xnull

+0

Ruud,你知道如何让URL重写与Sitecore一起工作吗?当规则启用时,它只会打破Sitecore页面(我假设,因为Sitecore首先运行请求,而不是URL重写模块)。 – al3xnull

+0

根据我的经验,IIS重写模块在Sitecore管道之前执行。 (我在我的规则中启用了stopProcessing =“true”,但这不应该影响Sitecore) –