Миграция сайта с MODX на 1С-Битрикс
MODX Revolution — популярная CMS для разработчиков. Гибкая система шаблонов, Snippets, Chunks, TV-переменные — всё это позволяет собрать практически любой сайт. Но когда бизнес требует полноценного интернет-магазина с 1С-интеграцией или корпоративного портала с CRM — MODX начинает ограничивать. Переход на Битрикс решает задачу, но требует понимания обеих систем.
Модель данных MODX
MODX Revolution хранит контент в нескольких ключевых таблицах (префикс по умолчанию modx_):
-
modx_site_content— все ресурсы сайта: страницы, статьи, папки. Поля:id,pagetitle,longtitle,alias,content,introtext,parent,template,published,publishedon,createdby,createdon,menutitle,description,content_type,uri. -
modx_site_tmplvar_contentvalues— значения TV-переменных для ресурсов:tmplvarid,contentid,value. -
modx_site_tmplvars— определения TV-переменных:name,caption,type,elements,default_text. -
modx_site_templates— шаблоны. -
modx_users,modx_user_attributes— пользователи. -
modx_categories— категории снипетов/чанков (не контента).
Для магазинов на miniShop2: msProduct, msProductOption, msCategory, msOrder, msOrderProduct — это кастомные таблицы расширения.
Дерево страниц
MODX строит сайт как дерево ресурсов. Каждый ресурс — потенциально страница. В Битрикс такого понятия нет: структура сайта определяется физическими файлами в директориях + система управления структурой в административной части.
Статические страницы MODX (корпоративный сайт, разделы «О компании», «Контакты») переносятся двумя способами:
-
Как страницы Битрикс — создаём PHP-файлы в нужных директориях, контент прописываем через
$APPLICATION->SetPageProperty()и компоненты. - Как элементы инфоблока — если страниц много и они однотипные (например, блог).
TV-переменные → свойства инфоблока
TV-переменные (Template Variables) — аналог свойств инфоблока в Битрикс. Читаем все TV из modx_site_tmplvars и проектируем соответствующие свойства:
| TV-тип MODX | Свойство Битрикс |
|---|---|
| text | Строка |
| textarea / richtext | HTML/текст |
| image | Файл (изображение) |
| file | Файл |
| listbox-multiple / checkbox | Список (множественное) |
| date | Дата/время |
| number | Число |
Перенос контента
Скрипт читает modx_site_content и для каждого ресурса нужного типа:
- Определяет раздел инфоблока по
parent(рекурсивно строим дерево разделов заранее). - Собирает TV-значения через JOIN
modx_site_tmplvar_contentvalues→modx_site_tmplvars. - Создаёт элемент инфоблока через
CIBlockElement::Add().
Поле uri в MODX — это готовый ЧПУ-адрес ресурса. Его сохраняем как CODE элемента и используем для формирования 301-редиректов.
Изображения. В TV-переменных типа image хранится путь вида /assets/images/photo.jpg. Копируем файлы на сервер Битрикс, регистрируем через CFile::MakeFileArray().
miniShop2 → Битрикс Каталог
Если на MODX стоял miniShop2:
-
msProduct(JOIN кmodx_site_content) → элементы инфоблока каталога Битрикс. -
msProductOption— опции товара (цвет, размер) → торговые предложения. -
msCategory→ разделы инфоблока. -
msOrder/msOrderProduct→b_sale_order/b_sale_basket. - Цены из
msProduct.price→b_catalog_priceс нужным типом цены.
Чанки, сниппеты и шаблоны
Чанки (modx_site_htmlsnippets) и сниппеты (modx_site_snippets) — это код шаблонизатора MODX (Smarty / Twig или нативный PHP). Они не переносятся автоматически. Весь функционал реализуется заново через компоненты Битрикс. Это самый трудоёмкий этап, если сайт использовал сложные сниппеты (pdoMenu, pdoPage, FormLister и т.п.).
SEO
MODX при включённом friendly_urls строит URL по полю uri. Если на сайте использовался AliasListing — URL мог включать полный путь из дерева. Собираем маппинг old_uri → new_url и прописываем редиректы.
Сроки
| Этап | Типовые сроки |
|---|---|
| Аудит структуры MODX, TV, расширений | 1 день |
| Проектирование инфоблоков и маппинг TV | 1 день |
| Разработка скрипта миграции контента | 2–3 дня |
| miniShop2 (при наличии) | 2–4 дня |
| Изображения и медиафайлы | 1 день |
| Редиректы и SEO | 1 день |
| Тестирование | 1 день |
| Итого | 7–11 рабочих дней |
Без miniShop2 миграция с MODX достаточно быстрая — структура данных понятная, TV хорошо маппятся на свойства инфоблока.







