פריסת תמונות מוצר לאכלוס קטלוג 1C-Bitrix

קטלוג ללא תמונות מאבד מכירות, ומילוי ידני של תמונות מוצר ב-1C-Bitrix אורך שבועות. אנחנו הופכים תהליך זה לאוטומטי: אנו מפתחים parsers שאוספים תמונות מאתרי ספקים ומעלים אותם ל-information blocks. הצוות שלנו מספק את הפרויקט במלואו—מניתוח המקור ועד להגדרת העלאה אוטומטית ותמיכה שוטפת.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פריסת תמונות מוצר לאכלוס קטלוג 1C-Bitrix
בינוני
~1-2 שבועות

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

שאלות נפוצות

ניתוח תמונות מוצרים למילוי קטלוג ב-1C-Bitrix

קטלוג ללא תמונות לא מוכר. אנחנו יודעים זאת ממקור ראשון: בפרויקט מסחר אלקטרוני בתחום האלקטרוניקה, נדרשנו להעלות 15,000 תמונות מ-50 ספקים. העלאה ידנית הייתה אורכת חודש. כתבנו פארסר שעשה זאת ביומיים. לאחרונה, חנות חלקי רכב פנתה אלינו עם קטלוג של 20,000 פריטים. הספק סיפק תמונות רק דרך API, אך ה-API החזיר קישורים עם תוקף מוגבל. פיתחנו סקריפט שהוריד תמונות במקביל, טיפל בשגיאות, וקישר אותן לבלוקי מידע. תוצאה: קטלוג מלא עם תמונות תוך 3 ימים. במאמר זה, נראה כיצד להפוך את טעינת התמונות למוצרים ב-1C-Bitrix לאוטומטית, אילו מלכודות קיימות, וכיצד להימנע מהן.

כיצד Bitrix מאחסן תמונות מוצרים

התמונות מאוחסנות בטבלת b_file, פיזית ב-/upload/iblock/. לפי התיעוד הרשמי על אחסון קבצים, אלמנט בלוק מידע מתחבר לתמונה דרך השדות: תמונות מוצרים מאוחסנות בטבלת b_file, והחיבור לאלמנטים של בלוק מידע נעשה דרך השדות PREVIEW_PICTURE ו-DETAIL_PICTURE.

  • PREVIEW_PICTURE — תצוגה מקדימה לרשימה (מזהה רשומה ב-b_file)
  • DETAIL_PICTURE — התמונה הראשית לכרטיס המוצר
  • מאפיין מסוג F (קובץ) או G (גלריה) — לתמונות נוספות

לגלריה, משתמשים במאפיין מסוג F עם דגל MULTIPLE = Y. הרכיב הסטנדרטי bitrix:catalog.element לוקח תמונות ממאפיין זה.

הורדה ושמירה: שלב אחר שלב

התהליך מורכב משלושה שלבים: הורדת הקובץ, שמירה דרך CFile, וקישור לאלמנט.

// Шаг 1: скачивание файла (с таймаутом и повторными попытками)
$imageData = file_get_contents($imageUrl);

// Шаг 2: сохранение через CFile::MakeFileArray()
$tmpFile = tempnam(sys_get_temp_dir(), 'img_');
file_put_contents($tmpFile, $imageData);
$fileArray = CFile::MakeFileArray($tmpFile);
$fileArray['name'] = $filename;
$fileId = CFile::SaveFile($fileArray, 'iblock');

// Шаг 3: привязка к свойству галереи
CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [
    'MORE_PHOTO' => ['n0' => ['VALUE' => $fileId]]
]);

לתמונות מרובות, השתמשו באינדקסים // Шаг 1: скачивание файла (с таймаутом и повторными попытками) $imageData = file_get_contents($imageUrl); // Шаг 2: сохранение через CFile::MakeFileArray() $tmpFile = tempnam(sys_get_temp_dir(), 'img_'); file_put_contents($tmpFile, $imageData); $fileArray = CFile::MakeFileArray($tmpFile); $fileArray['name'] = $filename; $fileId = CFile::SaveFile($fileArray, 'iblock'); // Шаг 3: привязка к свойству галереи CIBlockElement::SetPropertyValuesEx($elementId, $iblockId, [ 'MORE_PHOTO' => ['n0' => ['VALUE' => $fileId]] ]); , n0, n1 וכו'. חשוב: עם מספר גדול של קבצים, השתמשו בסוכנים או בעיבוד תורים כדי להימנע ממגבלות ביצוע.

בעיות בעת הורדת תמונות

הגנה מפני קישורים חיצוניים. אתרי מקור רבים בודקים את ה-Referer. העבירו את הכותרת הנכונה:

$client->get($url, ['headers' => ['Referer' => 'https://source-site.com']]); 

איכות תמונה. לא כל התמונות שנמצאו מתאימות לקטלוג. בדקו את הגודל המינימלי לפני שמירה:

$imageInfo = getimagesizefromstring($imageData);
if ($imageInfo[0] < 300 || $imageInfo[1] < 300) continue; // пропускаем мелкие

כפילויות. אותו URL עשוי להופיע בעמודים שונים. שמרו במטמון URL שכבר הורד → file_id בזיכרון או בטבלה נפרדת.

חילוץ כתובות URL של תמונות מהמקור

לתמונה ראשית אחת:

$src = $crawler->filter('.product-image img')->attr('src'); 

לגלריה — תמונות נמצאות לעתים קרובות ב-data-attributes או בתוך JavaScript. דוגמה עם data-attributes:

$crawler->filter('[data-image]')->each(function($node) use (&$urls) {
    $urls[] = $node->attr('data-image');
});

אם מערך התמונות נמצא ב-JSON-LD, פרסו אותו עם n2 הסטנדרטי.

טיפול בתמונות קיימות

אל תדרסו תמונות שהועלו ידנית או מ-1C. לוגיקה:

  1. בדקו את $client->get($url, ['headers' => ['Referer' => 'https://source-site.com']]); — אם 0 או ריק, הוסיפו.
  2. לגלריה — הוסיפו רק אם המאפיין $imageInfo = getimagesizefromstring($imageData); if ($imageInfo[0] < 300 || $imageInfo[1] < 300) continue; // пропускаем мелкие ריק.
  3. סמנו תמונות שנפרסו עם תווית בשם הקובץ (קידומת $src = $crawler->filter('.product-image img')->attr('src'); ) לזיהוי מאוחר יותר.

למה פארסינג משתלם יותר מהעלאה ידנית?

פארסינג של תמונות מהיר פי 10 ממילוי ידני ועולה פי 3-5 פחות. זה חוסך משמעותית מתקציב מילוי הקטלוג.

פרמטר העלאה ידנית פארסינג
זמן ל-10,000 תמונות 20–30 ימי עבודה 2–4 ימים
שגיאות קלט סבירות גבוהה לשגיאות הקלדה וחוסר התאמה מינימלי (לאחר ניפוי הסקריפט)
עלות גבוהה (תשלום למנהלים) נמוכה (פיתוח חד-פעמי)
מדרגיות מוגבלת על ידי משאבי אנוש ניתנת להרחבה בקלות לכל נפח

פארסינג מחזיר את ההשקעה כבר עם קטלוג של 500 פריטים. בנוסף, האוטומציה מבטלת את "הגורם האנושי" — תמונות שהתערבבו או קישורים שגויים הופכים לנחלת העבר.

כיצד להימנע מכפילויות במהלך פארסינג?

כפילויות מתרחשות כאשר אותו URL מורד מספר פעמים. פתרון: עקבו אחר כתובות URL שכבר עובדו. הדרך הפשוטה ביותר: אחסנו מערך $crawler->filter('[data-image]')->each(function($node) use (&$urls) { $urls[] = $node->attr('data-image'); }); בזיכרון הסקריפט או ב-HL-block נפרד. כאשר נתקלים ב-URL שוב, השתמשו מיד ב-json_decode השמור.

מה כוללת העבודה שלנו על פארסינג תמונות?

  • ניתוח מקור — קביעת מבנה העמוד, שיטות גישה (API, פארסינג HTML), הערכת נפח.
  • פיתוח פארסר — סקריפט ב-PHP, תוך התחשבות במאפייני המקור (AJAX, הגנה, captcha).
  • טיפול בשגיאות — ניסיון חוזר בכשלים זמניים, רישום כשלים, התראה על בעיות.
  • קישור לבלוקי מידע — יצירת אלמנטים חדשים או עדכון קיימים, מילוי PREVIEW_PICTURE, DETAIL_PICTURE ומאפייני גלריה.
  • בדיקות — הרצה על 100–500 מוצרים, בדיקת איכות תמונה, התאמת גודל.
  • תיעוד — תיאור ארכיטקטורת הסקריפט, הוראות הפעלה ותמיכה.
  • תחזוקה — אם המקור משתנה, אנו מתאימים את הפארסר (חוזה תמיכה).

לוח זמנים משוער

שלב זמן
ניתוח מבנה המקור 2–4 שעות
הורדה, אימות, שמירה דרך CFile 1–2 ימים
קישור לאלמנטים של בלוק מידע (תצוגה מקדימה + גלריה) 4–8 שעות
טיפול בשגיאות, ניסיון חוזר, רישום 4 שעות
הרצת בדיקה על 500 פריטים 4 שעות
סה"כ 3–5 ימי עבודה

לקטלוגים מעל 10,000 תמונות, הוסיפו 1–2 ימים לטעינה מקבילה. לוחות זמנים מדויקים תלויים במורכבות המקור ובדרישות האיכות.

הניסיון והערבויות שלנו

אנחנו מפתחים על 1C-Bitrix למעלה מ-5 שנים והשלמנו 30+ פרויקטים של מילוי קטלוגים. המהנדסים שלנו מוסמכים ומכירים את כל הניואנסים של ה-API. אנו מבטיחים שאחרי הפארסינג, כל התמונות יהיו מקושרות כראוי וכפילויות יבוטלו. צרו קשר להערכת הפרויקט שלכם — נכין הצעה תוך יום. קבלו ייעוץ על אוטומציה של קטלוג.