Міграція сайту з Joomla на 1С-Бітрікс
Joomla — універсальна CMS з гнучкою структурою розширень. Більшість сайтів на ній — корпоративні портали, новинні видання, каталоги без повноцінної комерції. Коли бізнес виростає і потребує повноцінного інтернет-магазину з інтеграцією 1С, CRM та ERP — починають дивитися в сторону Бітрікс. Завдання міграції при цьому нетривіальна: у Joomla немає єдиної моделі даних, все залежить від встановлених розширень.
Аудит вихідного сайту
Перш ніж писати скрипт міграції, проводимо інвентаризацію. У Joomla дані зберігаються в таблицях з префіксом (зазвичай jos_ або довільний):
-
Статті —
jos_content, поля:title,alias,introtext,fulltext,catid,created,modified,metadesc,metakey,images(JSON). -
Категорії —
jos_categories(спільна таблиця для всіх типів контента, фільтр заextension = 'com_content'). -
Користувачі —
jos_users,jos_user_profiles,jos_usergroups. -
Меню —
jos_menu,jos_menu_types. -
Теги —
jos_tags,jos_contentitem_tag_map.
Якщо стоїть VirtueMart — окремі таблиці jos_virtuemart_products, jos_virtuemart_product_prices, jos_virtuemart_categories. Якщо HikaShop — їхні jos_hikashop_product. З'ясовуємо це на етапі аудиту та будуємо план переносу під конкретну конфігурацію.
Структура даних у Бітрікс
Новинні матеріали та статті Joomla переносяться в інфоблоки (b_iblock_element). Для корпоративного сайту зазвичай створюють інфоблоки «Новини», «Статті», «Блог» з потрібними властивостями. Категорії Joomla → розділи інфоблоку (b_iblock_section).
Якщо на Joomla стояв VirtueMart і потребує переносу в інтернет-магазин Бітрікс — підхід такий же, як при міграції з OpenCart: товари в інфоблок каталогу, ціни в b_catalog_price.
Сторінки меню Joomla конвертуються в пункти меню Бітрікс через компонент bitrix:menu — структура зберігається в файлах .menu.php за директоріями сайту.
Перенос контента
Основна маса даних — статті. Схема переносу:
- Читаємо
jos_contentJOINjos_categories— отримуємо статтю з шляхом категорії. - Створюємо розділ інфоблоку через
CIBlockSection::Add()якщо він ще не створений (зберігаємо маппінгcatid → SECTION_ID). - Створюємо елемент інфоблоку через
CIBlockElement::Add():NAME = title,PREVIEW_TEXT = introtext,DETAIL_TEXT = fulltext,CODE = alias,ACTIVE_FROM = created. - Мета-теги прописуємо в властивості елемента або через модуль
mainу таблицюb_iblock_element_property.
Зображення у Joomla зберігаються в полі images як JSON: {"image_intro":"images/catalog/photo.jpg","image_fulltext":""}. Парсимо JSON, завантажуємо файли, реєструємо через CFile::SaveFile().
HTML-контент. У редакторах часто вставляють нестандартні шорткоди розширень — {loadmodule mod_name}, {phocagallery ...} та т.п. Перед переносом прогоняємо контент через регулярки, видаляємо нерозпізнавані теги або замінюємо їх на аналоги Бітрікс (компоненти в тексті через <?$APPLICATION->IncludeComponent(...)?> небажані — краще видалити і вивести логіку окремо).
Користувачі
jos_users зберігає паролі в bcrypt — алгоритм сумісний з PHP password_hash(). Бітрікс умеє працювати з bcrypt, якщо налаштувати BX_SECURITY_SESSION_CACHE_MODE. Але стандартний шлях — створити користувачів через CUser::Add() з тимчасовим паролем та розіслати листи на скидання. Групи Joomla (jos_usergroups) маппимо на групи Бітрікс.
SEO та редиректи
Joomla будує URL за шаблонами компонентів. При включеному SEF-адаптері URL виглядає як /news/category-alias/article-alias.html або /news/article-alias. Без SEF — /index.php?option=com_content&view=article&id=42&catid=5.
Формуємо таблицю відповідностей старих та нових URL. Для кожної статті старий URL визначається за alias та шляхом категорій. Новий URL у Бітрікс залежить від параметрів ЧПУ компонента. Редиректи прописуємо через UrlRewriter::add() або в конфігу веб-сервера.
Особлива увага — sitemap.xml та robots.txt. Якщо сайт накопив SEO-вагу, не змінюємо структуру URL без 301-редиректів.
Розширення без прямих аналогів
| Joomla-розширення | Аналог у Бітрікс |
|---|---|
| JComments / K2 Comments | Модуль forum або кастомний компонент |
| AcySailing (розсилки) | Модуль subscribe |
| Akeeba Subscriptions | Кастомна розробка або модуль sale |
| JEvents | Інфоблок з типом властивостей «Дата» |
| Phoca Gallery | Компонент bitrix:photogallery |
Терміни
| Етап | Типові терміни |
|---|---|
| Аудит розширень та структури даних | 1–2 дні |
| Проектування інфоблоків та властивостей | 1 день |
| Написання та відладка скрипта міграції | 2–4 дні |
| Перенос зображень та медіафайлів | 1–2 дні |
| Перенос користувачів | 0,5 дня |
| Налаштування SEO-редиректів | 1 день |
| Фінальне тестування | 1 день |
| Усього | 7–11 робочих днів |
Термін збільшується, якщо на Joomla стояв VirtueMart з великим каталогом або використовувалося багато нестандартних розширень з власними таблицями.







