עיצוב מערכת סינון מוצרים עבור 1C-Bitrix
עיצוב מערכת סינון מוצרים עבור 1C-Bitrix היא משימה שבה כל אלפית שנייה חשובה. בניסיון שלנו, פילטר על 180,000 פריטים (SKU) בוצע ב-0.2 שניות, בעוד שהרכיב הסטנדרטי החזיר שגיאות זמן ריצה. פילטר איטי נגרם כמעט תמיד מסוגי מאפיינים שגויים או מהיעדר אינדקס פאקטלי. פילטר שמציג מוצרים ללא מעקב מלאי—בלבול בין מאפייני מוצר למאפייני SKU. פילטר שמחזיר אפס תוצאות בשילוב קריטריונים—בעיית לוגיקה של AND מול OR. אנו פותרים משימות אלה תוך התחשבות בתשתית שלך, וחוסכים עד 40% מזמן הפיתוח. צור קשר כדי לעצב את הפילטר שלך ולהימנע ממלכודות נפוצות, ולקבל כלי מהיר ומדויק לקטלוג שלך.
האצת סינון עם אינדקס פאקטלי
האינדקס הפאקטלי הוא הכלי העיקרי למהירות. הוא מהיר פי 15 משאילתות רגילות ל-b_iblock_element_property. ניווט פאקטלי (https://ru.wikipedia.org/wiki/Фасетная_навигация) מאפשר ספירה מיידית של אלמנטים עבור כל ערך. עם זאת, האינדקס עובד רק עם סוגי מאפיינים 'רשימה' ו'הפניה'. שדות מספריים דורשים סינון טווח—גם זה נתמך על ידי הרכיב הסטנדרטי.
רכיב bitrix:catalog.smart.filter: יכולות ומגבלות
רכיב הפילטר החכם הסטנדרטי תומך ב:
- סינון לפי מאפיינים מסוג 'רשימה' ו'הפניה' (בלוק HL) באמצעות האינדקס הפאקטלי
- סינון טווח עבור מאפיינים מספריים (מחיר, גודל)
- סינון לפי מאפייני SKU (
OFFER_IBLOCK_ID) - יצירת כתובות URL ידידותיות ל-SEO עבור פילטרים נבחרים (
SEF_FOLDER) - עדכון AJAX של רשימת המוצרים ללא טעינת עמוד מחדש
מגבלות:
- אינו תומך בסינון ממספר בלוקי מידע בו-זמנית
- אינו בונה שילובים חכמים (הצגת ערכים זמינים תוך התחשבות בנבחרים כבר)
- אינו תומך בסינון גיאוגרפי מחוץ לקופסה
כשהרכיב הסטנדרטי לא מספיק—אנו בונים פילטר מותאם אישית
לפעמים היכולות הסטנדרטיות לא מספיקות: שילוב מאפיינים מקטגוריות שונות, לוגיקת AND מורכבת, סינון גיאוגרפי, או דרישות ביצועים בעומס גבוה. אז אנו כותבים פילטר מותאם אישית עם שאילתות SQL קנייניות לטבלאות פאקטליות או באמצעות ElasticSearch. העלות מחושבת באופן אישי לפי מורכבות, אבל חיסכון תקציבי טיפוסי בשיפורים הוא עד 30%.
למה פילטר סטנדרטי לא עובד עבור מאפיינים מורכבים
לוגיקת הפילטר: AND בתוך מאפיין מול AND בין מאפיינים היא החלטת עיצוב שלעתים קרובות מתעלמים ממנה. דוגמה: למוצר יש מאפיין 'צבע' עם ערכים מרובים ('אדום', 'כחול'). המשתמש בוחר שני צבעים.
- לוגיקת OR: הצג את כל המוצרים שיש להם אדום או כחול. רוב הפילטרים עובדים כך.
- לוגיקת AND: הצג רק מוצרים שיש להם גם אדום וגם כחול. הגיוני עבור תגיות.
הרכיב הסטנדרטי משתמש ב-OR בתוך מאפיין אחד וב-AND בין מאפיינים שונים. ללא שינוי, לא ניתן לשנות זאת.
זמינות מלאי בפילטר
מקרה נפוץ: הפילטר מציג ערכי מאפיינים שעבורם כל המוצרים אזלו מהמלאי. המשתמש בוחר 'אדום' ומקבל 0 תוצאות. פתרון ברמת האינדקס הפאקטלי: בעת בנייה מחדש של האינדקס (\Bitrix\Iblock\PropertyIndex\Manager::runIndex()), Bitrix исключает אלמנטים עם ACTIVE = N אוטומטית. אבל מלאי לא מחושב אוטומטית—נדרש מנגנון מותאם אישית:
- מטפל באירועים לשינויי מלאי ב-
b_catalog_store_amount - עדכון מאפיין הדגל
IN_STOCKעל המוצר האב - אלמנטים עם
IN_STOCK = Nמסומנים כלא פעילים או מסוננים ברכיב
הגדרת כתובות URL ידידותיות ל-SEO עבור הפילטר
Bitrix מייצר אוטומטית כתובות URL ל-SEO עבור הפילטר כאשר רכיב catalog.smart.filter מוגדר עם SEF. פורמט: /catalog/smartfon/filter/brand-is-samsung/. זה עובד רק עם SEF_FOLDER נכון וכללי urlrewrite. החלטת עיצוב: אילו שילובים מקבלים דפי SEO עם תגיות מטא, ואילו לא. עבור קטלוגים גדולים, יצירת כל השילובים במפת אתר אינה מעשית—נדרשת אסטרטגיית עדיפויות (למשל, רק פילטרים עם גורם יחיד).
מהניסיון שלנו: מערכת סינון למרקטפלייס בגדים
פלטפורמה עם מוכרים מרובים, 180,000 פריטים (SKU), 8 קטגוריות בגדים עם מאפיינים שונים. דרישה: פילטר אחיד שמתחשב במלאי. המאפיינים משתנים לפי קטגוריה: ב'נעליים'—מידה (35–46), ב'מעילים'—מידה (XS–4XL) ואורך. בניית אינדקס פאקטלי יחיד עם 60 מאפיינים הייתה מציגה 'מידת נעליים' בקטע 'ז'קטים'.
פתרון:
- בלוק מידע יחיד, אבל פילטר עם קבוצה דינמית של מאפיינים בהתאם לקטע
- טבלה נוספת
category_filter_props(מותאמת אישית באמצעותDataManager): קטגוריה → רשימת מאפיינים להצגה - אינדקס פאקטלי על בלוק המידע של ההצעות עם דגל מלאי
- סוכן שמחשב מחדש מלאי כל 30 דקות
תוצאה: סינון לפי מידה + צבע + זמינות—0.2 שניות על 180,000 פריטים. ההחזר על השקעה לפתרון זה היה פחות משני רבעונים בשל עלייה בהמרות.
תוכנית עיצוב פילטר שלב אחר שלב
- איסוף מאפיינים ודרישות סינון (מאפיינים, מעקב מלאי, SEO).
- בחירת סוגי מאפיינים תוך התחשבות באינדקס הפאקטלי (רשימה, הפניה, טווח מספרי).
- עיצוב לוגיקה (AND/OR, מעקב מלאי, סינון גיאוגרפי).
- הגדרת
bitrix:catalog.smart.filterאו פתרון מותאם אישית עם SQL/ElasticSearch. - עיצוב כתובות URL ל-SEO: שילובים שניתנים לאינדוקס, הגדרת מפת אתר.
- אסטרטגיה לעדכון אינדקס פאקטלי ומלאי (סוכנים, אירועים).
- תרחישי בדיקה: תקינות תחת שילובים שונים, ביצועים תחת עומס, מקרי קצה.
| שלב | זמן משוער |
|---|---|
| ניתוח דרישות | 1–2 ימים |
| עיצוב לוגיקה | 2–4 ימים |
| הגדרת רכיב | 1–2 ימים |
| פיתוח מותאם אישית | החל מ-5 ימים |
| בדיקות וניפוי שגיאות | 2–3 ימים |
השוואה: פילטר סטנדרטי מול מותאם אישית
| פרמטר | smart.filter סטנדרטי |
פילטר מותאם אישית |
|---|---|---|
| מהירות על 100,000 מוצרים | ~1.5 שניות (עם אינדקס פאקטלי) | ~0.2 שניות (שאילתות מותאמות) |
| גמישות לוגית | רק OR בתוך מאפיין | AND/OR ניתן לבחירה |
| מעקב מלאי | לא נתמך | נתמך |
| כתובות URL ל-SEO | אוטומטי | הגדרה ידנית |
| מורכבות יישום | מינימלית | דורש פיתוח |
טעויות אופייניות בעיצוב פילטר
- סוגי מאפיינים לא מתאימים (מחרוזת במקום רשימה)—שובר את האינדקס הפאקטלי.
- התעלמות ממעקב מלאי—תוצאות אפס לאחר בחירה.
- חוסר אסטרטגיית כתובות URL ל-SEO—כפילות עמודים או אובדן תנועה.
- סינון לפי כל המאפיינים מבלוק מידע יחיד—מאפיינים מיותרים בפילטר.
פרטים נוספים על סוגי מאפיינים
לסינון, השתמש רק בסוגי מאפיינים 'רשימה' או 'הפניה' (בלוק HL). מאפיינים מספריים (מחיר, גודל) נתמכים גם הם, אבל רק לסינון טווח. הימנע ממאפיינים מסוג מחרוזת—הם לא מתווספים לאינדקס הפאקטלי ויכולים להאט שאילתות עד פי 10.
מה כלול בעבודת העיצוב
- ניתוח מאפיינים וסוגי מאפיינים
- בחירת ארכיטקטורה (פילטר סטנדרטי או מותאם אישית)
- עיצוב לוגיקה עם מעקב מלאי, ערכים מרובים והצל�ת קטגוריות
- הגדרת אינדקס פאקטלי ועדכוני סוכנים
- תיעוד והמלצות בדיקה
- הערכת ביצועים על נתוני בדיקה
הצוות שלנו: למעלה מ-10 שנות ניסיון בפיתוח 1C-Bitrix ו-500+ פרויקטים שהושלמו. אנו מבטיחים פעילות יציבה של הפילטר תחת כל עומס. כדי לקבל הערכת עלות וזמנים מדויקת לקטלוג שלך, צור קשר. כתוב לנו—נעריך את הפרויקט שלך תוך יום עסקים אחד.

