【问题标题】:Mapping Sitecore route to an item/controller将 Sitecore 路由映射到项目/控制器
【发布时间】:2014-02-01 12:50:56
【问题描述】:

我有一个 Sitecore 7.1 网站,我正在尝试找出实现博客标签搜索的最佳方法。

理想情况下,我希望有这样的网址:/tags/tag-goes-here

我的内容树中应该有一个项目 sitecore/content/home/tags,这样我就可以使用 Sitecore 编辑内容等。我希望像上面这样的所有路由都映射到项目,并且能够以某种方式将“tag-goes-here”参数获取到我的控制器/渲染中。

我尝试过使用路线,但我不确定这是否是正确的方法。它映射到一个简单的控制器,但我可能走错了路。我为此添加了以下路线:

routes.MapRoute(
            "Tags",
            "tags/{tag}",
          new
          {
              controller = "Tag", 
              action = "Index", 
              tag = UrlParameter.Optional, 
          });

它可以工作,但不能完全满足我的要求。它只是在浏览器中呈现我的视图,但我无法使用 Sitecore 向其添加任何呈现或内容,因为 Sitecore 中没有匹配的项目。在 Sitecore MVC 中解决此问题的最佳方法是什么?

谢谢。

【问题讨论】:

    标签: sitecore sitecore7 sitecore-mvc sitecore7.1


    【解决方案1】:

    通过按原样指定路由并指定实际上绕过 Sitecore 的控制器。请参阅Sitecore MVC Developers Guide 的第 4.1 节

    您可以使用通配符项目(Reusing and Sharing Data 文档的第 1.2.6 节)来处理标签,这将允许您像处理任何其他 Sitecore 项目一样处理项目并添加布局/渲染/规则等。

    您可以在此处找到一些相关示例:Sitecore MVC Music Store,这是一个 Sitecore 6.6 示例,但概念仍然相同。

    您也可以查看Wildcard Module,但查看source code 我不确定它是否适用于 MVC,因为有一些特定于 WebForms 的代码,但它应该很容易修改。

    【讨论】:

    • 通配符模块将在 MVC 中工作,但需要一些项目在 7.1 中移动,因为规则/条件等...已全部移动,现在通过标签关联。
    • 很高兴知道。我对 MVC 唯一关心的是 WildcardRendering 类,因为它会检查 (control is Sublayout) 但我没有使用过该模块。源代码很容易修改。
    • 是的,WildcardRendering 类只是一个调试的东西,它很容易转移。主要部分只是使用规则引擎根据路径中的通配符项从 url 构建令牌列表。漂亮又简单
    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2012-03-09
    相关资源
    最近更新 更多