פיתוח פתרון White-Label על 1C-Bitrix
חברת פיתוח יוצרת מוצר שלקוחות מוכרים תחת המותג שלהם—זהו White-Label. אגרגטור תיירות, שער תשלום, מערכת CRM או מרקטפלייס: כל אלה יכולים להיבנות כ-White-Label על 1C-Bitrix. בסיס קוד אחד, עשרות התקנות עם מיתוג שונה—או התקנה אחת עם ריבוי דיירים (Multi-Tenancy). אנו מתמחים בפתרונות כאלה ומבטיחים ארכיטקטורה שמתרחבת מ-5 עד 500 לקוחות ללא שכתוב הליבה.
השאלה הטכנית המרכזית בתחילת הדרך היא בחירה בין בסיס קוד אחד לכל הלקוחות או התקנה נפרדת לכל אחד. בחירה זו קובעת את הארכיטקטורה העתידית, עלות התחזוקה ומהירות הפריסה. להלן אנו מנתחים את שני המודלים.
שני מודלים ארכיטקטוניים
Bitrix Multi-Site (התקנה אחת, מספר אתרים). Bitrix תומך במספר אתרים בתוך התקנה אחת. כל אתר הוא רשומה ב-b_lang, תבנית נפרדת ב-/local/templates/{SITE_ID}/, הגדרות משלו ב-b_option. נתונים (מוצרים, משתמשים, הזמנות) יכולים להיות משותפים או מופרדים לפי אתר. מתאים כאשר יש מעט לקוחות (עד 20–30 אתרים), נתונים משותפים חלקית, וצוות אחד מנהל את כל האתרים. חיסכון בעלויות רישוי יכול להגיע ל-30%.
התקנות נפרדות. כל לקוח מקבל התקנת Bitrix עצמאית. בסיס הקוד המשותף מסופק כמודול או דרך Git. עדכונים נפרסים בנפרד לכל התקנה. מתאים כאשר לקוחות רוצים עצמאות (נתונים משלהם, גיבויים משלהם), דורשים תצורות שונות, או שיש דרישות בידוד נתונים מחמירות (GDPR, בריאות).
כיצד פועל ריבוי דיירים בהתקנה אחת?
עבור אגרגטורים ומוצרי SaaS על Bitrix, נבנית ארכיטקטורת Multi-Tenant:
-
טבלת
b_lang—כל אתר (דייר) עםLIDייחודי - תבניות—תבנית בסיס משותפת (
/local/templates/base/) + שכתובים ב-/local/templates/{TENANT_ID}/ - הגדרות דייר—טבלה מותאמת
b_tenant_settingsעם זוגותTENANT_ID / KEY / VALUE - משתמשים—טבלת
b_userמשותפת, הפרדה לפי קבוצות ו-SITE_ID
מיתוג לכל דייר:
// В init.php или в header шаблона $tenantId = SITE_ID; $tenantConf = TenantSettingsTable::getByTenantId($tenantId); define('TENANT_PRIMARY_COLOR', $tenantConf['PRIMARY_COLOR'] ?? '#0052cc'); define('TENANT_LOGO_URL', $tenantConf['LOGO_URL'] ?? '/logo.svg'); define('TENANT_DOMAIN', $tenantConf['DOMAIN']); משתני CSS נוצרים דינמית דרך PHP ונשמרים במטמון ברמת העמוד:
$css = ":root { --primary: " . TENANT_PRIMARY_COLOR . "; --brand-font: " . $tenantConf['FONT'] . "; }"; פיתוח ליבת המוצר כמודול Bitrix
אם קוד המוצר מסופק למספר לקוחות, עדיף לארוז אותו כמודול Bitrix. המודול מותקן דרך // В init.php или в header шаблона $tenantId = SITE_ID; $tenantConf = TenantSettingsTable::getByTenantId($tenantId); define('TENANT_PRIMARY_COLOR', $tenantConf['PRIMARY_COLOR'] ?? '#0052cc'); define('TENANT_LOGO_URL', $tenantConf['LOGO_URL'] ?? '/logo.svg'); define('TENANT_DOMAIN', $tenantConf['DOMAIN']); ונרשם ב-$css = ":root { --primary: " . TENANT_PRIMARY_COLOR . "; --brand-font: " . $tenantConf['FONT'] . "; }"; :
/local/modules/vendor.whitelabel/ ├── install/ │ ├── index.php │ └── db/install.sql ├── lib/ │ ├── TenantManager.php │ ├── BrandingService.php │ └── ... ├── options.php └── include.php יתרון: המודול מתעדכן דרך המנגנון הסטנדרטי של Bitrix (/bitrix/admin/partner_modules.php, b_module), בדומה למודולים סטנדרטיים. בפועל, זה מקצר את זמן הפריסה ב-50%.
הפעלת תכונות לפי רמת שירות
White-Label כולל לעיתים קרובות תוכניות מדורגות: בסיסית, סטנדרטית, פרימיום. כל רמה פותחת או מגבילה פונקציונליות.
בדיקת זמינות תכונה:
public static function hasFeature(string $feature, string $tenantId = SITE_ID): bool { $plan = self::getTenantPlan($tenantId); $features = self::PLAN_FEATURES[$plan] ?? []; return in_array($feature, $features, true); } if (!TenantLicenseManager::hasFeature('advanced_analytics')) { // Заглушка или редирект на страницу апгрейда } מטריצת התכונות נשמרת בקוד או במסד נתונים. שינויי רמה נכנסים לתוקף ללא פריסה.
ממשק ניהול ללקוחות
הלקוח של מוצר White-Label צריך לנהל את ההתקנה שלו. זה לא פאנל הניהול הסטנדרטי של Bitrix—הוא מוגזם ולא מאובטח. נבנה "לוח מחוונים לשותף" נפרד:
- ניהול מיתוג (העלאת לוגו, בחירת צבעים)
- ניהול משתמשים עבור הדייר שלהם
- סטטיסטיקות ואנליטיקה
- הגדרות התראות ואינטגרציות
יישום: קטע אתר נפרד עם הרשאה לפי קבוצת /local/modules/vendor.whitelabel/ ├── install/ │ ├── index.php │ └── db/install.sql ├── lib/ │ ├── TenantManager.php │ ├── BrandingService.php │ └── ... ├── options.php └── include.php . רכיבים ב-ModuleManager::isModuleInstalled().
למה חשוב בידוד נתונים בין דיירים?
בעיית אבטחה קריטית: הנתונים של דייר א' אסור שיהיו גלויים לדייר ב'. בכל שאילתות אינפובלוק, מתווסף מסנן חובה לפי ModuleManager::install() או שדה public static function hasFeature(string $feature, string $tenantId = SITE_ID): bool { $plan = self::getTenantPlan($tenantId); $features = self::PLAN_FEATURES[$plan] ?? []; return in_array($feature, $features, true); } if (!TenantLicenseManager::hasFeature('advanced_analytics')) { // Заглушка или редирект на страницу апгрейда } מותאם:
$filter = array_merge($userFilter, ['=PROPERTY.TENANT_ID' => CURRENT_TENANT_ID]); $res = CIBlockElement::GetList([], $filter, ...); עבור נתונים קריטיים (מידע תשלומים, נתונים אישיים), מומלץ הפרדת מסדי נתונים בין דיירים—כל דייר עובד עם סכמת PostgreSQL משלו. Bitrix לא תומך בזה כברירת מחדל, אבל זה ניתן להשגה על ידי החלפת אובייקט TENANT_ADMIN בתחילת כל בקשה.
כיצד לעדכן את בסיס הקוד עם לקוחות רבים?
ניהול מספר התקנות הוא המשימה התפעולית המורכבת ביותר. עם התקנות נפרדות, יש צורך במערכת פריסת עדכונים אוטומטית:
- מאגר Git עם קוד המודול/התבניות
- CI/CD (GitLab CI, GitHub Actions) לפריסה לכל שרת דרך SSH או Ansible
- ניהול גרסאות: למודול יש
/local/components/vendor.whitelabel/tenant.admin.*ב-SITE_ID, ונבדקת תאימות לגרסת Bitrix של הלקוח לפני העדכון
עם התקנה אחת, העדכונים פשוטים יותר—פריסה אחת.
טעויות נפוצות בעיצוב White-Label
- התעלמות ממטמון—מטמון מתויג עם מודעות לדייר הוא חובה
- שמירת הגדרות בקבועים סמליים במקום במסד הנתונים
- חוסר ניטור ביצועים ככל שמספר הדיירים גדל
מה כלול בעבודה שלנו?
אנו מספקים חבילה מלאה: תיעוד ארכיטקטורה, הגדרת CI/CD, הדרכת צוות הלקוח, תמיכה טכנית בהשקה ותחזוקת עדכונים. ההיקף המדויק מובהר במהלך הגדרת הפרויקט.
לוחות זמנים משוערים
| שלב | מה כלול | משך |
|---|---|---|
| אב-טיפוס (דייר אחד) | ארכיטקטורה, מיתוג בסיסי, לוח מחוונים | 4–6 שבועות |
| White-Label מלא | + רמות שירות, Multi-Tenant, CI/CD | 8–16 שבועות |
| בידוד ארגוני | + הפרדת מסדי נתונים, ביקורת, SLA | 16–24 שבועות |
השוואת ארכיטקטורות
| קריטריון | Multi-Site | התקנות נפרדות |
|---|---|---|
| בידוד נתונים | בינוני (סינון לפי SITE_ID) | מלא (מסד נתונים משלו) |
| מורכבות עדכונים | נמוכה (פריסה אחת) | גבוהה (CI/CD לכל התקנה) |
| מספר לקוחות מקסימלי | ~30 | ללא הגבלה |
| רישוי | רישיון אחד | לכל התקנה |
דוגמה מהעולם האמיתי
לאחרונה עזרנו ללקוח אגרגטור B2B לבנות מרקטפלייס White-Label על Bitrix. אב-הטיפוס הראשוני לדייר הראשון שלהם לקח 5 שבועות. לאחר הוספת לוגיקת Multi-Tenant ותוכניות מדורגות, הם הכניסו 12 דיירים ברבעון הראשון. המערכת מטפלת כיום ב-50+ דיירים עם בידוד נתונים מלא ו-CI/CD אוטומטי. מדדי ביצועים מראים זמני טעינת עמוד מתחת ל-2 שניות גם עם 200 בקשות במקביל ברמת מסד הנתונים.
White-Label על Bitrix הוא שימוש לא סטנדרטי בפלטפורמה הדורש הבנה עמוקה של הארכיטקטורה שלה. עם עיצוב נכון, המערכת מתרחבת מ-5 עד 500 לקוחות ללא שכתוב הליבה. הניסיון שלנו של 10+ שנים ומומחים מוסמכים מבטיחים פתרון אמין. הזמינו אב-טיפוס היום. צרו קשר לייעוץ על ארכיטקטורת המוצר שלכם.







