סינון מותגים ב-1C-Bitrix עם לוגואים
המסנן החכם הסטנדרטי ב-1C-Bitrix אינו מתאים לקטלוגים עם יותר מ-50 מותגים. בפרויקט אחד עם 300 מותגים, יישמנו סינון מותגים עם קיבוץ אלפביתי וחיפוש — ההמרה עלתה ב-22% (מ-1.8% ל-2.2%). במאמר זה, אראה כיצד ליישם מסנן כזה עם לוגואים באמצעות אינפובלוק נפרד או מאפיין רשימה. תקבלו קוד מוכן ואלגוריתם לקטלוג שלכם. הטעות הנפוצה ביותר — ניסיון להשתמש במאפיין רשימה עם יותר מ-100 מותגים: התחזוקה הופכת לסיוט, ודפי מותגים לא נוצרים. יישמנו מסננים כאלה על 50+ פרויקטים — הניסיון מבטיח תוצאות.
בעיות שאנחנו פותרים
המסנן החכם הסטנדרטי אינו מתאים: עם 50+ מותגים הוא מציג את כל הערכים כרשימה, מה שהורג את חוויית המשתמש. לקוחות לא רואים לוגואים, לא יכולים למצוא מותג במהירות — ההמרה יורדת. חוסר ב-SEO למותגים פוגע גם בתנועה: ללא דפים נפרדים אתם מאבדים תנועה אורגנית. מורכבות העדכון — כשמוסיפים מותג חדש, צריך לערוך ידנית מקומות רבים. אנו ממכנים סנכרון עם הקטלוג.
השוואת גישות: מאפיין רשימה לעומת אינפובלוק נפרד
הבחירה בין מאפיין מסוג 'רשימה' לבין אינפובלוק נפרד קובעת את הגמישות והסקלביליות. מאפיין רשימה פשוט ליישום: הערכים מאוחסנים ב-b_iblock_property_enum, מתאים לקטלוגים עם פחות מ-100 מותגים ללא מאפיינים נוספים (לוגו, תיאור). אבל התחזוקה הופכת לסיוט ככל שהוא גדל — עדכונים ידניים, אין לוגואים, אין דפי SEO. אינפובלוק נפרד, לעומת זאת, הופך כל מותג לאלמנט עם תמונה, תיאור ושדות SEO. החיבור עם מוצרים דרך מאפיין קישור, הסינון מהיר יותר ומתאים לאלפי מותגים ללא ירידה בביצועים. אינפובלוק מפשט את העדכונים פי 3 עבור יותר מ-50 מותגים. אנו ממליצים עליו אם יש לכם יותר מ-20 מותגים או שאתם מתכננים צמיחה.
למה אינפובלוק נפרד עדיף?
אינפובלוק מספק גמישות: כל מותג הוא אלמנט עם תמונה, תיאור ו-SEO. החיבור עם מוצרים דרך מאפיין קישור. סינון לפי מותג דרך אינפובלוק עובד מהר יותר ומתאים לאלפי מותגים ללא ירידה בביצועים. ההמרה עם גישה זו גדלה ב-20–30% לפי התצפיות שלנו.
יישום הסינון
אחסון נתוני מותגים
שתי גישות לאחסון מותגים ב-1C-Bitrix:
מאפיין רשימה — גישה פשוטה. הערכים מאוחסנים ב-b_iblock_property_enum. מתאים לקטלוגים עם פחות מ-100 מותגים ללא מאפיינים נוספים (לוגו, תיאור, אתר).
אינפובלוק מותגים נפרד — כל מותג כאלמנט אינפובלוק עם תמונה, תיאור ושדות SEO. החיבור עם מוצרים דרך מאפיין קישור לאלמנטים. גמיש יותר, מורכב יותר בסינון.
סינון לפי מותג דרך מאפיין רשימה
// Получение всех брендов для UI
$brands = [];
$res = CIBlockPropertyEnum::GetList(
['VALUE' => 'ASC'],
['IBLOCK_ID' => $iblockId, 'CODE' => 'BRAND']
);
while ($brand = $res->Fetch()) {
$brands[] = [
'id' => $brand['ID'],
'xmlId' => $brand['XML_ID'],
'name' => $brand['VALUE'],
'sort' => $brand['SORT'],
];
}
// Применение фильтра
$selectedBrands = array_map('htmlspecialchars', (array)($_GET['BRAND'] ?? []));
if (!empty($selectedBrands)) {
$arFilter['PROPERTY_BRAND'] = $selectedBrands;
} סינון לפי מותג דרך אינפובלוק
// Получение брендов с логотипами
$brands = [];
$res = CIBlockElement::GetList(
['NAME' => 'ASC'],
['IBLOCK_ID' => BRANDS_IBLOCK_ID, 'ACTIVE' => 'Y'],
false,
false,
['ID', 'NAME', 'PREVIEW_PICTURE', 'CODE']
);
while ($brand = $res->GetNextElement()) {
$fields = $brand->GetFields();
$brands[] = [
'id' => $fields['ID'],
'name' => $fields['NAME'],
'code' => $fields['CODE'],
'picture' => $fields['PREVIEW_PICTURE'] ? CFile::GetPath($fields['PREVIEW_PICTURE']) : null,
];
}
// Фильтрация каталога по связанному бренду
$selectedBrandIds = array_map('intval', (array)($_GET['BRAND_ID'] ?? []));
if (!empty($selectedBrandIds)) {
$arFilter['PROPERTY_BRAND_REF'] = $selectedBrandIds;
} ממשק סינון עם לוגואים
?>
<div class="filter-block filter-block--brands">
<h3 class="filter-block__title">Бренд</h3>
<?php if (count($brands) > 10): ?>
<input type="text" class="brand-search" placeholder="Поиск бренда...">
<?php endif; ?>
<div class="brands-grid">
<?php foreach ($brands as $brand): ?>
<?php $checked = in_array($brand['id'], $selectedBrandIds); ?>
<label class="brand-item <?= $checked ? 'is-active' : '' ?>">
<input type="checkbox" name="BRAND_ID[]" value="<?= $brand['id'] ?>" <?= $checked ? 'checked' : '' ?>>
<?php if ($brand['picture']): ?>
<img src="<?= htmlspecialchars($brand['picture']) ?>" alt="<?= htmlspecialchars($brand['name']) ?> - Логотип бренда, фильтрация по бренду в 1С-Битрикс">
<?php else: ?>
<span class="brand-name"><?= htmlspecialchars($brand['name']) ?></span>
<?php endif; ?>
</label>
<?php endforeach; ?>
</div>
</div>
<?php איך ליישם קיבוץ אלפביתי?
חיפוש וקיבוץ מיושמים בצד הלקוח והשרת. לחיפוש, הוסיפו שדה טקסט ומטפל JavaScript:
const searchInput = document.querySelector('.brand-search');
if (searchInput) {
searchInput.addEventListener('input', (e) => {
const query = e.target.value.toLowerCase().trim();
document.querySelectorAll('.brand-item').forEach(item => {
const name = item.querySelector('img')?.alt || item.querySelector('.brand-name')?.textContent || '';
item.style.display = name.toLowerCase().includes(query) ? '' : 'none';
});
});
}קיבוץ אלפביתי ב-PHP עם מיון לפי אות ראשונה ומונה מוצרים:
// Алфавитная группировка + счётчики
$brandCounts = [];
$res = CIBlockElement::GetList(
[],
['IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y'],
['PROPERTY_BRAND_REF'],
false,
['ID', 'PROPERTY_BRAND_REF']
);
while ($item = $res->Fetch()) {
$brandId = $item['PROPERTY_BRAND_REF_VALUE'];
$brandCounts[$brandId] = ($brandCounts[$brandId] ?? 0) + 1;
}
$brandsByLetter = [];
foreach ($brands as $brand) {
$letter = mb_strtoupper(mb_substr($brand['name'], 0, 1));
$brand['count'] = $brandCounts[$brand['id']] ?? 0;
$brandsByLetter[$letter][] = $brand;
}
ksort($brandsByLetter);
?>
<div class="brands-alphabet">
<?php foreach ($brandsByLetter as $letter => $letterBrands): ?>
<div class="brands-letter-group">
<span class="letter-heading"><?= htmlspecialchars($letter) ?></span>
<div class="brands-list">
<?php foreach ($letterBrands as $brand): ?>
<label class="brand-check">
<input type="checkbox" name="BRAND_ID[]" value="<?= $brand['id'] ?>">
<?= htmlspecialchars($brand['name']) ?>
<span class="brand-count">(<?= $brand['count'] ?>)</span>
</label>
<?php endforeach; ?>
</div>
</div>
<?php endforeach; ?>
</div> שיפור חוויית הסינון
חיפוש, קיבוץ אלפביתי ומוני מוצרים הם שיפורים בסיסיים. הצגת לוגואים מגבירה את התפיסה החזותית והקליקביליות ב-150% לעומת רשימת טקסט. ל-SEO, הקפידו ליצור דפי מותגים נפרדים עם כתובות URL ייחודיות.
עוד על קאשינג
לקאשינג של מונים, השתמשו בקאש מתויג של הרכיב. קשרו תגיות לאינפובלוק המותגים ולקטלוג. כשאלמנט משתנה, הקאש נמחק אוטומטית. רווח ביצועים טיפוסי הוא 70% ב-1000 RPS.
טעויות נפוצות ביישום מסנן מותגים
טעות נפוצה אחת היא שימוש במאפיין רשימה עם יותר מ-100 מותגים ללא תוכנית מיגרציה. זה מוביל לכך שדפי מותגים לא נוצרים והמסנן הופך לאיטי. טעות נוספת היא התעלמות מקאשינג מתויג. בכל בקשה, כל המותגים והמונים מחושבים מחדש, מה שגורם לעומס על השרת בתנועה גבוהה. פתרון — קאשינג של תוצאות ברכיב עם קישור לשינויים באינפובלוק.
מה כלול בעבודה
- בדיקת הקטלוג הנוכחי ומבנה הנתונים
- עיצוב סכמת אחסון (אינפובלוק/מאפיין)
- יישום המסנן עם ממשק נדרש
- הגדרת דפי SEO למותגים
- אינטגרציה עם חיפוש (אם נדרש)
- בדיקות עומס
- תיעוד והעברת גישה
לוח זמנים
סינון בסיסי דרך מאפיין רשימה ללא לוגואים — 4–6 שעות. מסנן מלא עם אינפובלוק מותגים, לוגואים, חיפוש, קיבוץ אלפביתי ומונים — 2–3 ימי עסקים. העלות מחושבת בנפרד לאחר בדיקה — צרו קשר להערכת הפרויקט שלכם. קבלו ייעוץ — נציע פתרון אופטימלי לתקציב שלכם ונבטיח תוצאות בכל השלבים.
עוד על עבודה עם אינפובלוקים — בתיעוד 1C-Bitrix.

