我在使用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/

10-10 07:05