Миграция сайта с 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-контент. В Joomla редакторы часто вставляют нестандартные шорткоды расширений — {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 с большим каталогом или использовалось много нестандартных расширений с собственными таблицами.







