Получить ключевой счет профиля для отдельной страницы в Sitecore - PullRequest
3 голосов
/ 15 октября 2010

У меня вопрос по поводу Sitecore Analytics и ключей профиля пользователя. Мне нужно иметь возможность получить оценку ключа профиля для отдельной страницы. Например, если у меня есть ключ профиля с именем «путешественник», который может иметь значение 1–10 на данной странице, я должен иметь возможность получить значение для этого ключа, которое было назначено автором контента. Я обнаружил, что с помощью следующего:

Sitecore.Analytics.AnalyticsTracker.Current.Data.Profiles.GetProfile("Profile Name").GetProfileKeyValue("traveler")

Я могу получить общий балл, набранный пользователем за весь сеанс, но я не могу найти способ получить балл только для текущей страницы.

Буду очень признателен за любые идеи, которые кто-либо может предложить. Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2013

Я знаю, что этот пост довольно старый, но для будущих ссылок многое изменилось в Sitecore.Я не знаю, было ли это возможно в 2010 году, но по крайней мере в 2013 году существуют методы API для извлечения значений отслеживания страницы.

Я бы никогда не рекомендовал вручную анализировать необработанные данные в поле __Tracking..

Вот как можно прочитать данные отслеживания для профиля Persona с помощью API Sitecore Analytics:

public static string ProfileValues(this Item item)
{
        StringBuilder sb = new StringBuilder();

        TrackingField trackingField = new TrackingField(item.Fields[Constants.Sitecore.FieldIDs.Tracking]);
        ContentProfile profile = trackingField.Profiles.FirstOrDefault(profileData =>
                                profileData.Name.Equals("Persona") && profileData.IsSavedInField);

        ContentProfileKeyData[] profileKeys = profile.Keys;

        foreach (ContentProfileKeyData profileKey in profileKeys)
        {
            sb.AppendLine(string.Format("{0}:{1};", profileKey.Name, profileKey.Value));
        }
        return sb.ToString();
    }

С наилучшими пожеланиями, Лассе Раш

2 голосов
/ 20 октября 2010

После некоторых исследований я обнаружил, что это хранится в виде строки XML в поле с именем __Tracking для каждого элемента. Доступ к нему можно получить, как и к любому другому полю данных, используя коллекцию Fields. Например:

Item itemToCheck = Sitecore.Context.Database.GetItem("/path to item/");
string trackingXml = itemToCheck.Fields["__Tracking"].ToString();

XML в строке структурирован так:

<tracking>
    <profile name="profile1">
        <key name="key1" value="1" />
        <key name="key2" value="10" />
    </profile>
    <profile name="profile2">
        <key name="key3" value="12" />
        <key name="key4" value="4" />
    </profile>
</tracking>

Эта строка может быть преобразована в XmlDocument и обработана с использованием SelectNodes как обычно

...