2013-01-19 132 views
0

我希望有人也許能夠給我一些幫助,就是我打算做...一把umbraco - 動態網頁

我想創建一個動態的「City.aspx」頁面,接受一個URL參數並根據該特定城市動態生成一個頁面。

例如,如果有人打電話給「City.aspx?city = london」,那麼它會建立一個包含與倫敦相關的自定義內容的頁面,如果有人稱該頁面爲「City.aspx?city = manchester」頁面,內容與曼徹斯特有關。

我已經研究過構建站點地圖和UrlRewriting,我很確定我可以用參數重定向到這個新頁面,但不知道接下來我需要做什麼。

任何人都可以幫忙嗎?

感謝

TaxiRoute

回答

0

如果您有標準的一把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)獲取城市參數。

1

我會建議您創建URL的/ 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代碼做同樣的事情。

+0

城市和身份證不會是多餘的嗎?當然,在宏中更容易編碼。 – BeaverProj

+0

城市和ID確實是多餘的,但對於SEO這個城市的名稱更好,如果您想從Umbraco獲取節點,使用節點ID會更容易,因爲ID是唯一的,節點名稱沒有獨一無二。 –