Reputation: 33
I am having an issue with a Sitecore 7 solution. I cannot get the DMS rules to work properly.
Some specific content has to be shown when a visitors visit count on the site is greater than 3. I have made a custom DMS rule in order to be able to debug the problem.
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;
The elementVisits
integer is counted up fine for a short amount of time, but after a while it is reset to 0, even if the Visitor is the same. It looks like the standard DMS rule does not work either.
I can see that the VisitCount column of the Visitors table in the Sitecore_analytics database is not updated.
Does anyone else have had similar problems and knows what goes wrong?
Upvotes: 3
Views: 140
Reputation: 3216
You can try calling the Tracker.Visitor.LoadAll()
method to make sure that the visit data is pulled from memory as well as the analytics database.
Upvotes: 0