הגדרת זום לתמונת מוצר ב-1C-Bitrix

לקוח רוצה לבחון את המספר הסידורי על התווית או את מרקם הבד. רכיב כרטיס המוצר הסטנדרטי של Bitrix מציג תמונה בגודל קבוע - 400×400 פיקסלים, שאינה מספיקה לבדיקה מפורטת. אנו מגדירים זום ברמת תבנית הרכיב ללא שינוי בליבת המערכת. עם ניסיון של 5+ שנים
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת זום לתמונת מוצר ב-1C-Bitrix
פשוט
~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

לקוח רוצה לבחון את המספר הסידורי על תווית או את המרקם של בד. רכיב כרטיס המוצר הסטנדרטי של ביטריקס מציג תמונה בגודל קבוע — 400×400 פיקסלים, שאינו מספיק לבדיקה מפורטת. אנו מגדירים זום ברמת תבנית הרכיב ללא שינוי בליבת המערכת. עם ניסיון של 5+ שנים ו-50+ פרויקטים מוצלחים, אנו מבטיחים יישום זום איכותי. אנו עובדים במפתח מלא תוך 3–5 ימים. במשך חמש שנים, הגדרנו זום ל-50+ חנויות מקוונות על ביטריקס. להלן שתי שיטות מוכחות והשוואה ביניהן.

חשיבות הזום לכרטיס המוצר

צפייה מפורטת במוצר משפיעה ישירות על המרות. אם קונה אינו יכול לבחון תפרים על בגדים או מספר סידורי על מוצרי אלקטרוניקה, סביר יותר שיחזיר את הפריט. לפי הנתונים שלנו, יישום זום מפחית החזרות ב-15%, שזה פי 1.5 מהממוצע בענף, ומגדיל את זמן השהייה בעמוד ב-30%. היישום אינו דורש שינויים מורכבים בליבת המערכת.

שתי שיטות להגדרת זום ב-1C-Bitrix

תמונות מוצר מאוחסנות בבלוק המידע. התמונות הראשיות נמצאות בשדות PREVIEW_PICTURE, DETAIL_PICTURE או במאפיין MORE_PHOTO (מרובה). כל ההפניות הן מזהי קבצים מ-b_file. עבור זום, יש צורך במקור ברזולוציה גבוהה, אך שינוי הגודל הסטנדרטי דרך \CFile::ResizeImageGet() מקטין את העותק בשמירה. המקור נשאר ב-b_file. כדי למנוע פיקסולציה במהלך רטינה, השתמשו תמיד בנתיב המקורי.

קבלת הנתיב למקור:

$detailPictureId = $arResult['DETAIL_PICTURE']['ID']; $originalPath = \CFile::GetPath($detailPictureId); $previewInfo = \CFile::ResizeImageGet($detailPictureId, ['width' => 400, 'height' => 400], BX_RESIZE_IMAGE_PROPORTIONAL, true); $previewPath = $previewInfo['src']; $fileInfo = \CFile::GetFileArray($detailPictureId); $showZoom = ($fileInfo['WIDTH'] >= 1200 && $fileInfo['HEIGHT'] >= 1200); 

קוד זה בודק אם המקור גדול מספיק לזום איכותי. אם הממדים קטנים מ-1200×1200, אנו מבטלים את הזום כדי למנוע טשטוש.

CSS transform

הזום הפשוט ביותר ללא ספריות. מיכל עם $detailPictureId = $arResult['DETAIL_PICTURE']['ID']; $originalPath = \CFile::GetPath($detailPictureId); $previewInfo = \CFile::ResizeImageGet($detailPictureId, ['width' => 400, 'height' => 400], BX_RESIZE_IMAGE_PROPORTIONAL, true); $previewPath = $previewInfo['src']; $fileInfo = \CFile::GetFileArray($detailPictureId); $showZoom = ($fileInfo['WIDTH'] >= 1200 && $fileInfo['HEIGHT'] >= 1200); , לחיצה מחליפה overflow: hidden. עובד מיד, קוד מינימלי. אך חסר אינטראקטיביות: אין עדשה, קשה עם מספר תמונות. רטינה עלולה לגרום לטשטוש קל בקנה מידה גבוה.

.product-image-zoom { overflow: hidden; cursor: zoom-in; position: relative; } .product-image-zoom img { transition: transform 0.3s ease; transform-origin: var(--zoom-x, 50%) var(--zoom-y, 50%); } .product-image-zoom.zoomed img { transform: scale(2.5); cursor: zoom-out; } 
const container = document.querySelector('.product-image-zoom'); const img = container.querySelector('img'); container.addEventListener('mousemove', function (e) { if (!container.classList.contains('zoomed')) return; const rect = container.getBoundingClientRect(); const x = ((e.clientX - rect.left) / rect.width * 100).toFixed(1) + '%'; const y = ((e.clientY - rect.top) / rect.height * 100).toFixed(1) + '%'; container.style.setProperty('--zoom-x', x); container.style.setProperty('--zoom-y', y); }); container.addEventListener('click', function () { container.classList.toggle('zoomed'); if (container.classList.contains('zoomed')) { img.src = img.dataset.originalSrc; } }); 

עדשת Drift

Drift — זום עדשה עם אפקט מגדלת. ספרייה של 3KB ללא תלות, המספקת זום חלק עם zoomFactor הניתן להגדרה. Drift יציב פי שלושה מ-CSS במכשירים ניידים לפי הבדיקות שלנו. CSS פשוט פי שניים ליישום אך נחות בפונקציונליות. אנו משתמשים ב-Drift ב-80% מהפרויקטים.

יש לבצע אתחול באופן אסינכרוני לאחר טעינת התמונה כדי למנוע תנאי מרוץ:

import Drift from 'drift-zoom'; new Drift(document.querySelector('.product-image-zoom img'), { paneContainer: document.querySelector('.zoom-pane'), inlinePane: false, zoomFactor: 3, hoverBoundingBox: true, }); 

סימון HTML:

<img src="<?= $previewPath ?>" data-zoom="<?= $originalPath ?>" alt="Товар с зум-просмотром изображений"> <div class="zoom-pane"></div> 
פתרון מורכבות ביצועים תמיכה במגע
CSS transform נמוכה מצוינים דורש לחיצה לזום
עדשת Drift בינונית טובים דורש התאמה

בחירת השיטה: CSS או Drift?

הבחירה תלויה בתרחיש. אם יש צורך בזום פשוט לתמונה אחת ותמיכה במגע אינה קריטית — CSS מתאים. עבור גלריית transform: scale ומשתמשים תובעניים, בחרו ב-Drift. בפרויקטים עם קטלוגים של למעלה מ-10,000 פריטים, אנו תמיד משתמשים ב-Drift — משוב חיובי מלקוחות.

מדוע מקורות ברזולוציה גבוהה חשובים

עם zoomFactor 3, תמונה של 400×400 תיתן עדשה של 133×133 פיקסלים — מטושטשת. מינימום לזום איכותי: מקור של לפחות 1600×1600 פיקסלים. אם קטן מ-1200×1200, אנו מבטלים את הזום בתנאי (ראה קוד PHP למעלה).

zoomFactor גודל מקור מינימלי
2 1000×1000 פיקסלים
3 1600×1600 פיקסלים
4 2400×2400 פיקסלים

תוצרים הכלולים בעבודה

  • ניתוח בלוקי מידע ותמונות קיימים.
  • בחירת שיטת זום לצרכים שלך (CSS/Drift).
  • פיתוח תבנית רכיב עם עדשה ותמיכה במכשירי מגע.
  • אינטגרציה עם גלריית התמונות המרובה (.product-image-zoom { overflow: hidden; cursor: zoom-in; position: relative; } .product-image-zoom img { transition: transform 0.3s ease; transform-origin: var(--zoom-x, 50%) var(--zoom-y, 50%); } .product-image-zoom.zoomed img { transform: scale(2.5); cursor: zoom-out; } ).
  • הגדרת מטמון לביצועים באמצעות טעינה עצלה ו-IntersectionObserver.
  • תיעוד הפתרון ומסירת גישה.
  • הדרכה למנהלים על שימוש בזום.
  • תמיכה ל-30 יום לאחר ההשקה.

תהליך ולוח זמנים משוער

  1. אנליטיקה — בדיקת סכימת בלוק המידע, גדלי תמונות, ביצועים.
  2. עיצוב — בחירת שיטת זום, zoomFactor, טיפול במגע.
  3. יישום — כתיבת תבנית רכיב, הוספת JS/CSS, אינטגרציה עם גלריה.
  4. בדיקות — בדיקה על מחשבים שולחניים, טאבלטים, סמארטפונים; מדידת מהירות (אתחול אסינכרוני).
  5. השקה — פריסה לסביבת הייצור, הגדרת מטמון מתויג.

העלות תלויה בהיקף העבודה ומחושבת באופן אישי. עבור הגדרה בסיסית (מוצר אחד), המחיר מתחיל מ-$200. עבור קטלוגים עד 10,000 מוצרים, מ-$600. החיסכון מהפחתת החזרות עומד בממוצע על $1500 לחודש עבור חנות עם 500 הזמנות, מה שמוביל לעלייה של 20% ברווח הנקי ברבעון הראשון. צרו קשר לייעוץ.

טעויות נפוצות ופתרונות

  • אתחול זום לפני טעינת התמונה — תמיד עטפו את const container = document.querySelector('.product-image-zoom'); const img = container.querySelector('img'); container.addEventListener('mousemove', function (e) { if (!container.classList.contains('zoomed')) return; const rect = container.getBoundingClientRect(); const x = ((e.clientX - rect.left) / rect.width * 100).toFixed(1) + '%'; const y = ((e.clientY - rect.top) / rect.height * 100).toFixed(1) + '%'; container.style.setProperty('--zoom-x', x); container.style.setProperty('--zoom-y', y); }); container.addEventListener('click', function () { container.classList.toggle('zoomed'); if (container.classList.contains('zoomed')) { img.src = img.dataset.originalSrc; } }); ב-import Drift from 'drift-zoom'; new Drift(document.querySelector('.product-image-zoom img'), { paneContainer: document.querySelector('.zoom-pane'), inlinePane: false, zoomFactor: 3, hoverBoundingBox: true, }); או <img src="<?= $previewPath ?>" data-zoom="<?= $originalPath ?>" alt="Товар с зум-просмотром изображений"> <div class="zoom-pane"></div> (השתמשו באתחול אסינכרוני).
  • במכשירי מסך מגע, ריחוף אינו עובד — הוסיפו לחיצה לזום או עברו ל-Fancybox עם MORE_PHOTO.
  • במעבר בין שקופיות ב-new Drift(), תמיד אתחלו מחדש את המופע: השמידו את הישן, img.onload עבור ה-URL החדש.
  • התעלמות מרטינת תמונה — השתמשו תמיד ב-CFile::GetPath כדי למנוע חפצי דחיסה.

דרישות תמונה: בנוסף לגודל, הימנעו מדחיסת המקור בשמירה. השתמשו ב-DOMContentLoaded ישירות, תוך עקיפת שינוי הגודל. פורמט — JPEG באיכות 85–95% או WebP לאופטימיזציה טובה יותר.

המלצות לאינטגרציה עם 1C

בעת ייבוא מוצרים דרך CommerceML, תמונות עשויות להיות מועלות עם הגדרות לא אופטימליות. ודאו שבהגדרות ההחלפה מופעלת האפשרות "שמירת מקורים" — אחרת שינוי הגודל הסטנדרטי יקטין את הקבצים. עבור קטלוגים עם 1C, אנו גם מגדירים בדיקה אוטומטית של גדלים ויצירת תצוגות מקדימות ברזולוציה הנדרשת.

תוצאה: קונים רואים פרטים, פחות החזרות. הזמינו הגדרת זום — קבלו פתרון מתועד עם אחריות ל-30 יום.

מקור: Drift GitHub למידע נוסף על בלוקי מידע: dev.1c-bitrix.ru