我们正在使用Sitecore 7.2和多站点实现。实际数据在多站点之间共享,因此它存储在通用的Global Item文件夹中。
我们在URL上生成唯一ID时遇到问题。我有一个很好的搜索,但除了使用Sitecore项目ID之外找不到任何解决方案。
这就是我们想要的:
域/播放器/ player_id 例如域/播放器/ 1234
其中1234是唯一生成的ID。
有人可以建议这是否可行?
答案 0 :(得分:2)
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 :(得分:1)
Zachary的好建议。我还要补充几点:
1)IIS重写模块。如果您真正关注的是外部网址看起来像/ domain / players / 1234,您可以通过将这些请求转发给Zachary的选项#1来轻松完成此操作。客户端看到/ domain / players / 1234,但它实际上是由/domain/player/player.aspx?playerid=1234上的一个Sitecore项目处理的。客户不必知道。
2)自定义ItemResolver管道处理程序。自定义管道最初可能有点令人生畏,但它们实际上非常容易实现并且非常有用。添加一个检查“players / 1234”并将ContextItem设置为播放器处理页面并将ID放入会话变量或某个上下文变量的新内容将非常简单。