פיתוח מודול התאמה אישית של תוכן עבור 1C-Bitrix

כאשר כל מבקר רואה את אותו תוכן, ההמרות נפגעות: חדשים חסרי הדרכה, ולקוחות חוזרים מפספסים הצעות רלוונטיות. אנו מפתחים מודול התאמה אישית עבור 1C-Bitrix שמתאים דפים לתחומי העניין וההתנהגות של המשתמשים. הצוות שלנו מספק פתרון מלא—מהגדרת חוקים ועד הטמעה ותמיכה שוטפת—כך שהאתר שלך מדבר אל כל לקוח בשפתו שלו.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פיתוח מודול התאמה אישית של תוכן עבור 1C-Bitrix
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

תארו לעצמכם חנות מקוונת על 1C-Bitrix עם 50,000 מוצרים. מבקר חדש רואה את אותו דף נחיתה כמו לקוח סיטונאי. ההמרה יורדת, והפרסונליזציה נעדרת. זהו מצב אופייני לפרויקטים רבים: בלוקי תוכן סטטיים אינם מתחשבים בתחומי העניין של פלחים שונים. אנו מפתחים מודול פרסונליזציה של תוכן שפותר בעיה זו. לצוות שלנו יש ניסיון של 7+ שנים בפיתוח 1C-Bitrix והוא השלים מעל 50 פרויקטים.

בלוקים מותאמים אישית מניבים CTR גבוה ב-35–50% מאשר בלוקים סטטיים, וההמרה בקבוצות מפולחות גדלה פי 1.5–2. המודול משתלב בקלות עם קטלוג המסחר הקיים ועם CRM. לפי הנתונים שלנו, יישום פרסונליזציה מגדיל את LTV ב-20% ומקצר את מסלול הרכישה ב-30%.

מדוע כלי Bitrix הסטנדרטיים אינם מספיקים לפרסונליזציה של תוכן?

קבוצות משתמשים עם הגבלות גישה אינן מספקות פרסונליזציה גמישה. לא ניתן להציג תוכן שונה למבקר חדש וללקוח עם הזמנות. כפי שמציינת תיעוד 1C-Bitrix, קבוצות משתמשים אינן מיועדות לפרסונליזציה גמישה. לשם כך יש צורך בפלחים עם תנאים דינמיים, פרופילים התנהגותיים וסוכני חישוב מחדש. המודול שלנו vendor.personalize מוסיף פונקציונליות זו מבלי לשנות את הליבה.

כיצד מודול פרסונליזציית התוכן משפר את ההמרה?

המודול בונה מודל נתונים הכולל את הישויות הבאות:

  • b_vendor_ps_rule — כללי פרסונליזציה: מזהה, שם, עדיפות, תנאים (JSON), פעולה (JSON), is_active, created_at
  • b_vendor_ps_segment — פלחי קהל: מזהה, שם, תנאים (JSON), is_active
  • b_vendor_ps_user_segment — חברות משתמש בפלחים: user_id, segment_id, assigned_at
  • b_vendor_ps_impression — חשיפות של תוכן מותאם אישית: מזהה, rule_id, user_id, session_id, element_id, created_at
  • b_vendor_ps_profile — פרופיל התנהגותי: user_id או session_id, נתונים (JSON: קטגוריות שנצפו, קטגוריות, מקור, מדדי RFM)

פילוח והערכת תנאים — פיתוח מודול הפרסונליזציה

פלחים מוגדרים על ידי קבוצת תנאים. דוגמה לתנאים לפלח "משתמשים חמים" — ביקרו 3+ פעמים ב-7 הימים האחרונים, הגיעו מחיפוש, עדיין לא רכשו:

{
  "logic": "AND",
  "rules": [
    {
      "type": "visit_count",
      "operator": ">=",
      "value": 3
    },
    {
      "type": "has_orders",
      "operator": "=",
      "value": false
    },
    {
      "type": "last_visit_days",
      "operator": "<=",
      "value": 7
    },
    {
      "type": "traffic_source",
      "operator": "=",
      "value": "google"
    }
  ]
}

הערכת התנאים מתבצעת על ידי המחלקה { "logic": "AND", "rules": [ {"type": "visit_count", "operator": ">=", "value": 3}, {"type": "has_orders", "operator": "=", "value": false}, {"type": "last_visit_days", "operator": "<=", "value": 7}, {"type": "traffic_source", "operator": "=", "value": "google"} ] } :

class SegmentEvaluator {
    public function evaluate(array $conditions, PersonalityProfile $profile): bool {
        $logic = $conditions['logic'] ?? 'AND';
        $results = [];
        foreach ($conditions['rules'] as $rule) {
            $results[] = $this->evaluateRule($rule, $profile);
        }
        return $logic === 'AND' ? !in_array(false, $results) : in_array(true, $results);
    }

    private function evaluateRule(array $rule, PersonalityProfile $profile): bool {
        return match ($rule['type']) {
            'visit_count' => $this->compare($profile->getVisitCount(), $rule['operator'], $rule['value']),
            'has_orders' => $profile->hasOrders() === (bool)$rule['value'],
            'last_visit_days' => $this->compare($profile->getDaysSinceLastVisit(), $rule['operator'], $rule['value']),
            'traffic_source' => $profile->getTrafficSource() === $rule['value'],
            'city_id' => in_array($profile->getCityId(), (array)$rule['value']),
            default => true,
        };
    }
}

פרופיל התנהגותי

כל ביקור מעדכן את פרופיל הסשן/המשתמש. מעל 100,000 פרופילים מעובדים במהלך הלילה.

// Инициализируется в init.php через событие OnProlog
PersonalityProfileCollector::collect([
    'page' => $_SERVER['REQUEST_URI'],
    'referrer' => $_SERVER['HTTP_REFERER'] ?? null,
    'utm_source' => $_GET['utm_source'] ?? null,
    'iblock_section' => $APPLICATION->GetCurDir(), // текущий раздел
]);

הפרופיל מאוחסן ב-SegmentEvaluator כ-JSON ומכיל: מונה ביקורים, קטגוריות שנצפו, תאריכי ביקור ראשון ואחרון, מקור הביקור הראשון, דגל קיום הזמנה.

בלוקים מותאמים אישית

רכיב class SegmentEvaluator { public function evaluate(array $conditions, PersonalityProfile $profile): bool { $logic = $conditions['logic'] ?? 'AND'; $results = []; foreach ($conditions['rules'] as $rule) { $results[] = $this->evaluateRule($rule, $profile); } return $logic === 'AND' ? !in_array(false, $results) : in_array(true, $results); } private function evaluateRule(array $rule, PersonalityProfile $profile): bool { return match ($rule['type']) { 'visit_count' => $this->compare($profile->getVisitCount(), $rule['operator'], $rule['value']), 'has_orders' => $profile->hasOrders() === (bool)$rule['value'], 'last_visit_days' => $this->compare($profile->getDaysSinceLastVisit(), $rule['operator'], $rule['value']), 'traffic_source' => $profile->getTrafficSource() === $rule['value'], 'city_id' => in_array($profile->getCityId(), (array)$rule['value']), default => true, }; } } — מחליף בלוק תוכן סטטי:

// В шаблоне страницы:
$APPLICATION->IncludeComponent('vendor:personalize.block', '', [
    'ELEMENT_ID' => 'hero_cta', // идентификатор блока на странице
]);

הרכיב מוצא את כלל הפרסונליזציה הפעיל עבור המשתמש הנוכחי ומציג את התוכן המתאים. פעולות הכלל יכולות להיות:

  • // Инициализируется в init.php через событие OnProlog PersonalityProfileCollector::collect([ 'page' => $_SERVER['REQUEST_URI'], 'referrer' => $_SERVER['HTTP_REFERER'] ?? null, 'utm_source' => $_GET['utm_source'] ?? null, 'iblock_section' => $APPLICATION->GetCurDir(), // текущий раздел ]); — הצגת טקסט/HTML
  • b_vendor_ps_profile — הצגת אלמנט ספציפי של בלוק מידע
  • vendor:personalize.block — הצגת באנר מ-// В шаблоне страницы: $APPLICATION->IncludeComponent('vendor:personalize.block', '', [ 'ELEMENT_ID' => 'hero_cta', // идентификатор блока на странице ]);
  • show_text — הפניה לכתובת URL

חישוב מחדש של פלחים

חברות בפלח אינה נקבעת בכל בקשה — זה יקר. סוכן מחשב מחדש פלחים בלילה:

// Для каждого активного сегмента — пересчёт из b_vendor_ps_profile
// Результат — INSERT/DELETE в b_vendor_ps_user_segment
SegmentCalculator::recalculate();

למשתמשי סשן חדשים (לא מאומתים) — הערכה בזמן אמת באמצעות נתוני סשן. החישוב מחדש אורך 2 דקות עבור 5000 משתמשים.

אנליטיקה

  • CTR של בלוקים מותאמים אישית לעומת סטנדרטיים (השוואה עם קבוצת ביקורת)
  • התפלגות משתמשים לפי פלחים
  • המרה לפי פלח להזמנות

השוואה: קבוצות סטנדרטיות לעומת מודול פרסונליזציה

קריטריון קבוצות גישה סטנדרטיות מודול פרסונליזציה
תנאי תצוגה רק הרשאות סטטיות פלחים דינמיים
נתונים התנהגותיים לא בשימוש פרופיל מלא
גמישות נמוכה גבוהה (כללי JSON)
השפעה על המרה אין +35-50% CTR
ניהול מובנה ממשק מותאם אישית

מה כלול בעבודה

פרטי תיעוד - תיאור מודל הנתונים - מפרט API - לוגיקת פילוח
  • קוד מקור של המודול עם מיגרציות
  • מדריך התקנה והגדרת סוכנים
  • הדרכת מנהלים לעבודה עם כללים ופלחים
  • אחריות ל-6 חודשים על קוד המודול

כיצד להגדיר את המודול ב-5 שלבים

  1. התקינו את מודול show_iblock_element דרך Marketplace או העלאה ידנית.
  2. הריצו מיגרציות ליצירת טבלאות ORM.
  3. הגדירו את סוכן איסוף הפרופילים בהגדרות המודול.
  4. צרו פלחים וכללים דרך הממשק הניהולי.
  5. הציבו את רכיב show_banner בתבניות הרצויות.

לוח זמנים לפיתוח

שלב זמן
טבלאות ORM, מודל פלחים וכללים יום אחד
פרופיל התנהגותי, איסוף נתונים יומיים
הערכת תנאי פילוח יומיים
סוכן חישוב מחדש של פלחים יום אחד
רכיב בלוק מותאם אישית יומיים
אנליטיקה וממשק ניהולי יומיים
בדיקות יום אחד

סה"כ: 11 ימי עבודה. אינטגרציה עם מודלי המלצות ML (סינון שיתופי) היא פרויקט נפרד.

העריכו את האפקטיביות של פרסונליזציה לחנות שלכם — קבלו הערכה מוקדמת. צרו קשר לייעוץ. הזמינו פיתוח מודול פרסונליזציה למשימות שלכם.