Umbraco - 将内容放置在网站节点之外?

时间:2012-04-07 20:19:59

标签: architecture umbraco

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

  • 内容
    • 网站首页
      • 新闻
    • Newsmessages
      • 消息1(创建于10-10-2011)
      • 消息2(创建于15-01-2012)

我想使用网址参数来过滤新网站列表,以显示以显示实际新闻项目。

  1. 显示新闻栏目
  2.   

    www.website.com/news

    1. 显示 2011
    2. 新闻列表
        

      www.website.com/news/的 2011

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

        www.website.com/news/的 2011/10

        1. 显示消息1
        2. 新闻详情
            

          www.website.com/news/2011/10/10/的消息-1

          可以在不创建以下内容/内容/网站主页/新闻的所有内容项的情况下完成吗?

2 个答案:

答案 0 :(得分: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,并且您将在查询字符串中传递,您可以使用该URL播放。

希望能帮助,

舍尔

答案 1 :(得分: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

..等等。

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