Міграція сайту з 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 добре маппяться на властивості інфоблоку.







