【问题标题】:Umbraco - Dynamic PagesUmbraco - 动态页面
【发布时间】:2013-01-19 13:03:29
【问题描述】:

我希望有人可以帮助我完成我的计划......

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

例如,如果有人叫“City.aspx?city=london”,那么它将构建一个包含与伦敦相关的自定义内容的页面,如果有人称该页面为“City.aspx?city=manchester”,它将构建该页面与曼彻斯特有关的内容。

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

有人可以帮忙吗?

谢谢

出租车路线

【问题讨论】:

    标签: umbraco


    【解决方案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-code 执行相同的操作。

    【讨论】:

    • 城市和身份证不是多余的吗?不过,在宏中编写代码当然更容易。
    • City 和 ID 确实是多余的,但是对于 SEO 来说城市的名字更好,如果你想从 Umbraco 获取 Node,使用 Node ID 更容易,因为 ID 是唯一的,节点名称不必是唯一的。
    【解决方案2】:

    如果您拥有标准 Umbraco 内容之外的每个城市的动态信息,那么只需编写一个或多个宏(或部分视图?)以通过该“城市”获取参数获取动态数据。然后,您可以使用 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) 获取城市参数。

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多