【问题标题】:Personalization in SItecoreSitecore 中的个性化
【发布时间】:2016-03-07 04:37:10
【问题描述】:

如果用户访问某个页面超过 2 次,我想显示一些不同的子布局,所以我想使用“访问编号与数字比较的位置”这个规则,但我不知道如何使用它?我尝试添加此规则并将“数字”替换为 2,但它不起作用。

【问题讨论】:

  • 您使用的是哪个版本的 Sitecore 8? “我不知道如何使用它”是什么意思。您是否在子布局上设置了规则并发布了它?
  • 这里有一篇关于设置个性化的好文章 - nonlinearcreations.com/Digital/how-we-think/articles/2014/06/…
  • Where the visit no. compares to ... 规则意味着它是用户在网站上的第 n 次访问,而不是用户多次打开其中一个页面。

标签: sitecore sitecore8 personalization


【解决方案1】:

正如 Marek 所说,这在您使用的条件下是不可能的。但是,您可以通过查看页面的 VisitPageIndex 来调整规则条件以实现此目的。

public class ContactVisitPageIndexCondition<T> : OperatorCondition<T> where T : RuleContext
{
    public int No
    {
        get;
        set;
    }

    public ID PageGUID 
    {
        get;
        set;
    }

    public ContactVisitPageIndexCondition()
    {
    }

    protected override bool Execute(T ruleContext)
    {
        Assert.ArgumentNotNull(ruleContext, "ruleContext");
        Assert.IsNotNull(Tracker.Current, "Tracker.Current is not initialized");
        Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session is not initialized");
        Assert.IsNotNull(Tracker.Current.Session.Interaction, "Tracker.Current.Session.Interaction is not initialized");
        int contactVisitPageIndex  =  Tracker.Current.Session.Interaction.Pages.SingleOrDefault(p => p.Item.Id == PageGUID).VisitPageIndex;
        switch (base.GetOperator())
        {
            case ConditionOperator.Equal:
            {
                return contactVisitPageIndex == this.No;
            }
            case ConditionOperator.GreaterThanOrEqual:
            {
                return contactVisitPageIndex >= this.No;
            }
            case ConditionOperator.GreaterThan:
            {
                return contactVisitPageIndex > this.No;
            }
            case ConditionOperator.LessThanOrEqual:
            {
                return contactVisitPageIndex <= this.No;
            }
            case ConditionOperator.LessThan:
            {
                return contactVisitPageIndex < this.No;
            }
            case ConditionOperator.NotEqual:
            {
                return contactVisitPageIndex != this.No;
            }
        }
        return false;
    }
}

【讨论】:

  • VisitPageIndex 很痛苦,只返回在联系人访问中查看过的页面的索引,但这是一个很好的答案 - 只需将 Tracker.Current.Session.Interaction.Pages.SingleOrDefault(p =&gt; p.Item.Id == PageGUID).VisitPageIndex; 替换为 Tracker.Current.Session.Interaction.Pages.Count(p =&gt; p.Item.Id.Equals(yourPageId))
【解决方案2】:

正如 Marek Musielak 所说,Where the visit no. compares to .. 与访问该网站有关,而不是与单个页面有关。

我查看了 Sitecore API,它的 Tracker 命名空间和我能找到的与单个页面查看次数最接近的属性是 VisitPageIndex,但反编译代码并签入 MongoDB 表明这只是 该页面的索引是针对该网站的访问而查看的,因此这对您不起作用。

MongoDB 中查找没有用于存储页面浏览量的属性,但它确实存储了为Interactions 查看的Pages,因此您可以编写一个自定义规则来计算该页面在 Pages 数组中的次数

例如

int pageViewed = Tracker.Current.Session.Interaction.Pages.Count(p => p.Item.Id.Equals(yourPageId))

如果您不想编写自定义代码,另一种方法是根据 Sitecore 个性化扫描开箱即用的工作方式更改您的方法。

您需要在Marketing Centre 中使用或创建profile keys,例如“品牌意识”。将您的新profile key 分配给相关页面并为其分配一个分数,例如10. 这意味着每次用户访问此页面时,他们将获得 10 分的“品牌意识”。

现在是个性化位。在现有 sublayout 上创建新的个性化规则,使用“特定配置文件键的值与特定值比较的位置”将其设置为隐藏,如果分数为 greater than or equal to 20。创建另一个以显示新的 sublayout,如果值为greater than or equal to 20。

you need more infoyou need more info

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多