احصل على درجة مفتاح الملف الشخصي للصفحة الفردية في Sitecore

StackOverflow https://stackoverflow.com/questions/3943186

سؤال

لدي سؤال بخصوص Sitecore Analytics ومفاتيح ملف تعريف المستخدم. يجب أن أكون قادرًا على الحصول على درجة مفتاح الملف الشخصي لصفحة فردية. على سبيل المثال ، إذا كان لدي مفتاح ملف تعريف يسمى "Traveler" يمكن أن يكون له قيمة من 1 إلى 10 على صفحة معينة ، فيجب أن أكون قادرًا على الحصول على القيمة لهذا المفتاح الذي تم تعيينه من قبل مؤلف المحتوى. لقد وجدت ذلك باستخدام ما يلي:

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

يمكنني الحصول على النتيجة الإجمالية التي جمعها المستخدم طوال جلسته ، لكن لا يبدو لي أن أجد طريقة للحصول على النتيجة فقط للصفحة الحالية.

أي رؤية يمكن لأي شخص تقديمها موضع تقدير كبير. شكرًا.

هل كانت مفيدة؟

المحلول

أعلم أن هذا المنشور قديم إلى حد ما ، ولكن بالنسبة للمراجع المستقبلية ، تغير الكثير في 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();
    }

مع أطيب التحيات lasse rasch

نصائح أخرى

بعد بعض الأبحاث ، وجدت أن هذا يتم تخزينه كسلسلة 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 كالعادة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top