Почитать другие заметки или статьи

Итак, для скачивания доступна 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 по ссылке ниже:

https://vk.com/sitogon

А также в недавно созданной группе Telegram. Ссылка:

https://t.me/sitogonGroup

С уважением, Владимир Егоров.