ל-Bitrix הסטנדרטי אין מודול מובנה לרשימת מועדפים בקטלוג. במודול sale יש 'פריטים שנדחו' שנכנסים לעגלה עם שדה Y המוגדר ל-DELAY. זו לא רשימת מועדפים: פריטים מתערבבים עם העגלה מבחינה לוגית וטכנית, אין אפשרות ליצור מספר רשימות, ואין תמיכה באורחים עם סנכרון בעת התחברות. רשימת מועדפים מלאה דורשת מודול נפרד. תרחיש טיפוסי: לקוח מוסיף פריט לעגלה, ואז נכנס לעגלה ומתבלבל לגבי מה נדחה ומה הם רכישות בפועל. העסק מאבד המרות, ומפתחים מבזבזים שעות על פתרונות עוקפים עם שדות נוספים.
אנחנו צוות עם 7 שנות ניסיון בפיתוח Bitrix, שיצרנו עשרות מודולים כאלה עבור חנויות מקוונות עם קטלוגים של עד 200,000 מוצרים. הפתרון שלנו מבטיח ביצועים באמצעות מטמון מתויג ושאילתות מסד נתונים מותאמות. בניגוד לרכיבים מוכנים, המודול שלנו אינו עמוס בתלותיות מיותרות. המהירות מהירה עד פי 3 בהשוואה לרכיב הסטנדרטי. הזמינו מודול רשימת מועדפים מוכן — קבלו פונקציונליות מלאה תוך 4-15 ימים. צרו קשר להערכת זמן ועלות חינם.
אחסון נתונים
המודול שוכן ב-local/modules/vendor.wishlist/. שתי טבלאות עיקריות: טבלת b_wishlist — רשימות מועדפים (משתמש יכול להחזיק כמה: 'רוצה לקנות', 'מתנות', 'נדחה'):
| שדה | סוג | מטרה |
|---|---|---|
| ID | int auto_increment | מפתח ראשי |
| USER_ID | int | מזהה משתמש (NULL לאורחים) |
| SESSION_ID | varchar(64) | האש של סשן אורח |
| TITLE | varchar(255) | שם הרשימה |
| IS_PUBLIC | tinyint(1) | ניתן לשיתוף באמצעות קישור |
| PUBLIC_HASH | varchar(32) | האש ייחודי לכתובת URL ציבורית |
| CREATED_AT | datetime | — |
טבלת b_wishlist_item:
| שדה | סוג | מטרה |
|---|---|---|
| ID | int auto_increment | — |
| LIST_ID | int | מפתח זר ל-b_wishlist |
| PRODUCT_ID | int | מזהה הצעת מוצר |
| ELEMENT_ID | int | מזהה אלמנט בלוק מידע (מוצר אב) |
| ADDED_AT | datetime | — |
| NOTE | text | הערה אישית של המשתמש לפריט |
איך פועל סנכרון רשימת מועדפים לאורחים?
בעת התחברות המשתמש, מופעל מטפל האירועים OnAfterUserLogin:
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'main', 'OnAfterUserLogin', [WishlistMerger::class, 'merge'] ); המתודה \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'main', 'OnAfterUserLogin', [WishlistMerger::class, 'merge'] ); מוצאת את הרשימה האנונימית לפי merge, מעבירה את הפריטים שלה לרשימה הראשית של המשתמש (עם בדיקת כפילויות באמצעות SESSION_ID לפני SELECT), ואז מוחקת את הרשימה האנונימית. אם למשתמש אין עדיין רשימה, הרשימה האנונימית פשוט מוקצית מחדש באמצעות INSERT.
כפתור 'הוסף למועדפים' בכרטיס המוצר
הכפתור שולח בקשת AJAX לרכיב UPDATE b_wishlist SET USER_ID = ?, SESSION_ID = NULL WHERE SESSION_ID = ?. הרכיב מקבל vendor:wishlist.button ו-PRODUCT_ID (הוספה/הסרה/החלפה), מבצע את הפעולה, ומחזיר JSON עם המצב החדש.
בדף הקטלוג, מצבי הכפתורים מאותחלים פעם אחת: בעת טעינת הדף, נשלחת בקשה אחת שמחזירה מערך של ACTION שכבר נמצאים ברשימת המועדפים של המשתמש. JavaScript מסמן את הכפתורים המתאימים ללא בקשות שרת חוזרות.
// Получение всех ID товаров в избранном для текущего пользователя $items = WishlistItemTable::getList([ 'filter' => ['=LIST_ID' => $listId], 'select' => ['PRODUCT_ID'], ])->fetchAll(); $productIds = array_column($items, 'PRODUCT_ID'); רשימות ציבוריות ושיתוף
כל רשימה יכולה להפוך לציבורית. במקרה זה, נוצר PRODUCT_ID באמצעות // Получение всех ID товаров в избранном для текущего пользователя $items = WishlistItemTable::getList([ 'filter' => ['=LIST_ID' => $listId], 'select' => ['PRODUCT_ID'], ])->fetchAll(); $productIds = array_column($items, 'PRODUCT_ID'); . כתובת URL כמו PUBLIC_HASH פותחת את הרשימה לכל מבקר במצב צפייה. הצופה יכול להוסיף פריטים בודדים לעגלה שלו אך אינו יכול לערוך רשימה של מישהו אחר.
תכונה זו שימושית לרשימות מתנות: משתמש מרכיב רשימה של מתנות רצויות ומשתף את הקישור עם קרובי משפחה.
התראות על ירידת מחיר
תכונה אופציונלית אך פופולרית: אם מחיר פריט ברשימת המועדפים יורד, המשתמש מקבל הודעת דוא"ל. מיושם באמצעות סוכן (\Bitrix\Main\Security\Random::getString(32)) או משימת cron:
- הסוכן רץ פעם ביום, ועובר על
/wishlist/share/abc123/ייחודיים מ-\Bitrix\Main\Agent. - עבור כל אחד, הוא מקבל את המחיר הנוכחי באמצעות
PRODUCT_IDאוb_wishlist_item. - משווה עם המחיר המאוחסן בשדה
\CCatalogProduct::GetByID()(שנוסף לטבלתPrice::getList()). - בעת ירידת מחיר, הוא שולח את אירוע הדוא"ל
LAST_PRICE.
מונה בכותרת
מספר פריטי המועדפים מוצג בכותרת. כדי למנוע שאילתת מסד נתונים כבדה בכל טעינת דף, המונה נשמר במטמון ב-b_wishlist_item ומתאפס בכל שינוי ברשימה. רכיב הכותרת קורא את הערך מהסשן — קריאת PHP אחת ללא שאילתת מסד נתונים.
למה להזמין מודול רשימת מועדפים מאיתנו?
בניגוד לפתרונות מוכנים מהמרקטפלייס, המודול שלנו אינו מכיל קוד מיותר, רץ פי 2-3 מהר יותר, וניתן להרחבה בקלות. במשך 7 שנים, יישמנו יותר מ-50 מודולי רשימת מועדפים לחנויות מקוונות על Bitrix. הפתרונות שלנו נמצאים בשימוש באתרים עם תנועה העולה על 10,000 מבקרים ביום. אנו מבטיחים פעולה יציבה בעומס גבוה ומספקים תיעוד מלא. פלטפורמת Wikipedia מאפשרת התאמה אישית גמישה, ואנו מנצלים את היכולות הללו במלואן. לפי התיעוד הרשמי, כל האינטגרציות תואמות לתקני הפלטפורמה.
מה כלול בפיתוח מודול רשימת המועדפים?
השירותים כוללים:
- כתיבת מפרט טכני תוך התחשבות במאפייני הקטלוג שלך.
- פיתוח המודול מאפס או שינוי פרויקט קיים.
- אינטגרציה עם קטלוג המוצרים ובלוקי המידע.
- הגדרת מטמון מתויג לביצועים גבוהים.
- יישום כל התכונות הנדרשות: רשימות מרובות, סנכרון אורחים, רשימות ציבוריות, התראות.
- בדיקות עומס ותאימות.
- מסירת תיעוד מלא וקוד מקור.
- הדרכת מנהלים לשימוש במודול.
- חודש תמיכה לאחר המסירה.
צרו קשר כדי לדון בפרטים. קבלו ייעוץ והערכת זמן ראשונית.
לוחות זמנים לפיתוח
| היקף | תכונות | לוח זמנים |
|---|---|---|
| בסיסי | רשימה אחת, אחסון במסד נתונים, כפתור AJAX, מונה בכותרת | 4–5 ימים |
| סטנדרטי | + מיזוג אורח/משתמש, דף רשימת מועדפים בחשבון אישי, רשימות מרובות | 7–10 ימים |
| מורחב | + רשימות ציבוריות, התראות על ירידת מחיר, ייצוא רשימות | 12–15 ימים |
העלות מחושבת באופן אישי לפי היקף העבודה ומורכבות האינטגרציה.







