使用个人资料卡以编程方式跟踪对项目的访问

Programatically track a visit to an item with a profile card

我们刚刚接管了一个网站,客户希望使用个人资料卡和图案卡添加个性化。

然而,网站的构建方式意味着访问者实际上不会去 url 寻找将分配有个人资料卡的项目。取而代之的是转到单个页面,查询字符串上的值告诉页面应该加载哪些项目数据。因此,永远不会跟踪用户访问该项目,个人资料卡对用户的个人资料没有影响。

有没有一种方法可以实用地触发通常会发生的事情,以便用户为这些页面建立个人资料分数?

网站使用的是 Sitecore 7.2

您应该能够使用 Analytics api 以编程方式触发配置文件。

 var profile = Sitecore.Analytics.Tracker.CurrentVisit.GetOrCreateProfile("<Profile Name>");
 profile.BeginEdit();
 profile.Score("<profile key>",<profile key value you want to set>);
 profile.Score("<profile key>",<profile key value you want to set>);
 profile.UpdatePattern(); //sets the appropriate pattern based on the       current profile keys values you have just set.
 profile.EndEdit();

我还会看看 Sitecore.Analytics.Tracker.CurrentVisit 对象上的其他方法来执行其他操作

您要注册页面事件吗?如果是这样,您可能想尝试以编程方式创建页面事件项并注册它们。

示例:

PageEventItem pei = new PageEventItem(goalItem);
VisitorDataSet.PageEventsRow pageEventsRow = Tracker.CurrentPage.Register(pei);
Sitecore.Analytics.Tracker.Submit();

以上代码假定您已经以编程方式检索了目标 (goalItem) 的 Sitecore 项目。然后它注册页面事件并提交更改。您可以对活动或活动做同样的事情。

其他资源:

在深入分析分析 dll 之后,我发现你可以做到这一点。

Sitecore.Data.Database db = Sitecore.Configuration.Factory.GetDatabase("web");
(new TrackingFieldProcessor()).Process(db.GetItem(new ID("395BDEF7-16CB-4C94-B9B6-A6EAC148401F")));

这会导致配置文件键值正确更新,但访问者历史记录仍然看起来好像访问者没有查看过该页面。要更改它,您可以这样做。

VisitorDataSet.PagesRow rawUrl = Tracker.CurrentVisit.GetOrCreateCurrentPage();
rawUrl.Url = "new url value";
rawUrl.UrlText = "new url value";