1

我正在尝试使用 Umbraco 重新创建一个网站。对于这个网站,我将新闻项目存储在 webroot 之外的节点中:

  • 内容
    • 网站首页
      • 消息
    • 新闻讯息
      • 消息 1(创建于 2011 年 10 月 10 日)
      • 消息 2(创建于 2012 年 15 月 1 日)

我想使用 URL 参数来过滤要显示的新闻站点列表显示实际的新闻项目。

  1. 显示新闻部分

www.website.com/news

  1. 显示2011 年新闻列表

www.website.com/news/ 2011

  1. 显示2011年10 月的新闻列表

www.website.com/news/ 2011/10

  1. 显示消息 1新闻详细信息:

www.website.com/news/2011/10/10/message-1 _

无需在 /Content/Website Home/News 下创建所有内容项就可以做到这一点吗?

4

2 回答 2

3

您可以在 Umbraco 5 jupiter 中添加新区域并在 Arearegisteration.cs 中添加自定义路线,Sebastiaan Janssen Jupiter 有一个包作为 Visual Studio 插件

http://our.umbraco.org/projects/developer-tools/jupiter-as-visual-studio-solution

使用它来将您的 Web 应用程序转换为 MVC 应用程序并右键单击区域文件夹并添加一个新区域,VS 将负责其余的工作。然后在 AreaRegisteration.cs 中添加 Controller 和 Custom Routes 例如

context.MapRoute(
"ROUTE",
"/{action}/{year}",
new { controller = "ControllerName" }
);

如果 Url 是 www.website.com/news/2011,则动作必须命名为 news 并且 yer 将在查询字符串中传递,您可以使用 URL 任意播放。

希望有帮助,

雪儿

于 2012-04-09T11:27:41.037 回答
2

这对于 Umbraco 来说是不可能的。然而,实现这一点的一种方法是使用 URL 重写。您可以将参数重写为可以由宏读取的查询字符串,然后依次显示所需的新闻项目。

所以,

www.website.com/news/2011

...将被重写为:

www.website.com/news?year=2011

...和

www.website.com/news/2011/10

...将被重写为:

www.website.com/news?year=2011,month=10

..等等。

“新闻”页面上的宏将从查询字符串中读取请求并写出过滤结果。

于 2012-04-07T22:56:48.513 回答