Міграція сайту з Drupal на 1С-Бітрікс
Drupal — потужна CMS з розвинутою архітектурою entity/field. Часто вибирають під складні портали, державні сайти, багатомовні платформи. Перехід на Бітрікс зазвичай продиктований корпоративними вимогами: інтеграція з 1С, єдина екосистема з Bitrix24, або необхідність мати сертифіковану в Росії CMS. Міграція з Drupal технічно складніша, ніж з більшості інших CMS, через гнучку, але нестандартну модель зберігання даних.
Модель даних Drupal
У Drupal 7 контент зберігається через систему Field API. Кожне поле вузла (node) зберігається в окремій таблиці з іменем виду field_data_{field_name} і field_revision_{field_name}. Основні таблиці:
-
node— базова запис:nid,type,title,uid,status,created,changed. -
node_revision— історія ревізій. -
field_data_body— тіло матеріалу:body_value,body_summary,body_format. -
field_data_{custom_field}— довільні поля, одна таблиця на кожне. -
taxonomy_term_data,taxonomy_vocabulary— таксономія (категорії, теги). -
file_managed— медіафайли. -
users,users_roles,role— користувачі.
У Drupal 8/9 архітектура подібна, але зберігання через Doctrine DBAL та конфіги в YAML. Таблиці: node__body, node__field_{name} (одна таблиця на поле, всі ревізії в node_revision__*).
Проектування структури у Бітрікс
Кожен тип контента (content type) Drupal стає інфоблоком у Бітрікс. Таксономія — розділи інфоблоку або властивості типу «Список». Поля node маппируємо на властивості інфоблоку.
Перед написанням скрипта складаємо таблицю маппінгу:
| Drupal | Тип | Бітрікс | Тип властивості |
|---|---|---|---|
field_data_body.body_value |
text_long | DETAIL_TEXT |
— |
field_data_image.field_image_fid |
image | PREVIEW_PICTURE |
— |
field_data_field_tags |
term_reference | PROPERTY_TAGS |
Список |
field_data_field_price |
decimal | PROPERTY_PRICE |
Число |
Скрипт міграції
Drupal 7: скрипт читає дані через PDO з MySQL-бази Drupal. Для кожного node:
SELECT n.nid, n.title, n.created, b.body_value, b.body_summary
FROM node n
LEFT JOIN field_data_body b ON b.entity_id = n.nid AND b.bundle = 'article'
WHERE n.type = 'article' AND n.status = 1
Потім для кожного поля — окремий JOIN або підзапит. Результат — масив даних для CIBlockElement::Add().
Медіафайли. У Drupal файли реєструються в file_managed з полем uri формату public://photos/image.jpg. Фізично файл лежить в sites/default/files/photos/image.jpg. Копіюємо файли, реєструємо через CFile::SaveFile(), прив'язуємо до елемента.
Таксономія. Терміни таксономії (taxonomy_term_data) переносимо як розділи інфоблоку або як значення властивостей типу «Список». Якщо у Drupal у одного матеріалу кілька терміцев з одного словника — створюємо властивість «Множественное» у Бітрікс.
Мультимовність
Drupal має вбудовану мультимовність через модулі i18n (Drupal 7) або вбудований Content Translation (Drupal 8+). Переводи зберігаються в field_data_* з різними значеннями language. Бітрікс підтримує мультимовність через інфоблоки з LANGUAGE_ID або через різні сайти в одній установці. Якщо сайт мультимовний — цей етап вимагає окремого проектування.
Views та блоки
Drupal Views — динамічні списки матеріалів з фільтрацією та сортуванням. У Бітрікс їх аналог — компонент bitrix:news.list з параметрами фільтрації. Прямого переносу Views не існує: кожен View аналізується вручну та реалізується як компонент або кастомний код.
Блоки Drupal (region/block) — у Бітрікс це області ($APPLICATION->ShowPanel()) та компоненти в шаблоні. Структура сторінок переносится при розробці дизайну, не при міграції даних.
Модулі Drupal без аналогів
Webform → форми через bitrix:form. Commerce (Drupal Commerce) → модулі catalog + sale. Rules → бізнес-процеси Бітрікс або обробники подій. Feeds (імпорт) → агент або cron-завдання Бітрікс.
Терміни
| Етап | Типові терміни |
|---|---|
| Аудит типів контента та полів | 1–2 дні |
| Проектування інфоблоків та маппінгу полів | 1–2 дні |
| Розробка скрипта міграції | 3–6 днів |
| Перенос медіафайлів | 1–2 дні |
| Мультимовність (при наявності) | 2–3 дні |
| SEO-редиректи | 1 день |
| Тестування та правки | 1–2 дні |
| Усього | 10–18 робочих днів |
Drupal — одна з найскладніших для міграції CMS саме через нестандартну структуру зберігання та обилість можливих модулів. Реальний термін завжди уточнюється після аудиту вихідної бази даних.







