gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:20:09 25 4
gpt4 key购买 nike

现在我正在从事 sitecore 项目,我需要在记录而不是子布局上添加个性化。例如,我的项目是基于报告的,我想显示报告给出以下标准。

  1. 如果是注册用户,则报告会根据客户兴趣显示。(客户因注册而添加的客户兴趣。)
  2. 如果是匿名用户,报告会根据客户所在的国家/地区显示(我们如何获得匿名用户的客户所在国家/地区?)
  3. 从 cookie 中获取上次搜索信息的报告并显示结果。

请帮我解决上面的问题。提前致谢。

最佳答案

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

答案 2:

使用 Geo IP 查找数据来收集您想要的国家/地区信息。因此,Geo IP 查找数据通过第三方网络服务提供给 Sitecore Engagement Analytics。 Geo IP 数据存储在 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:

您可以使用存储在跟踪字段中的数据并获取有关您的注册用户个人资料的特定信息。

Again 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

关于sitecore - 如何在 sitecore 中管理记录的个性化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com