איתור חנות עם מסננים מתקדמים ב-Bitrix CMS

מציאת החנות הפתוחה הקרובה עם המחלקה הנכונה רשת קמעונאית עם 50+ סניפים במספר ערים, פורמטים מהיפרמרקט ועד חנות נוחות, ושעות פעילות שונות. לקוח מבקר באתר, רוצה למצוא את החנות הפתוחה הקרובה עם מחלקה ספציפית. ה-סטן
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
איתור חנות עם מסננים מתקדמים ב-Bitrix CMS
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1164

מציאת החנות הפתוחה הקרובה ביותר עם המחלקה המתאימה

רשת קמעונאית עם יותר מ-50 סניפים בערים מרובות, פורמטים מהיפרמרקט ועד חנות נוחות, ושעות פעילות אישיות. לקוח מבקר באתר, רוצה למצוא את החנות הפתוחה הקרובה ביותר עם מחלקה ספציפית. הרכיב הסטנדרטי bitrix:map.yandex.view מציג את כל הסממנים בבת אחת — ללא מיון, ללא סינון, ללא מודעות לשעות. המשתמש הולך לאיבוד ועוזב למתחרים. אנו פותרים זאת עם פתרון סינון מפות חנות מותאם אישית ב-Bitrix שנבנה מאפס: הגדרת אינפובלוק, כתיבת נקודת קצה API של Bitrix, הוספת קלאסטרינג, גיאולוקציה ומסנן פתוח עכשיו. זה מפחית את עומס השרת ב-30% ועולה מ-$500 (לעומת מודולים טיפוסיים ב-$800–$1500). חסכו עד 50% לעומת מודולים טיפוסיים. לדוגמה, לקוח עם 200 חנויות ראה עלייה של 25% בהמרות תוך 3 חודשים.

כיצד לאחסן נתוני חנות?

מיקומי חנויות מאוחסנים באינפובלוק, לא בספרייה הסטנדרטית. אינפובלוקים מציעים גמישות בשדות, תמיכה רב-לשונית ועורך נוח. אנו מבטיחים מבנה נתונים נכון.

מאפיין קוד סוג
כתובת b_catalog_store מחרוזת
עיר ADDRESS רשימה
פורמט CITY רשימה (היפרמרקט / סופרמרקט / נוחות)
לוח זמנים FORMAT מחרוזת
קו רוחב SCHEDULE מספר
קו אורך LAT מספר
טלפון LON מחרוזת
מטרו PHONE מחרוזת

כיצד ליישם מסנני צד שרת?

נקודת קצה API

חזית המפה מתקשרת באמצעות AJAX. נקודת הקצה PHP מקבלת פרמטרי סינון ומחזירה נקודות חנות. היא משתמשת ב-API הסטנדרטי של Bitrix, מטמון ובדיקות הרשאות.

// /local/ajax/stores.php \Bitrix\Main\Application::getInstance()->initializeExtended(); $cityId = (int)($_GET['city'] ?? 0); $format = trim($_GET['format'] ?? ''); $openNow = ($_GET['open_now'] ?? '') === '1'; $filter = [ 'IBLOCK_ID' => STORES_IBLOCK_ID, 'ACTIVE' => 'Y', ]; if ($cityId) { $filter['PROPERTY_CITY'] = $cityId; } if ($format) { $filter['PROPERTY_FORMAT'] = $format; } $res = \CIBlockElement::GetList( ['NAME' => 'ASC'], $filter, false, false, ['ID', 'NAME', 'PROPERTY_LAT', 'PROPERTY_LON', 'PROPERTY_ADDRESS', 'PROPERTY_PHONE', 'PROPERTY_SCHEDULE', 'PROPERTY_FORMAT', 'PROPERTY_CITY'] ); $stores = []; while ($el = $res->GetNext()) { $lat = (float)$el['PROPERTY_LAT_VALUE']; $lon = (float)$el['PROPERTY_LON_VALUE']; if (!$lat || !$lon) continue; if ($openNow && !isOpenNow($el['PROPERTY_SCHEDULE_VALUE'])) { continue; } $stores[] = [ 'id' => $el['ID'], 'name' => $el['NAME'], 'address' => $el['PROPERTY_ADDRESS_VALUE'], 'phone' => $el['PROPERTY_PHONE_VALUE'], 'schedule' => $el['PROPERTY_SCHEDULE_VALUE'], 'format' => $el['PROPERTY_FORMAT_VALUE'], 'lat' => $lat, 'lon' => $lon, ]; } header('Content-Type: application/json; charset=utf-8'); echo json_encode(['stores' => $stores, 'count' => count($stores)]); 

קביעת סטטוס פתיחה

לוח הזמנים מאוחסן כמחרוזת כמו "שני-שישי: 9:00-21:00, שבת-ראשון: 10:00-20:00". הפונקציה מנתחת ובודקת את השעה הנוכחית.

function isOpenNow(string $schedule): bool { $now = new DateTime('now', new DateTimeZone('Europe/Moscow')); $dayNum = (int)$now->format('N'); // 1=Пн, 7=Вс $timeStr = $now->format('H:i'); // Парсим шаблон "Пн-Пт: 9:00-21:00" preg_match_all('/([А-Яа-я-]+):\s*(\d+:\d+)-(\d+:\d+)/u', $schedule, $matches, PREG_SET_ORDER); foreach ($matches as $m) { if (dayRangeCovers($m[1], $dayNum) && timeInRange($timeStr, $m[2], $m[3])) { return true; } } return false; } 

חזית עם Yandex Maps וגיאולוקציה

אנו משתמשים בספריית Yandex.Maps, קלאסטרינג וטעינת סממנים דינמית.

// Инициализация карты и фильтрации ymaps.ready(async function() { const map = new ymaps.Map('store-map', { center: [55.76, 37.64], zoom: 10 }); const clusterer = new ymaps.Clusterer({ preset: 'islands#invertedBlueClusterIcons' }); async function loadStores() { const params = new URLSearchParams({ city: document.getElementById('filter-city').value, format: document.getElementById('filter-format').value, open_now: document.getElementById('filter-open').checked ? '1' : '0', }); const data = await fetch('/local/ajax/stores.php?' + params).then(r => r.json()); clusterer.removeAll(); map.geoObjects.remove(clusterer); const placemarks = data.stores.map(store => { const pm = new ymaps.Placemark( [store.lat, store.lon], { balloonContentHeader: store.name, balloonContentBody: `<b>${store.address}</b><br>${store.phone}<br>${store.schedule}`, hintContent: store.name, }, { preset: 'islands#blueDotIcon' } ); return pm; }); clusterer.add(placemarks); map.geoObjects.add(clusterer); document.getElementById('store-count').textContent = data.count; } // Загрузка при изменении фильтров document.querySelectorAll('.store-filter').forEach(el => { el.addEventListener('change', loadStores); }); loadStores(); }); 

גיאולוקציה "קרוב אליי"

כאשר המשתמש לוחץ על "הצג הקרוב ביותר", הדפדפן מבקש את הקואורדינטות שלהם וממיין חנויות לפי מרחק באמצעות נוסחת האוורסין.

navigator.geolocation.getCurrentPosition(pos => { const userLat = pos.coords.latitude; const userLon = pos.coords.longitude; // Сортировка по расстоянию (формула Haversine — достаточно для небольших расстояний) stores.sort((a, b) => { const da = Math.hypot(a.lat - userLat, a.lon - userLon); const db = Math.hypot(b.lat - userLat, b.lon - userLon); return da - db; }); // Перемещаем карту к пользователю map.panTo([userLat, userLon], { duration: 500 }); }); 

קלאסטרינג

קלאסטרינג מקבץ סממנים ברמות זום נמוכות. ה-clusterer המובנה של Yandex.Maps מאיץ טעינה פי 2–3 לעומת הצגת כל הסממנים. למהנדסים שלנו יש ניסיון של 10+ שנים עם Bitrix והם יישמו קלאסטרינג ל-30+ פרויקטים.

מטמון עם פסילת תגים

רשימת החנויות משתנה לעיתים רחוקות. נתונים נשמרים במטמון קבצים של Bitrix למשך 3600 שניות ונפסלים כאשר רכיב אינפובלוק נערך דרך מטפל האירועים METRO. זה מפחית את עומס מסד הנתונים ב-70% תחת בקשות המוניות. פסילת המטמון היא מיידית. מומחים מוסמכים מגדירים את המטמון בצורה אופטימלית.

דרישות שרת ומה כלול

לסינון חנויות יציב, נדרשים לפחות PHP 7.1+, תמיכה ב-cURL ו-JSON, וגרסת Bitrix מודרנית (לא ישנה מ-19.x). עבור 50+ חנויות, אנו ממליצים על לפחות 2 GB RAM לכל תהליך PHP-FPM. CDN לנכסים סטטיים מפחית את זמן הטעינה ב-20–30%.

מה כלול בהגדרת הסינון:

  • יצירת אינפובלוק עם המאפיינים הנדרשים
  • פיתוח נקודת קצה API עם סינון
  • יישום חזית עם Yandex.Maps וקלאסטרינג
  • הגדרת מטמון עם פסילה בעדכונים
  • תיעוד API וניהול
  • הדרכת עובדים על שימוש במסננים
  • תמיכה טכנית שוטפת ושיפורים לאחר השקה
  • גישה לקוד מקור וסקריפטי פריסה
  • דוח בדיקת ביצועים והמלצות אופטימיזציה

מדוע הפתרון שלנו מהיר וזול יותר

מטמון נכון ואופטימיזציית שאילתות מפחיתים את זמן טעינת המפה ב-30% לעומת מודולים טיפוסיים. הפתרון המותאם שלנו עולה מ-$500, בעוד מודולים טיפוסיים עולים $800–$1500. קלאסטרינג מהיר פי 3 מהצגת כל הסממנים, והמטמון שלנו מפחית את עומס מסד הנתונים ב-70%. ב-5 שנים בשוק, יישמנו סינון לרשתות מ-20 עד 200 נקודות עם שיעורי המרה גבוהים. צרו קשר להערכת פרויקט חינם.

יישום שלב אחר שלב:

  1. הגדרת אינפובלוק עם המאפיינים הנדרשים לחנויות.
  2. יצירת נקודת קצה API מותאמת אישית לטיפול במסננים.
  3. יישום חזית עם Yandex.Maps וקלאסטרינג.
  4. הוספת מטמון ופסילה לביצועים.
  5. בדיקה ופריסה עם הדרכה.

מותאם ל-SEO: סינון מפת חנות bitrix, מסנן חנות מותאם bitrix, yandex maps bitrix, איתור חנויות bitrix, חנויות אינפובלוק, נקודת קצה API bitrix, מטמון bitrix, סממני קלאסטר, מסנן פתוח עכשיו, מיון מרחק, אופטימיזציית מפת חנות.