Sitecore 7 Analytics以编程方式提高了参与度

时间:2014-07-24 21:00:17

标签: sitecore analytics sitecore7 sitecore-dms sitecore7.2

我正在努力在7.2中实施sitecore DMS,而且我有一个主要问题,我似乎很难找到答案。我设置了一些目标和事件,并且我尝试通过Analytics API设置一个目标和事件。事件被记录为在PageEventId数据库中被引发,但我想要做的是将Engagement Value添加到当前访问/访问者。

我希望更新当前访问的Visits数据库中的Value字段。以下是我目前使用的内容:

public static void triggerGoal(ID goal)
{
    if (Tracker.IsActive && Tracker.CurrentPage != null)
    {
        Sitecore.Data.Items.Item goalToTrigger = Sitecore.Context.Database.GetItem(goal);
        if (goalToTrigger != null)
        {
            Sitecore.Analytics.Data.Items.PageEventItem reg = new Sitecore.Analytics.Data.Items.PageEventItem(goalToTrigger);
            Sitecore.Analytics.Data.DataAccess.DataSets.VisitorDataSet.PageEventsRow eventData = 

            Tracker.CurrentPage.Register(reg);
            eventData.Data = goalToTrigger["Description"];
            Tracker.Submit();
        }
    }
}

这会正确更新PageEventId数据库,并注意事件已被触发,但这不会为Visits数据库添加任何参与值,无论为被触发的Goad分配了多少参与点。

我已经尝试了各种方法来获取API以更新此字段,但到目前为止我没有任何工作。以下是我尝试过的一系列不同的事情:

Tracker.CurrentVisit.BeginEdit();
Tracker.CurrentVisit.Value += 3; //look up value here instead of hardcoding. Create new PageEventItem class to get field ID.
Tracker.CurrentVisit.AcceptChanges();
Tracker.CurrentVisit.EndEdit();
Tracker.CurrentVisit.Load();
Tracker.CurrentPage.BeginEdit();
Tracker.CurrentPage.Visit.Value += 3;
Tracker.CurrentPage.AcceptChanges();
Tracker.CurrentPage.EndEdit();
Tracker.Visitor.CurrentVisit.BeginEdit();
Tracker.Visitor.CurrentVisit.Value += 3;
Tracker.Visitor.CurrentVisit.AcceptChanges();
Tracker.Visitor.CurrentVisit.EndEdit();
Tracker.Visitor.CurrentVisit.Load();
Tracker.CurrentVisit.CurrentPage.Visit.BeginEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Value += 3;
Tracker.CurrentVisit.CurrentPage.Visit.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.Visit.EndEdit();
Tracker.CurrentVisit.CurrentPage.Visit.Load();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.BeginEdit();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.Value += 3;
Tracker.CurrentVisit.CurrentPage.VisitorsRow.AcceptChanges();
Tracker.CurrentVisit.CurrentPage.VisitorsRow.EndEdit();

我使用了AcceptChanges()和BeginEdit()EndEdit()和Load()函数的不同组合,因为我不完全确定它们各自做了什么,但无论如何,没有一个他们更新了Value字段。

我正在尝试避免执行自定义SQL查询来更新此字段,我试图通过内置的Sitecore Analytics API来弄清楚如何执行此操作。任何人都可以帮我弄清楚如何更新这个字段吗?

2 个答案:

答案 0 :(得分:1)

以下对我来说没问题,你是否等了足够长时间才能看到为访问写的价值?

if (Tracker.IsActive)
{
    Tracker.CurrentVisit.Value += 3;
}

无需BeginEdit,AcceptChanges,EndEdit等

答案 1 :(得分:0)

只要您在Sitecore中正确设置了目标,您所做的就应该工作。我喜欢镜像sitecore的默认目标,并创建“页面事件”模板的目标。确保您已将目标指定给内容项Analyze Tab -> Goals -> [select your goal from checkbox list]。如果您要设置CurrentVisit值,我建议使用下面的行来防止对参与点值进行硬编码。

//This line will add points specified in Content Editor
Tracker.CurrentVisit.Value += int.Parse(reg.Points);

本文档介绍了如何以正确的方式设置目标。如果您遵循它,您的代码将按照您的方式工作,报告内容编辑器中指定的值而不设置CurrentVisit.Value。 Sitecore SDN - Marketing Operations Cookbook