Миграция сайта с Drupal на 1С-Битрикс
Drupal — мощная CMS с развитой архитектурой entity/field. Её часто выбирают под сложные порталы, государственные сайты, мультиязычные платформы. Переход на Битрикс обычно продиктован корпоративными требованиями: интеграция с 1С, единая экосистема с Битрикс24, или необходимость иметь сертифицированную в России 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 именно из-за нестандартной структуры хранения и обилия возможных модулей. Реальный срок всегда уточняется после аудита исходной базы данных.







