从我的xslt,我使用jquery对web服务进行AJAX调用.
在我的网络服务中,我需要注册/保存一些Sitecore.Analytics数据.
问题是我无法使用Sitecore.Analytics.AnalyticsTracker.Current.
那我该怎么做TriggerProfile和TriggerEvent呢?
我想知道Sitecore.Analytics.AnalyticsManager是否可以提供任何帮助.
这样做的原因是在trackAnalytics管道期间填充了AnalytisTracker.Current,而后者又在renderLayout管道中调用,只有在上下文项不为null并且上下文项具有已定义的演示设置时才会调用此管道.
话虽如此,有一个解决方法:)
您可以手动启动AnalyticsTracker,如下所示:
if (!AnalyticsTracker.IsActive){ AnalyticsTracker.StartTracking();}
然后,您可以检索AnalyticsTracker实例,如下所示:
AnalyticsTracker tracker = AnalyticsTracker.Current;if (tracker == null) return;
最后,您可以创建并触发您的事件,个人资料等…下面的示例会触发一个PageEvent.注意:为了获取Timestamp属性,需要特别考虑PageEvent(以及很可能是其他事件).请参阅以下代码中的注释.
if (!AnalyticsTracker.IsActive){ AnalyticsTracker.StartTracking();}AnalyticsTracker tracker = AnalyticsTracker.Current;if (tracker == null) return;string data = httpContext.Current.Request.UrlReferrer != null ? httpContext.Current.Request.UrlReferrer.PathAndquery : string.Empty;//Need to set a context item in order for the AnalyticsPageEvent.Timestamp property to //be set. As a Hack,just set the context item to a kNown item before declaring the event,//then set the context item to null afterwards.Sitecore.Context.Item = Sitecore.Context.Database.GetItem("/sitecore");AnalyticsPageEvent pageEvent = new AnalyticsPageEvent();pageEvent.name = "Download Registration Form submitted";pageEvent.Key = httpContext.Current.Request.RawUrl;pageEvent.Text = httpContext.Current.Request.RawUrl;pageEvent.Data = data;//Set the AnalyticsPageEvent.Item property to null and the context item to null.//This way the PageEvent isn't tIEd to the item you specifIEd as the context item.pageEvent.Item = null; Sitecore.Context.Item = null;tracker.CurrentPage.TriggerEvent(pageEvent);tracker.submit();
希望这可以帮助!
总结以上是内存溢出为你收集整理的Sitecore Analytics:从Web服务触发配置文件和事件全部内容,希望文章能够帮你解决Sitecore Analytics:从Web服务触发配置文件和事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)