我在使用Sitecore 7解决方案时遇到问题。我无法使DMS规则正常工作。
当访问者在站点上的访问计数大于3时,必须显示一些特定的内容。为了能够解决问题,我制定了自定义DMS规则。
var renderingItem = ruleContext.Reference == null ? null : ruleContext.Reference.RenderingItem;
var pageEvents = Tracker.Visitor.DataContext.PageEvents;
pageEvents =
pageEvents.Where(y => y.ItemId == renderingItem.ID.ToGuid() && y.Data == PageEventDataName).ToArray();
var count = pageEvents.Count();
int elementVisits = Tracker.Visitor.DataContext.Pages
.Where(x => x.ItemId == ruleContext.Item.ID.ToGuid())
.SelectMany(x => x.PageEvents.Where(y => y.ItemId == renderingItem.ID.ToGuid() && y.Data == PageEventDataName))
.Count();
bool itemHasReachedMaxVisitCount = !Compare(elementVisits);
if (itemHasReachedMaxVisitCount)
return false;
elementVisits
整数会在很短的时间内累加一次,但是过一会儿它会重置为0,即使Visitor是相同的。看来标准DMS规则也不起作用。我可以看到Sitecore_analytics数据库中的Visitors表的VisitCount列未更新。
是否还有其他人有类似的问题,并且知道出了什么问题?
最佳答案
您可以尝试调用Tracker.Visitor.LoadAll()
方法,以确保将访问数据从内存以及分析数据库中提取出来。
关于c# - 无法通过Sitecore 7中的DMS规则对访问进行计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38070644/