Программно отслеживать посещение элемента с карточкой профиля

Мы только что завладели сайтом, который клиент хочет персонализировать с помощью карт профилей и шаблонов.

Однако способ создания сайтов означает, что посетитель никогда не переходит по URL-адресу элемента, которому была бы назначена карточка профиля. Вместо этого переход на одну страницу и значение в строке запроса сообщает странице, какие данные элементов должны быть загружены. Поэтому пользователь никогда не отслеживается как посещающий элемент, и карточка профиля не влияет на профиль пользователя.

Есть ли способ прагматически запустить то, что обычно происходит, чтобы пользователи повышали оценку профиля для этих страниц?

Сайт использует Sitecore 7.2.


person Tim Griffiths    schedule 08.04.2015    source источник


Ответы (3)


У вас должна быть возможность программно активировать профиль с помощью Analytics API.

 var profile = Sitecore.Analytics.Tracker.CurrentVisit.GetOrCreateProfile("<Profile Name>");
 profile.BeginEdit();
 profile.Score("<profile key>",<profile key value you want to set>);
 profile.Score("<profile key>",<profile key value you want to set>);
 profile.UpdatePattern(); //sets the appropriate pattern based on the       current profile keys values you have just set.
 profile.EndEdit();

Я бы также взглянул на другие методы объекта Sitecore.Analytics.Tracker.CurrentVisit для выполнения других операций.

person Ian Graham    schedule 08.04.2015
comment
Это заменит текущие оценки для каждого ключа введенным значением, а не добавит просмотр элемента в историю пользователей, а оценка будет обновляться обычным способом с использованием комбинации всех просмотров страниц, не так ли? - person Tim Griffiths; 09.04.2015
comment
почему у вас есть строка profile.Score(‹ключ профиля›,‹значение ключа профиля, которое вы хотите установить›); дважды - person AndrewThompson; 25.01.2017

Вы хотите регистрировать события страницы? Если это так, вы можете попробовать программно создать элементы событий страницы и зарегистрировать их.

Пример:

PageEventItem pei = new PageEventItem(goalItem);
VisitorDataSet.PageEventsRow pageEventsRow = Tracker.CurrentPage.Register(pei);
Sitecore.Analytics.Tracker.Submit();

Приведенный выше код предполагает, что вы программно получили элемент Sitecore для цели (goalItem). Затем он регистрирует событие страницы и отправляет изменение. Вы можете сделать то же самое с событиями или кампаниями.

Другие источники:

person Jay S    schedule 09.04.2015
comment
Я попытался зарегистрировать событие просмотра страницы для элемента, содержащего данные (которому также назначена карточка профиля), но это, похоже, не повлияло на текущую оценку профиля пользователя. Просто добавил запись о событии страницы. - person Tim Griffiths; 09.04.2015

Покопавшись в dll аналитики, я обнаружил, что это можно сделать.

Sitecore.Data.Database db = Sitecore.Configuration.Factory.GetDatabase("web");
(new TrackingFieldProcessor()).Process(db.GetItem(new ID("395BDEF7-16CB-4C94-B9B6-A6EAC148401F")));

Это приведет к правильному обновлению значений ключей профиля, но история посетителей по-прежнему будет выглядеть так, как будто посетитель не просматривал страницу. Чтобы изменить это, вы можете сделать это.

VisitorDataSet.PagesRow rawUrl = Tracker.CurrentVisit.GetOrCreateCurrentPage();
rawUrl.Url = "new url value";
rawUrl.UrlText = "new url value";
person Tim Griffiths    schedule 15.05.2015