כאשר בפרויקט ביטריקס כבר קיים רכיב הזמנה סטנדרטי, אבל צריך להוסיף שלב לבחירת זמן משלוח או מעבר מותנה לאיסוף עצמי — הלוגיקה הסטנדרטית נשברת?
לקוחות מאבדים המרות, ומפתחים נכנסים לשבועות של תיקונים. אנחנו צוות עם ניסיון של 10+ שנים בפיתוח על ביטריקס ולמעלה מ-50 פרויקטים מוצלחים — אנו מגדירים תהליך הזמנה שלבי מאפס או משנים את הקיים. אנו מגדירים את מספר השלבים, הסדר, מעבר AJAX ושדות נוספים. העריכו את הפרויקט שלכם ביום אחד — פשוט כתבו לנו. לפי סטטיסטיקות, תהליך הזמנה שלבי מוגדר כראוי מגדיל את ההמרה פי 1.3 בהשוואה לטופס חד-עמוד, על ידי הפחתת העומס הקוגניטיבי על המשתמש. אנחנו פותרים משימות בכל רמת מורכבות: מהוספת שדה אחד ועד לוגיקה מורכבת עם מעברים מותנים, אינטגרציה עם 1C ופיסקליזציה.
איך פועל מצב שלבי
הרכיב bitrix:sale.order.ajax עם הפרמטר DELIVERY_MODE = SPLIT_DELIVERY מפצל את תהליך ההזמנה לשלבים. בתיקיית התבנית .default, יש order_ajax.php וקבצים step_*.php. המעבר בין השלבים נעשה על ידי פונקציית JavaScript orderAjax.gotoStep(). היא שולחת את נתוני השלב הנוכחי לשרת ומקבלת את ה-markup של השלב הבא. חשוב לשמר את מבנה משתני JS: arOrderAjaxFields, arDeliveryList, arPaySystemList. אם אובייקטים אלה לא ממולאים כראוי — מעבר AJAX יישבר.
איך להוסיף שלב חדש לתהליך ההזמנה השלבי?
התבנית ברירת המחדל תומכת ב-3 שלבים. כדי להוסיף שלב חדש (לדוגמה, "בחירת זמן משלוח" או "אריזת מתנה"), בצעו את האלגוריתם הבא:
- צרו עותק של התבנית ב-
/local/components/bitrix/sale.order.ajax/templates/. - הוסיפו קובץ
step_delivery_time.phpעם ה-markup של השלב. - רשמו את השלב במערך JavaScript
orderAjax.steps. - ב-handler
OnSaleComponentOrderMakeOrder, שמרו את נתוני השלב הנוסף במאפייני ההזמנה.
דוגמת קוד JS לרישום שלב
BX.message({STEP_DELIVERY_TIME: 'Выберите время доставки'}); orderAjax.steps.push('STEP_DELIVERY_TIME'); בשרת, במתודה BX.message({STEP_DELIVERY_TIME: 'Выберите время доставки'}); orderAjax.steps.push('STEP_DELIVERY_TIME'); , אנו בודקים אם השלב קיים בנתונים.
סיבות לשבירת הרכיב הסטנדרטי עם שלבים מותאמים אישית
הסיבה העיקרית היא אי-תאימות למבנה הנתונים הצפוי. כל שלב חייב להחזיר JSON עם שדות initStep, HTML, TITLE. אם הפורמט נשבר, DATA לא מעדכן את השלב. הסיבה השנייה היא חוסר טיפול בשדות חדשים בפונקציה orderAjax. אנו תמיד מוסיפים ולידציה לכל שדה מותאם אישית. לפי התיעוד הרשמי של ביטריקס, העתקת התבנית ל-/local היא הצעד הראשון לשימור שינויים במהלך עדכוני ליבה.
הגדרת מעברים מותנים בין שלבים
אם איסוף עצמי דורש דילוג על שלב הכתובת, זה מיושם באמצעות אירוע JS:
BX.addCustomEvent('onSaleOrderAjaxStepChange', function(currentStep, nextStep) {
if (currentStep === 'DELIVERY' && selectedDeliveryIsPickup()) {
orderAjax.gotoStep('PAYMENT');
return false;
}
});בשרת, אנו מסירים את הדרישה המחייבת לשדות כתובת עבור איסוף עצמי — באמצעות תנאי ב-checkValid.
איך להאיץ מעבר AJAX בין שלבים?
מעבר AJAX הוא כבר אסינכרוני, אבל ניתן להגדיל את המהירות באמצעות מטמון מתויג עבור רשימות משלוח ותשלום. השתמשו ב-BX.addCustomEvent('onSaleOrderAjaxStepChange', function(currentStep, nextStep) { if (currentStep === 'DELIVERY' && selectedDeliveryIsPickup()) { orderAjax.gotoStep('PAYMENT'); return false; } }); עם תגים OnSalePropertyValueCheck ו-Bitrix\Main\Data\Cache. כמו כן, השביתו קריאות מיותרות ל-sale_delivery באפילוג. עם הגדרה נכונה, שלב עובר תוך 200–400 אלפיות השנייה — פי 3 מהר יותר מטעינת עמוד מלאה.
השוואה: תהליך הזמנה שלבי מול חד-עמוד
| פרמטר | תהליך הזמנה שלבי | תהליך הזמנה חד-עמוד |
|---|---|---|
| המרה (ממוצע) | 68–72% | 55–60% |
| שדות על המסך | עד 7 | עד 20 |
| תמיכה בלוגיקה מורכבת | מעברים מותנים, שלבים מותאמים אישית | רק שדות בסיסיים |
| זמן פיתוח התאמה אישית | 2–5 ימים | 1–2 ימים |
| סיכון לשגיאות עם אינטגרציית 1C | בינוני (נדרשת בדיקה) | נמוך |
מה כלול בעבודה
- תיעוד: מפרט טכני עם תיאורי שלבים, דיאגרמת מצבים, מדריך הפעלה.
- גישה: הגדרת זכויות גישה לרכיב, תפקידים למפעילים.
- הדרכה: מפגש למנהלים על ניהול שלבים מותאמים אישית.
- תמיכה: שירות אחריות לשנה, ייעוץ בנושא שינויים.
שלבי העבודה
| שלב | מה אנחנו עושים | תוצאה |
|---|---|---|
| אנליטיקה | ביקורת על תכנית ההזמנה הנוכחית, בדיקת אינטגרציות (1C, מערכות תשלום) | מפרט טכני עם תיאורי שלבים |
| עיצוב | עיצוב מבנה השלבים, לוגיקת מעברים מותנים | דיאגרמת מצבים |
| יישום | כתיבת תבנית מותאמת אישית, הוספת שלבים, הגדרת AJAX | רכיב עובד ב-/local |
| בדיקות | בדיקה על כל התרחישים (איסוף עצמי, שליח, תשלום בכרטיס/מזומן) | רשימת בדיקות |
| פריסה | העלאה לשרת הייצור, מטמון מתויג, תיעוד | מדריך הפעלה |
לוחות זמנים ואחריות
הגדרה על בסיס הרכיב הסטנדרטי — 1–3 ימי עבודה. הוספת שלבים לא סטנדרטיים — 2–5 ימים. העלות נקבעת לאחר ניתוח הפרויקט שלכם ומקובעת בחוזה. הלקוחות שלנו חוסכים עד 40% מזמן השינויים בהשוואה להתאמה אישית עצמית. כל העבודות כוללות אחריות לשנה. הצוות הוא שותף מוסמך של 1C-Bitrix עם ניסיון של למעלה מ-10 שנים ויותר מ-50 חנויות מקוונות מיושמות. אנו משתמשים רק בתוכנה מורשית.
שגיאות טכניות נפוצות בהתאמה אישית
- התבנית לא הועתקה ל-
sale_pay_system— שינויים יאבדו במהלך עדכון הליבה. - השלב החדש לא נוסף ל-
GetList— כפתור "הבא" לא מופיע. - האירוע
/localלא מטופל עבור מעבר מותנה — המשתמש נתקע על שלב. - פיסקליזציה (חוק פדרלי 54-FZ) לא נשקלה בעת שינוי שלבים — קבלות לא עוברות. אנו מגדירים העברת נתונים ל-ATOL Online או דומה.
לפני תחילת העבודה, אנו בודקים עמידה בדרישות מ-ויקיפדיה: 1C-Bitrix ו-AJAX.
צרו קשר — נעריך את הפרויקט שלכם ביום אחד. קבלו ייעוץ ומפת דרכים. כתבו לנו — נגדיר תהליך הזמנה שלבי למשימות שלכם.

