2

我有一个 Sitecore 7.1 站点,我试图找出实现博客标签搜索的最佳方法是什么。

理想情况下,我希望有一个这样的 URL:/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 中解决此问题的最佳方法是什么?

谢谢。

4

1 回答 1

4

通过按原样指定路由并指定实际上绕过 Sitecore 的控制器。请参阅Sitecore MVC 开发人员指南的第 4.1 节

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

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

您还可以查看通配符模块,但查看源代码我不确定它是否适用于 MVC,因为有一些特定于 WebForms 的代码,但它应该很容易修改。

于 2014-02-01T14:59:32.807 回答