我们希望根据访客进行的所有访问(而不仅仅是当前访问(将访客与图案卡进行匹配。区段生成器规则"匹配模式"为:
where the visitor matches the [PatternName,Pattern,selectprofilefirst=1&resulttype=Name,specific] pattern card in the [ProfileName,Profile,resulttype=Name,specific] profile
这是从
Sitecore.Analytics.Rules.SegmentBuilder.Conditions.HasPatternCondition,Sitecore.SegmentBuilder
是否可以将其添加到页面编辑器可以为组件选择的可用个性化规则中,并在运行时对其进行评估?
Sitecore.NET 7.2(修订版140526(
区段生成器规则旨在根据您的条件匹配大量现有访问者。如果您检查代码中是否有任何区段生成器条件,您会发现它们构建了一个子句,该子句最终针对 Visitors 表执行。
您关于 OOTB 条件渲染规则仅匹配当前访问的图案卡是正确的。值得庆幸的是,扩展规则以包含所有访问的个人资料非常容易:
using Sitecore.Analytics;
using Sitecore.Analytics.Data.DataAccess;
using Sitecore.Analytics.Rules.Conditions;
using Sitecore.Rules;
namespace MyProject.Web.Analytics.Rules.Conditions.Patterns
{
public class VisitorHasPatternCondition<T> : HasPatternCondition<T> where T : RuleContext
{
protected override bool Execute(T ruleContext)
{
// Load all profiles into current dataset
Tracker.Visitor.LoadAll(VisitLoadOptions.Profiles, VisitorOptions.None);
return base.Execute(ruleContext);
}
}
}
LoadAll()
方法会将访问者的所有配置文件加载到当前数据集中。然后,我们调用基Execute()
方法,该方法检查数据集中是否匹配模式卡。