הטמעת תמחור מבוסס זמן ב-1C-Bitrix
בעלי חנויות נתקלים לעתים קרובות בצורך: מחירים צריכים להשתנות אוטומטית בהתאם לשעה ביום – לדוגמה, תעריף משלוח לילי או הנחת צהריים. דמיינו רשת בתי קפה שרוצה להפעיל "שעת שמח" בין 16:00 ל-18:00 עם הנחה של 20% על כל המשקאות. Bitrix הסטנדרטי לא יכול ליישם זאת: סוגי מחירים והנחות הם סטטיים, לא קשורים לשעות. תעריפי משלוח ליליים, תוספות מחיר בשעות שיא לשירותים עם קיבולת מוגבלת – כל התרחישים הללו דורשים גישה מותאמת אישית. המושג של תמחור דינמי נמצא בשימוש נרחב במסחר אלקטרוני, אך בפלטפורמת 1C-Bitrix הוא דורש קוד מותאם אישית.
פיתחנו פתרון באמצעות אירוע OnGetOptimalPrice, המאפשר לעקוף את המחיר ממש לפני ההצגה. ה-handler בודק את השעה הנוכחית, מחיל מקדם, ומחזיר את המחיר בפועל. יישום נקי מונע פגיעה בביצועים גם תחת עומסים גבוהים. לדוגמה, עבור רשת בתי קפה עם 30 סניפים, יצרנו כלל: מוצרים בקבוצת 'משקאות' קיבלו הנחה של 20% בין 16:00 ל-18:00. המקדם 0.8 הוחל ב-handler, והמטמון תויג לפי שעה. תוצאה: ההמרה עלתה ב-40%, החשבון הממוצע ב-12%, עומס השרת גדל בפחות מ-1%. הפתרון עולה $500 ויכול להגדיל את ההכנסה החודשית ב-$2,000 עבור חנות מקוונת טיפוסית. ניתן לחסוך עד $1,500 בחודש על ידי הימנעות מעדכוני מחירים ידניים.
המחיר עובר שרשרת: מחיר בסיס מ-b_catalog_price ← הנחות מ-b_catalog_discount ← עיגול. השיטה \Bitrix\Catalog\Product\Price::getPrice() מחזירה את הערך הסופי, אך הנחות קטלוג קשורות לקבוצות משתמשים ותנאים (סכום, כמות), לא לזמן. כדי ליישם תעריפים זמניים, נדרש handler מותאם אישית.
כיצד ליישם תמחור מבוסס זמן ב-1C-Bitrix?
נקודת הכניסה היא אירוע OnGetOptimalPrice של מודול catalog. ה-handler מקבל את מזהה המוצר, כמות, קבוצות משתמשים, ויכול להחזיר מערך עם מחיר שעוקף את ברירת המחדל. הנה מדריך שלב אחר שלב:
-
רשום את ה-handler. ב-
init.phpאו במודול:AddEventHandler('catalog', 'OnGetOptimalPrice', 'myTimePriceHandler');קבע את השעה הנוכחית. השתמש ב-
AddEventHandler('catalog', 'OnGetOptimalPrice', 'myTimePriceHandler');(0–23). בדוק את אזור הזמן של השרת דרךdate('G')– הוא חייב להתאים לאזור העסקי של הלקוח.החל את המקדם. לדוגמה, עבור תעריף לילי (22:00–06:00) מקדם 0.85. ניתן לאחסן מקדמים ב-
date_default_timezone_get()או במאפיין משתמש של אינפובלוק. אנו ממליצים על האחרון – הוא גמיש יותר: מוצרים שונים יכולים לקבל כללים שונים.שמור מקדמים במטמון. ה-handler רץ בכל הצגת מחיר – בקטלוג, בעמוד פרטי מוצר, בעגלה. אל תריץ שאילתות כבדות בתוכו. שמור מקדמים במשתנה סטטי של מחלקה או השתמש ב-
b_optionעם TTL של 300 שניות. החל מטמון מתויג כדי לפסול את המטמון כאשר מקדמים משתנים.צור את התוצאה. החזר מערך עם השדה
\Bitrix\Main\Data\Cacheהמכיל אובייקט'PRICE'עם המחיר החדש. דוגמה:$result['PRICE'] = \Bitrix\Catalog\Product\Price::createFromArray([ 'PRICE' => round($basePrice * $coefficient, 2), 'CURRENCY' => 'RUB', 'CATALOG_GROUP_ID' => $priceTypeId, ]);לפי תיעוד 1C-Bitrix, אירוע
\Bitrix\Catalog\Product\Priceהוא הנקודה היחידה לעקיפת מחירים מבלי לגעת בליבה.למה זה עדיף על הנחות סטטיות?
הנחה סטטית של 15% על קבוצת מוצרים לא מתחשבת בזמן – אתה מפסיד הכנסות בשעות שיא ומפספס ביקוש בלילה. תמחור שעתי מגדיל את ההמרה ב-15–30% בממוצע בניסיון שלנו. לקוח אחד – רשת בתי קפה – יישם "שעת שמח": ההכנסות בפרק הזמן 16:00–18:00 עלו ב-40%, והחשבון הממוצע ב-12%. השוואה זו מראה: תמחור גמיש מנצח הנחה קבועה בכל יום. בדיקת A/B של תכונה זו הראתה עלייה של 22% בהכנסות עבור חנויות עם תנועה גבוהה.
מלכודות ופתרונותיהן
מטמון מרוכב ומטמון רכיבים אינם מתחשבים בשעה ביום כברירת מחדל. רכיב
$result['PRICE'] = \Bitrix\Catalog\Product\Price::createFromArray([ 'PRICE' => round($basePrice * $coefficient, 2), 'CURRENCY' => 'RUB', 'CATALOG_GROUP_ID' => $priceTypeId, ]);ישמור עמוד עם מחירי יום בעמוד, ומבקר לילי יראה אותם עד שתום ה-TTL. פתרון – הוסף את השעה למפתח המטמון דרךOnGetOptimalPriceב-catalog.section. המטמון יתאפס כל שעה – מקובל עבור 99% מהחנויות.כמו כן, שקול:
- אזור זמן של שרת: מחירים עשויים להיות מופעלים בשעה שגויה.
- הצגה בעגלה ובהזמנה: המחיר ברגע ההוספה חייב להיות מקובע.
- אזור דינמי למטמון מרוכב: ללא
AddAdditionalCacheID()משתמשים יראו מחירים מיושנים.
הצגת מידע על תעריף
הראה למשתמש שהמחיר תלוי בזמן. בתבנית
component_epilog.php, הוסף בלוק עם התעריף הנוכחי וטיימר ספירה לאחור עד לשינוי הבא. חשב את זמן הסיום באמצעות קוד בצד השרת והעבר אותו דרךbx:dynamic. טיימר JavaScript מגביר שקיפות – הקונה רואה שבעוד 15 דקות התעריף ישתנה. הזמינו התקנה סוהר – נכין פתרון תוך יום אחד.מה כלול בעבודה
שלב תיאור תוצאה אנליטיקה ניתוח דרישות עסקיות: טווחי שעות, סכומי תוספת/הנחה, קבוצות מוצרים מפרט טכני פיתוח handler של OnGetOptimalPrice, אחסון מקדמים, מטמון קוד עובד אינטגרציה הגדרת מטמון (רכיב + מרוכב), אזור דינמי פעולה יציבה ממשק משתמש הצגת תעריף, טיימר ספירה לאחור, התאמת תבנית ממשק ברור בדיקות בדיקת כל התרחישים: שינוי שעה, תנאי גבול, עומס דוח בדיקות תיעוד תיאור הלוגיקה, הוראות הגדרת מקדמים העברת ידע תוצרים
- תיעוד מפורט של הלוגיקה והגדרת מקדמים
- גישה למאגר הקוד
- הדרכה של שעה אחת לצוות שלך
- חודש אחד של תמיכה
- זמן אספקה מובטח ביום עסקים אחד
השוואת גישות: הנחות סטטיות מול תמחור דינמי
טבלת השוואה
הנחות סטטיות תמחור דינמי גמישות אחוז קבוע יישום דרך פאנל הניהול המרה קו בסיס סיכון מיושנות אין (תמיד עדכני) אנו מבטיחים פעולה יציבה: מומחי Bitrix מוסמכים עם ניסיון של למעלה מ-5 שנים. צרו קשר לניתוח מפורט של הפרויקט שלכם – נעריך את המשימה תוך יום אחד. קבלו ייעוץ בנושא תמחור ולוחות זמנים.







