如何管理sitecore中的记录的个性化

时间:2013-10-17 07:09:54

标签: sitecore sitecore6 sitecore-dms personalization

现在我正在研究sitecore项目,我需要在不在子布局上的记录上添加个性化。 E.g我的项目是基于报告的,我希望显示报告给出以下标准。

  1. 如果是注册用户,则根据客户兴趣报告显示(客户在注册时添加的客户利益。)
  2. 如果它是匿名用户,则报告会根据客户的国家/地区显示(我们如何通过匿名用户获取客户所在国家/地区?)
  3. 从Cookie中获取最近搜索到的信息并显示结果。
  4. 请帮助我以上方案。提前谢谢。

1 个答案:

答案 0 :(得分:3)

个性化可以通过以下方式实现:

回答2:

使用地理IP查找数据收集您所追踪的国家/地区信息。因此,通过第三方Web服务向Sitecore Engagement Analytics提供Geo IP查找数据。地理IP数据存储在Google Analytics数据库中,因此不必为返回的访问者执行查找。请记住,默认安装仅附带第三方Web服务的试用版,因此需要付费。

Engagement Analytics API主要用于使用

访问访问者数据
  • Sitecore.Analytics.Tracker
  • Sitecore.Analytics.TrackerDataContext

以下是人们如何访问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的类

  • Sitecore.Analytics.Data.TrackingField
  • Sitecore.Analytics.Data.ContentProfile
  • Sitecore.Analytics.Data.ContentProfileKeyData

应该为您提供足够的数据,以便自定义报告显示。

以下是访问个人资料数据的方式:

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中找到重要信息