Персонализация в SItecore
Я хочу отобразить какой-то другой подслой, если пользователь посещал какую-то страницу более 2 раз, поэтому я хочу использовать эти правила "где число посещений сравнивается с числом", но я не представляю, как я могу его использовать? Я пытался добавить это правило и заменить "число" на 2, но оно не работает.
2 ответа
Как сказал Марек, это невозможно при условии, которое вы используете. Однако вы можете изменить условие правила, чтобы достичь этого, посмотрев на страницу 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;
}
}
Как сказал Марек Мусиелак, Where the visit no. compares to ..
связанные с посещением сайта, а не отдельной страницы.
Я посмотрел в Sitecore API, его Tracker
Пространство имен и ближайшее свойство, которое я могу найти для отдельных просмотров страниц, VisitPageIndex
но декомпиляция кода и проверка в MongoDB
показывает, что это был только индекс страницы, просмотренной для этого посещения сайта, так что это не сработает для вас.
Ищу в MongoDB
нет свойств для хранения просмотров страниц, но он хранит Pages
просмотрено для Interactions
так что вы можете написать собственное правило, подсчитывающее, сколько раз эта страница находится в массиве страниц
например
int pageViewed = Tracker.Current.Session.Interaction.Pages.Count(p => p.Item.Id.Equals(yourPageId))
Альтернативный вариант, если вы не хотите писать пользовательские, - это немного изменить свой подход к работе сканирования персонализации Sitecore из коробки.
Вы хотите использовать или создать profile keys
в Marketing Centre
например, "узнаваемый бренд". Назначьте свой новый profile key
на страницу, о которой идет речь, и присвойте ей оценку, например, 10. Это означает, что каждый раз, когда пользователь посещает эту страницу, ему присваивается 10 баллов в разделе "Информация о бренде".
Теперь немного о персонализации. Создать новое правило персонализации на существующем sublayout
с помощью "где значение конкретного ключа профиля сравнивается с конкретным значением" установите его, чтобы скрыть, если оценка greater than or equal to
20. Создайте другой, чтобы показать ваш новый sublayout
если значение greater than or equal to
20.
Я написал блог об этом, если вам нужно больше информации