Итак, для скачивания доступна Joomla 6. Хочу поделиться своим опытом и некоторыми соображениями при обновлении Joomla 5 до шестой версии. К моменту написания этих строчек, за моей спиной уже накопился определенный багаж опыта, мыслей и определённых лайфхаков, позволяющих обезопасить и ускорить процесс обновления.
Две категории. Два вида. Два типа.
Сайты последних лет на Joomla условно можно поделить на две категории или типа.
Первый — использует так называемые легаси расширения, которые могут работать исключительно с включенным плагином совместимости.
Второй — состоит из расширений, использующих новейшую структуру компонентов, плагинов, модулей Joomla.
Первых мне встречалось больше. Если вы не знаете к какой категории относится ваш сайт и планируете обновляться — зовите программиста.
Да и в целом хочу заметить, все ниженаписанное в первую очередь для тех, кто знаком с азами разработки на Joomla.
С чего начинается обновление?
Обновление Joomla начинается с того, что в настройках одноименного компонента мы устанавливаем сервер обновлений, как «Joomla Next».
После сохранения настроек мы увидим табличку, где достаточно наглядно будет показано: соответствует ли сайт системным и прочим требованиям к Joomla 6.
Одним из ключевых требований будет отключение плагина совместимости. Об этом сообщит текст:
The 'Поведение - Обратная совместимость' plugin is disabled
Если сайт относится к первой категории, то сразу же после отключения плагина вы получите фатальную ошибку.
Административная панель перестанет работать. Как, собственно, и фронтальная часть сайта.
Исправить ситуацию поможет только включение плагина путем запроса напрямую в базу данных. Например, через phpmyadmin.
Как не допустить сие?
Задача простая. Заставить работать совместимость при выключенном плагине совместимости.
Для этого скопируем файлик расположенный здесь:
plugins/behaviour/compat/src/classmap/classmap.php
в папку вашего действующего системного плагина.
И подключим его в коде этого плагина.
Вот так:
Есть одно условие. Плагин этот должен запускаться первым. Раньше остальных!
Порядок запуска можно установить в административной панели, в списке плагинов. Путём их сортировки.
Предварительно нужно отфильтровать плагины по типу, выбрав тип «system».
К слову, для себя я написал свой собственный плагин, но выкладывать его в паблик не буду по целому набору причин.
Переезд хуже пожара
Если вы всё сделали правильно, то сам процесс обновления пройдёт обычно. Без каких либо проблем.
Система обновится и останется отправиться на экскурсию по фронтальной и административной части сайта.
Мне рассказывали истории, когда обновление прошло безболезненно и сайт продолжал работать, как ни в чём не бывало.
Однако, это не мой случай.
Рассмотрю ошибки, с которыми пришлось столкнуться мне.
Call to a member function getTag() on null
Данная ошибка может возникнуть, если в конструкторе роутера имеет место быть попытка получить параметры компонента следующим образом:
$params = Factory::getApplication()→getParams('com_test');
Если использовать ComponentHelper, то такой ошибки не будет.
There is no "chosen" asset of a "preset" type in the registry
Данная ошибка сообщает о том, что всеми любимая jquery библиотека для создания красивых выпадающих списков chosen была начисто выпилена из системы.
Её больше нет в Joomla 6.
Для решения вопроса я написал небольшой плагин, скачать его можно по ссылке ниже:
https://sitogon.ru/joomla-plugins/sitogon-chosen
К слову, плагин помогает решить вопрос с другой, но по сути родственной ошибкой:
formbehavior::chosen not found
В компонентах использующий легаси код мне встречались ошибки:
Call to undefined function utf8_ucfirst() и Call to undefined function utf8_strtolower()
Лечится это заменой на mb_ucfirst и mb_strtolower, соответственно.
Хочу заметить, что прежде чем менять что-то на что-то, необходимо понимать что и на что вы меняете.
Бездумно производить автозамену по всем файлам вашего проекта не стоит! Получите неработающий сайт!
Белый экран в компонентах
В процессе обновления сайтов столкнулся с проблемой белого экрана в компонентах разработанных для Joomla 5 и работающих на Joomla 6 без плагина совместимости.
Решается это исправлением файла
administrator/components/ваш компонент/src/Extension/ваш компонентComponent.php
Файл должен соответствовать структуре Joomla 6.
Заключение
По мере появления новых ошибок, я буду стараться описывать их решение.
При этом, хочется сказать, что переезд с Joomla 5 на Joomla 6 — мероприятие менее энергоёмкое, нежели подобный переход с Joomla 3.
Напоминаю!
Если у вас остались вопросы и предложения, их всегда можно озвучить в группе VK по ссылке ниже:
А также в недавно созданной группе Telegram. Ссылка:
С уважением, Владимир Егоров.