Миграция сайта с Joomla 3 на Joomla 5
Joomla 3 достигла EOL в августе 2023. Joomla 4 и 5 используют новую архитектуру (PSR-4, Namespaces, DI Container), несовместимую с расширениями Joomla 3. Миграция требует обновления всех расширений и переработки кастомного кода.
Стратегия миграции
Вариант 1: Поэтапное обновление — J3 → J4 → J5. Инструмент Pre-Update Check помогает выявить несовместимые расширения на каждом этапе.
Вариант 2: Чистая установка J5 — установить J5 с нуля, мигрировать только контент и конфигурацию. Шаблон и расширения — новые совместимые версии. Быстрее если много устаревших расширений.
Pre-Update Check
Компоненты → Joomla! Update → Pre-Update Check. Показывает:
- Расширения без J4/J5-совместимой версии
- Deprecated PHP функции в кастомном коде
- Устаревшие таблицы БД
J3 → J4: прямое обновление
# 1. Через веб-апдейтер (если все расширения совместимы)
# Компоненты → Joomla! Update → установить Joomla 4.x
# 2. Исправить несовместимые расширения до обновления
# Найти J4-совместимые версии или удалить
# 3. После обновления
php cli/joomla.php database:update
J4 → J5: обновление
# Joomla 5 требует PHP 8.1+
php -v # проверить версию
# Обновить через апдейтер
# Компоненты → Joomla! Update → Joomla 5.x
Миграция контента при чистой установке
// Экспорт контента из J3
// Использовать com_content data export или прямой SQL dump
// Структура таблицы jos_content одинакова в J3/J4/J5 — прямой импорт работает
// Но: некоторые поля изменились, нужна проверка
// Импорт через CLI:
php cli/joomla.php import:content --file /tmp/content-export.sql
Шаблоны: Joomla 3 → 5
Шаблоны J3 не совместимы с J5. Для J5 нужны шаблоны на основе нового Bootstrap 5 API или Cassiopeia.
Популярные конструкторы шаблонов с поддержкой J5:
- Helix Ultimate — открытый исходный код
- Astroid Framework
- YOOtheme Pro
Миграция кастомных расширений
Кастомные компоненты Joomla 3 требуют рефакторинга:
// J3 (устарело):
$db = JFactory::getDbo();
$user = JFactory::getUser();
$app = JFactory::getApplication();
// J5 (правильно):
$db = \Joomla\CMS\Factory::getDbo();
$user = \Joomla\CMS\Factory::getApplication()->getIdentity();
$app = \Joomla\CMS\Factory::getApplication();
// Пространства имён
namespace MyCompany\Component\Catalog\Site\Controller;
use Joomla\CMS\MVC\Controller\BaseController;
Сроки
| Тип сайта | Срок |
|---|---|
| Информационный сайт (только контент, стандартные расширения) | 3–5 дней |
| Средний сайт с несколькими кастомными расширениями | 2–4 недели |
| Крупный портал с com_virtuemart / K2 Pro / кастомным кодом | 1–2 месяца |







