Umbraco - 动态页面

时间:2013-01-19 13:03:30

标签: umbraco

我希望有人可以帮我解决我打算做的事情......

我想创建一个动态的“City.aspx”页面,该页面接受url参数并根据该特定城市动态生成页面。

例如,如果某人打电话给“City.aspx?city = london”,那么它会构建一个包含与伦敦相关的自定义内容的页面,如果有人调用了“City.aspx?city = manchester”页面,那么它将构建页面与曼彻斯特有关的内容。

我已经研究过构建站点地图和UrlRewriting,我很确定我可以使用参数重定向到这个新页面,但不知道接下来我需要做什么。

有人可以帮忙吗?

由于

TaxiRoute

2 个答案:

答案 0 :(得分:1)

我建议您创建类似于/ city / london / 1234的网址,其中最后一部分是您的文档的ID。 通过在Umbraco中使用内置的UrlRewrite函数,您可以将url内部重写为/city.aspx?name=london&id=1234 在/config/Urlewriting.config中,您可以添加重写规则。 对于上述内容,您需要这样的内容:

 <add name="city_rewrite"
       virtualUrl="^~/city/(.*)/(.*)"
       rewriteUrlParameter="ExcludeFromClientQueryString"
       destinationUrl="~/city.aspx?name=$1&amp;cityid=$2"
       ignoreCase="true" />

完成此操作后,您可以在City.aspx宏的代码隐藏中使用以下代码来获取相应的文档。

    // get the city Document Id from the querystring
    string cityID = HttpContext.Current.Request.QueryString["cityid"];

    if (!string.IsNullOrWhiteSpace(cityId))
    {
      // get the cityNode
      Node cityNode = new Node(cityId);
      // do whatever you want with this node, like display it's data
    }

这是一个.NET宏,当然你可以用XSLT或Razor代码做同样的事情。

答案 1 :(得分:0)

如果您拥有标准Umbraco内容之外的信息,这些信息对于每个城市都是动态的,那么只需编写宏或宏(或部分视图?)以通过“city”获取参数获取动态数据。然后,您可以使用UrlRewriting使URL看起来像标准网页(/city/london.aspx)。 UrlRewriting将使该URL显示给服务器,就好像它是:/city.aspx?city = london。 (http://our.umbraco.org/wiki/reference/packaging/package-actions/community-made-package-actions/add-an-url-rewrite-rule

在您的宏中,您可以通过括号语法(http://our.umbraco.org/wiki/reference/templates/umbracomacro-element/macro-parameters/advanced-macro-parameter-syntax)将“city”get参数作为宏参数传递给宏。或者您可以通过请求变量(razor)或Umbraco.library(XSLT)获取city参数。