Міграція сайту з 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
Components → Joomla! Update → Pre-Update Check. Показує:
- Розширення без J4/J5-сумісної версії
- Deprecated PHP функції в кастомному коді
- Застарілі таблиці БД
J3 → J4: прямое оновлення
# 1. Через веб-апдейтер (якщо всі розширення сумісні)
# Components → Joomla! Update → установити Joomla 4.x
# 2. Виправити несумісні розширення до оновлення
# Знайти J4-сумісні версії або видалити
# 3. Після оновлення
php cli/joomla.php database:update
J4 → J5: оновлення
# Joomla 5 вимагає PHP 8.1+
php -v # перевірити версію
# Оновити через апдейтер
# Components → 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 місяця |







