我們正在使用Sitecore 7.2與多站點實施。實際數據由多站點共享,因此它已存儲在通用的全局項目文件夾中。如何生成自定義唯一ID
我們正面臨在URL上生成唯一ID的問題。我有一個很好的搜索,但找不到任何解決方案,除了使用Sitecore項目ID。
這就是我們想要的:
域/播放/ player_id 例如域/播放器/ 1234
其中1234是唯一生成的ID。
有人可以請建議,如果這是可能的?
我們正在使用Sitecore 7.2與多站點實施。實際數據由多站點共享,因此它已存儲在通用的全局項目文件夾中。如何生成自定義唯一ID
我們正面臨在URL上生成唯一ID的問題。我有一個很好的搜索,但找不到任何解決方案,除了使用Sitecore項目ID。
這就是我們想要的:
域/播放/ player_id 例如域/播放器/ 1234
其中1234是唯一生成的ID。
有人可以請建議,如果這是可能的?
在Sitecore中管理的每個頁面都是一個Sitecore項目。因此,您應該能夠導航到播放器項目的名稱。如果你想在您的文章該玩家物品存儲在全局而不是頁面,那麼你就只剩下以下選項說:
查詢字符串:domain/players/player?playerId={ID}
Sitecore.Context.Database.GetItem(Request.QueryString["playerId"])
playerItems.FirstOrDefault(playerItem => playerItem["Player ID"] == Request.QueryString["playerId"])
playerItem.ID == new ID(Request.QueryString["playerId"]
這裏的選項#1是迄今爲止最容易實現的方法。 – Bryan 2014-10-02 20:38:40
Zachary的好建議。我將添加更多:
1)IIS重寫模塊。如果你真的在外部網址看起來像/ domain/players/1234,你可以通過將這些請求轉發給Zachary的選項#1來輕鬆實現。客戶端會看到/ domain/players/1234,但它確實由/domain/player/player.aspx?playerid=1234上的一個Sitecore項目處理。客戶不必知道這一點。
2)自定義ItemResolver管道處理程序。自定義管道一開始可能有點嚇人,但它們實際上很容易實現並且非常有用。添加一個檢查「players/1234」的新玩家並將ContextItem設置爲玩家處理頁面並將該ID丟棄到會話變量或某個上下文變量中會非常簡單。
+1因爲我完全忘了管道選項:) – 2014-10-10 16:31:35
首先,什麼是播放器ID?它只能是數字還是可以是GUID?其次,爲什麼不能使用Sitecore項目ID? – 2014-10-01 13:35:53
以下文章可能會有所幫助。 http://stackoverflow.com/questions/26043280/auto-increment-identity-custom-field-type – cpp 2014-10-01 18:22:39