获取推荐项目(链接)

时间:2011-05-26 12:14:15

标签: c# asp.net sitecore sitecore6

我们有一个sitecore网站,我们需要知道从哪个链接到您页面X的链接。 例如:
您在页面A上,然后单击项目X提供的链接,该链接将引导您进入页面B. 在页面B,我们需要能够获得X引用的项目,从而访问项目及其属性。

它可以通过会话,Sitecore上下文,我不知道什么,我们甚至不需要整个项目本身,只是ID会做。

任何人都知道如何做到这一点?

2 个答案:

答案 0 :(得分:2)

根据评论中的讨论,您遇到的网站架构问题实际上并不是特定于Sitecore的。

你有一个后端消耗几个数据项来产生一些发送到客户端的HTML。每个数据项都可以在HTML中生成链接。他们可能会产生相同的链接只有一个项目被视为HTML页面的来源。

您不知道哪些项目产生了链接。您唯一的选择是找到一种识别所产生链接的方法。要执行此操作,您将必须向生成的URL(例如查询字符串)添加某种形式的标记信息,该URL可在处理URL请求时进行解释。客户端中不存在项目本身。

如果您的链接是由数据库查询生成的,则问题将完全相同。如果您想知道哪条记录产生了链接,您必须在链接中添加标识符。

您可能会设计一个系统,允许您识别当前项(即,点击链接时该页面是唯一的),但它会涉及缓存大量数据在会话中(生成的链接列表和生成它们的项目)或重新创建引用URL的请求。对于一个非完美的解决方案来说,这听起来很麻烦,这可能会使服务器速度降低很多。

答案 1 :(得分:0)

詹姆斯是正确的......你的原始参数基本上是不可能满足的。

通过一些黑客攻击和替换标准Sitecore提供商,您可以跟踪这些。但是使用某种查询字符串ID会容易得多。

在我们的系统上,我们有第三方广告链接......他们有客户端javascript,它实际上将请求提交到本地页面,然后被重定向到目标URL。因此,当您将鼠标悬停在链接上时,状态栏会显示“http://whatever.com”... 出现链接将转到whatever.com,但您实际上将要{ {3}}首先我们可以跟踪该链接,然后获取Response.Redirect()。

您可以通过提供自己的LinkManager并在跟踪网址中包含生成项ID来执行类似操作,然后重定向到用户想要的实际页面/项目。

然而......这似乎相当复杂且容易出错,我不推荐它。