现在我正在研究sitecore项目,我需要在不在子布局上的记录上添加个性化。 E.g我的项目是基于报告的,我希望显示报告给出以下标准。
请帮助我以上方案。提前谢谢。
答案 0 :(得分:3)
个性化可以通过以下方式实现:
回答2:
使用地理IP查找数据收集您所追踪的国家/地区信息。因此,通过第三方Web服务向Sitecore Engagement Analytics提供Geo IP查找数据。地理IP数据存储在Google Analytics数据库中,因此不必为返回的访问者执行查找。请记住,默认安装仅附带第三方Web服务的试用版,因此需要付费。
Engagement Analytics API主要用于使用
访问访问者数据以下是人们如何访问GEO IP数据:
public class GeoIPTracker : Sitecore.Web.UI.WebControl
{
protected override void DoRender(System.Web.UI.HtmlTextWriter output)
{
string ip = new IPAddress(Tracker.CurrentVisit.Ip).ToString();
if (Tracker.CurrentVisit == null)
return;
if (!Tracker.CurrentVisit.UpdateGeoIpData())
output.Write("GeoIP information not " + "available within prescribed time.<br/>");
else if (Tracker.CurrentVisit.BusinessName == "IP_NOT_FOUND" || Tracker.CurrentVisit.BusinessName == "N/A")
output.Write("GeoIP information not avaialble for " + ip + ".<br/>");
else if (String.IsNullOrEmpty(Tracker.CurrentVisit.BusinessName))
output.Write("No business name in GeoIP data for " + ip + " (error contacting provider).<br/>");
else
output.Write("Business name from GeoIP record: " + Tracker.CurrentVisit.BusinessName + ".<br/>");
}
}
回答1:
您可以使用跟踪字段中存储的数据,获取有关注册用户个人资料的具体信息。
再次使用Engagement Analytics API的类
应该为您提供足够的数据,以便自定义报告显示。
以下是访问个人资料数据的方式:
using System.Linq;
using Sitecore.Analytics.Data;
using Sitecore.Data;
using Sitecore.Data.Fields;
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
public class Profile : Sitecore.Web.UI.WebControl
{
protected override void DoRender(System.Web.UI.HtmlTextWriter output)
{
Item homeItem = Sitecore.Data.Database.GetDatabase("master").GetItem("/sitecore/content/Home");
Field innerField = homeItem.Fields["__Tracking"];
if (innerField == null)
{
Log.Error(string.Format("Tracking field was not found in item '{0}' ('{1}')", homeItem.ID, homeItem.Paths.FullPath), this);
output.WriteLine("No profile values.<br/>");
}
else
{
TrackingField trackingField = new TrackingField(innerField);
ContentProfile profile = trackingField.Profiles.FirstOrDefault(profileData => profileData.Name.Equals("Score") && profileData.IsSavedInField);
output.WriteLine("Profile " + profile.Name + "<br/>");
ContentProfileKeyData[] profileKeys = profile.Keys;
foreach (ContentProfileKeyData profileKey in profileKeys)
{
output.WriteLine("Profile key name " + profileKey.Name + "<br/>");
output.WriteLine("Profile key value " + profileKey.Value + "<br/>");
}
}
}
}
请告诉我这是否有用。
可以在Engagement Analytics API Cookbook
的SDN中找到重要信息