使用个人资料卡以编程方式跟踪对项目的访问
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 项目。然后它注册页面事件并提交更改。您可以对活动或活动做同样的事情。
其他资源:
- Sitecore 6.5 DMS - Registering a goal completion via the API
- How do I trigger a profile in Sitecore DMS?
- https://www.sitecore.net/learn/blogs/technical-blogs/damian-brooks/posts/2014/08/06082014.aspx
- http://blog.horizontalintegration.com/2013/11/19/sitecore-dms-trigger-goals-programatically/
- http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2013/07/Sitecore-DMS-Register-Goal.aspx
在深入分析分析 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";
我们刚刚接管了一个网站,客户希望使用个人资料卡和图案卡添加个性化。
然而,网站的构建方式意味着访问者实际上不会去 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 项目。然后它注册页面事件并提交更改。您可以对活动或活动做同样的事情。
其他资源:
- Sitecore 6.5 DMS - Registering a goal completion via the API
- How do I trigger a profile in Sitecore DMS?
- https://www.sitecore.net/learn/blogs/technical-blogs/damian-brooks/posts/2014/08/06082014.aspx
- http://blog.horizontalintegration.com/2013/11/19/sitecore-dms-trigger-goals-programatically/
- http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2013/07/Sitecore-DMS-Register-Goal.aspx
在深入分析分析 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";