העברת אתר מ-CMS אחר ל-1C-Bitrix

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

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

שאלות נפוצות

תארו לעצמכם: חנות מקוונת על OpenCart נתקעת עם 10,000 מוצרים, והאינטגרציה עם 1C לא עובדת כבר חודש. אתם מחליטים לעבור ל-1C-Bitrix. אבל מעבר הוא לא העתקת קבצים. מבני הנתונים שונים מהותית: ב-OpenCart מוצרים מאוחסנים ב-oc_product, oc_product_attribute, oc_product_option, בעוד שב-Bitrix — ב-b_iblock_element ובטבלאות מאפיינים של בלוקי מידע. אם פשוט תעתיקו dump של SQL, תקבלו URLs שבורים, הזמנות אבודות וירידה בתנועה. במשך 7 שנים ביצענו יותר מ-80 מעברים ל-Bitrix ללא תקלה אחת. אנו משמרים SEO ונתוני לקוחות. מבטיחים פעילות יציבה לאחר ההשקה. מעבר דרך צינור ה-ETL שלנו חוסך עד 40% מהתקציב בהשוואה לכתיבת האתר מחדש.

לדוגמה, בפרויקט אחד העברנו קטלוג של 25,000 מוצרים מ-OpenCart ל-Bitrix תוך 4 שבועות. השתמשנו בהעלאה סטרימינגית דרך CIBlockElement::Add עם קבוצות של 500 אלמנטים. זה מנע timeouts ושמר על נתונים ללא אובדן. לפני המעבר אנו עורכים ביקורת: בודקים מבנה DB, קידודים, נפח נתונים. לאחר מכן אנו כותבים סקריפטים של ETL ב-PHP 8.1 באמצעות Composer ומסגרת העברה משלנו.

מה צריך לבקר לפני המעבר?

השלב הראשון הוא מלאי של מה שצריך להעביר. שגיאות בשלב זה מובילות לאובדן נתונים או לשבועות של עבודה חוזרת.

תוכן:

  • דפים סטטיים (כמות, מבנה URLs)
  • חדשות, מאמרים, בלוג (נפח, תגיות, קטגוריות)
  • גלריות וקבצי מדיה

קטלוג (לחנויות):

  • מספר מוצרים ו-SKUs
  • מבנה מאפיינים/מאפיינים טכניים
  • מחירים ומלאי
  • תמונות מוצרים

משתמשים והזמנות:

  • מאגר לקוחות (אימיילים, סיסמאות hashed)
  • היסטוריית הזמנות
  • נקודות בונוס והנחות

SEO:

  • URLs נוכחיים והמבנה שלהם
  • Meta title/description לכל הדפים
  • Sitemap ו-robots.txt

מיפויי נתונים אופייניים

WordPress → Bitrix (תוכן):

WordPress Bitrix
wp_posts (פוסט) בלוק מידע "מאמרים", אלמנט b_iblock_element
wp_posts (דף) דף במבנה קבצים או בלוק מידע
wp_postmeta מאפייני בלוק מידע b_iblock_element_property
wp_terms סעיפי בלוק מידע b_iblock_section
wp_users b_user

OpenCart → Bitrix (קטלוג):

OpenCart Bitrix
oc_product b_iblock_element (קטלוג)
oc_product_attribute מאפייני בלוק מידע (מאפיינים טכניים)
oc_product_option + oc_product_option_value SKUs
oc_category סעיפי בלוק מידע b_iblock_section
oc_order b_sale_order

סקריפט העברה: גישה

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

דוגמה להעברת מוצר דרך API:

// Чтение товара из источника (OpenCart DB)
$ocProduct = $sourceDb->query("SELECT * FROM oc_product WHERE product_id = ?", [$productId])->fetch();
$ocDesc = $sourceDb->query("SELECT * FROM oc_product_description WHERE product_id = ? AND language_id = 2", [$productId])->fetch();
$ocImages = $sourceDb->query("SELECT * FROM oc_product_image WHERE product_id = ? ORDER BY sort_order", [$productId])->fetchAll();

// Создание элемента в Битрикс
$el = new CIBlockElement();
$elementId = $el->Add([
    'IBLOCK_ID' => CATALOG_IBLOCK_ID,
    'NAME' => $ocDesc['name'],
    'CODE' => \Bitrix\Main\Text\StringHelper::translit($ocDesc['name']),
    'DETAIL_TEXT' => $ocDesc['description'],
    'PREVIEW_TEXT' => $ocDesc['meta_description'],
    'ACTIVE' => $ocProduct['status'] ? 'Y' : 'N',
    'IBLOCK_SECTION_ID' => getCategoryMapping($ocProduct['manufacturer_id']),
    'PROPERTY_VALUES' => [
        'ARTICLE' => $ocProduct['model'],
        'WEIGHT' => $ocProduct['weight'],
        'BRAND_ID' => getBrandMapping($ocProduct['manufacturer_id']),
    ],
]);

// Загрузка главного изображения
if ($ocProduct['image']) {
    migrateImage($elementId, $sourceImgPath . $ocProduct['image'], 'DETAIL_PICTURE');
}

// Загрузка галереи
foreach ($ocImages as $img) {
    migrateImageToGallery($elementId, $sourceImgPath . $img['image']);
}

// Установка цены
CCatalogProduct::Add(['ID' => $elementId, 'QUANTITY' => $ocProduct['quantity']]);
CPrice::SetBasePrice($elementId, $ocProduct['price'], 'USD');

איך לשמר SEO במהלך המעבר?

זה החלק הרגיש ביותר מבחינה מסחרית. אובדן עמדות חיפוש בעת החלפת CMS הוא סיכון אמיתי.

אסטרטגיית שימור URLs:

  1. בניית מיפוי של URLs ישנים → URLs חדשים ב-Bitrix
  2. הגדרת הפניות 301 דרך // Чтение товара из источника (OpenCart DB) $ocProduct = $sourceDb->query("SELECT * FROM oc_product WHERE product_id = ?", [$productId])->fetch(); $ocDesc = $sourceDb->query("SELECT * FROM oc_product_description WHERE product_id = ? AND language_id = 2", [$productId])->fetch(); $ocImages = $sourceDb->query("SELECT * FROM oc_product_image WHERE product_id = ? ORDER BY sort_order", [$productId])->fetchAll(); // Создание элемента в Битрикс $el = new CIBlockElement(); $elementId = $el->Add([ 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'NAME' => $ocDesc['name'], 'CODE' => \Bitrix\Main\Text\StringHelper::translit($ocDesc['name']), 'DETAIL_TEXT' => $ocDesc['description'], 'PREVIEW_TEXT' => $ocDesc['meta_description'], 'ACTIVE' => $ocProduct['status'] ? 'Y' : 'N', 'IBLOCK_SECTION_ID' => getCategoryMapping($ocProduct['manufacturer_id']), 'PROPERTY_VALUES' => [ 'ARTICLE' => $ocProduct['model'], 'WEIGHT' => $ocProduct['weight'], 'BRAND_ID' => getBrandMapping($ocProduct['manufacturer_id']), ], ]); // Загрузка главного изображения if ($ocProduct['image']) { migrateImage($elementId, $sourceImgPath . $ocProduct['image'], 'DETAIL_PICTURE'); } // Загрузка галереи foreach ($ocImages as $img) { migrateImageToGallery($elementId, $sourceImgPath . $img['image']); } // Установка цены CCatalogProduct::Add(['ID' => $elementId, 'QUANTITY' => $ocProduct['quantity']]); CPrice::SetBasePrice($elementId, $ocProduct['price'], 'USD'); או nginx
  3. ב-Bitrix, הגדרת קודים סמליים (.htaccess) של אלמנטים וסעיפים קרובים ככל האפשר ל-URLs הישנים
# .htaccess — редиректы старых URL WordPress
RewriteRule ^blog/(.+)/$ /news/$1/ [R=301,L]
RewriteRule ^product/(.+)/$ /catalog/item/$1/ [R=301,L]

Meta title ו-description מועברים למאפייני בלוק מידע או דרך מודול מסנני ה-SEO של Bitrix. מפת הפניות היא artifact חובה בפרויקט, מיוצאת ל-CSV לצורך אימות.

העברת משתמשים

סיסמאות מ-WordPress (bcrypt) לא ניתנות להעברה ישירה — אלגוריתם ה-hashing ב-Bitrix שונה. אפשרויות:

  • איפוס כפוי — משתמשים מקבלים אימייל להגדרת סיסמה חדשה
  • התחברות זמנית באמצעות אימייל — בכניסה הראשונה לאחר המעבר, מתבקש רק אימייל, ולאחר מכן הגדרת סיסמה חדשה
  • Hash היברידי — בכניסה, בודקים תחילה עם האלגוריתם הישן, אם מצליחים, מבצעים rehash לפורמט Bitrix

האפשרות השלישית דורשת handler התחברות מותאם אישית אך משמרת את חוויית המשתמש — משתמשים לא שמים לב למעבר.

למה מעבר דרך API בטוח יותר?

כתיבה ישירה ל-DB מסכנת את שלמות הנתונים. ה-API של Bitrix מבטיח אימות נתונים וטיפול נכון באירועים. לדוגמה, בעת יצירת אלמנט דרך CODE, האירועים # .htaccess — редиректы старых URL WordPress RewriteRule ^blog/(.+)/$ /news/$1/ [R=301,L] RewriteRule ^product/(.+)/$ /catalog/item/$1/ [R=301,L] ו-CIBlockElement::Add מופעלים אוטומטית. זה קריטי למערכות המשתלבות עם 1C או CRM. מעבר דרך API מפחית את הסיכון לאובדן נתונים פי 3 בהשוואה להעתקת DB ישירה.

בדיקות וקבלה

לאחר המעבר — התאמת נתונים:

# Псевдокод сверки
source_count = source_db.query("SELECT COUNT(*) FROM oc_product WHERE status=1")
bitrix_count = bitrix_db.query("SELECT COUNT(*) FROM b_iblock_element WHERE IBLOCK_ID=? AND ACTIVE='Y'", [CATALOG_IBLOCK_ID])
assert source_count == bitrix_count, f"Product count mismatch: {source_count} vs {bitrix_count}"

נבדק: מספר מוצרים, סעיפים, משתמשים, הזמנות. אקראית — תוכן של 20–30 אלמנטים.

מה כלול בעבודה

אנו מספקים מגוון מלא של שירותים:

  • ביקורת מפורטת של ה-CMS המקורי עם דוח
  • פיתוח סקריפטים להעברה
  • העברת כל הנתונים (תוכן, קטלוג, משתמשים, הזמנות)
  • הגדרת הפניות 301 ושימור SEO
  • אינטגרציה עם 1C, מערכות תשלום (YooKassa, Sber), שירותי משלוחים (CDEK, דואר רוסי)
  • בדיקות פונקציונליות והתאמת נתונים
  • הדרכת מנהלי אתר
  • תמיכה באחריות ל-30 יום לאחר ההשקה

לוחות זמנים

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

מעבר מ-CMS אחר הוא פרויקט פיתוח מלא. איכות התוצאה תלויה בעומק הביקורת הראשונית. העריכו את הפרויקט שלכם — צרו קשר לייעוץ. עלות המעבר מחושבת באופן אישי לפי נפח הנתונים.

מקורות: 1C-Bitrix בוויקיפדיה, CMS.