Несколько фокусов с CMS Joomla
- Дата: 13.12.2025
- Автогенерация и отображение эскизов фотоальбомов модулем RokBox
- Доработка горизонтального меню-списка для динамического разворачивания подпунктов
- Единая кнопка «Сохранить изменения» для корзины Интернет-магазина VirtueMart
- Изменение/снятие ограничений на длину строки поиска и его попутная доработка
- Исправление ссылки на главную/домашнюю в горизонтальном меню старого стиля
- Обновление сайтов на Joomla старых версий 1.5/2.5 до 3.6
- Обновление сайтов на Joomla 3.10.12 до 5.1.4 через 4.4.8
- Обновление сайтов на Joomla 5.4.1 до 6.0.1
- Отображение заглушки «сайт в разработке» для всех и всего сайта для избранных
- Подсветка пункта меню типа «внешняя ссылка», или Как сделать ссылки на категории VirtueMart
- Преобразование адресов сайта в дружественные (SEF) для внешних нужд
- Реализация двуязычного сайта с постраничным переключением языков
- Удаление значка печати из списка статей при сохранении его на странице статьи
Обновление сайтов на Joomla 5.4.1 до 6.0.1
«Никогда такого не было, и вот опять…» – это, к сожалению, не просто оксюморон, это про Joomla… 🙁 Ранее я писа́л про проблемы обновления главных (major) версий этого движка:
- обновление сайтов на Joomla старых версий 1.5/2.5 до 3.6;
- обновление сайтов на Joomla 3.10.12 до 5.1.4 через 4.4.8;
и каждый раз сообщество обещало мне, что радикальных переделок архитектуры больше не будет, обратная совместимость будет лучше… Но увы, при обновлении до 6-й версии Joomla я снова столкнулся с нешуточными проблемами, несмотря на наличие подключаемого модуля обратной совместимости… 🙁
Напомню, решение отказаться от Joomla в пользу WordPress было принято ещё после предыдущего большого обновления, но так как заказчики с сайтами на Joomla у меня ещё остались, то пришлось снова заняться неприятным большим обновлением.
А чтобы это было не так неприятно хотя бы для вас, я решил зафиксировать и опубликовать свой опыт обновления 10 сайтов до Joomla 6.0.1.
| Сообщение об ошибке | Старый код | Новый код |
Class ContentHelperRoute not found. | …Route::_(ContentHelperRoute::get…(…)) | Joomla\Component\Content\Site\Helper\RouteHelper::get…(…) |
Class JFactory not found. | JFactory | Joomla\CMS\Factory |
Class JFilterOutput not found. | JFilterOutput | Joomla\CMS\Filter\OutputFilter |
Class JHtml not found. | JHtml | Joomla\CMS\HTML\HTMLHelper |
Class JModuleHelper not found. | JModuleHelper | Joomla\CMS\Helper\ModuleHelper |
Class JRoute not found. | JRoute | Joomla\CMS\Router\Route |
| Class JText not found. | JText | Joomla\CMS\Language\Text |
Class JURI not found. | JURI | Joomla\CMS\Uri\Uri |
| Проблема | Решение |
Class FieldsPlugin not found. | Удалить папку /plugins/fields/repeatable согласно совету на GitHub'е. |
Под PHP 8.3.11 не включается автоматическое обновление движка Joomla (error while registering to automated update service) на /administrator/index.php?option=com_config&view=component&component=com_joomlaupdate: GET https://*.ru/api/index.php/v1/joomlaupdate/healthcheck порождает серверную ошибку № 500 (Internal Server Error), а прямой вызов этого же адреса выдаёт другую ошибку: {"errors": [{"title": "Resource not found", "code": 404}]} | Включить журналирование ошибок Joomla и через него выяснить причину серверной ошибки, то есть то, какой (старый) код/расширение порождает его (в моём случае это было ChronoEngineGCore2), отключить его, включить автоматическое обновление Joomla и при необходимости включить отключённое (хотя лучше избавиться от него) – всё согласно моему расследованию на GitHub'е. |
Под PHP 8.3.27 не включается автоматическое обновление движка Joomla (error while registering to automated update service) на /administrator/index.php?option=com_config&view=component&component=com_joomlaupdate: GET https://*.ru/api/index.php/v1/joomlaupdate/healthcheck порождает клиентскую ошибку № 403 “Forbidden”, а прямой вызов этого же адреса выдаёт ту же самую ошибку. | Проверить журналы ошибок и доступ веб-сервера и попытаться в них выяснить причину клиентской ошибки доступа, а если ничего не выяснится (как это было в моём случае), то пообщаться со службой поддержки хостинга, которая может помочь (как это было в моём случае – ошибки в связи с изменением схемы проксирования, когда не были учтены случаи PATH_INFO-запросов, то есть когда к PHP-сценарию идёт обращение /index.php/aaa/bbb/ccc) – всё согласно моему расследованию на GitHub'е. |
Если у вас что-то не получается и нужна моя профессиональная помощь – напишите мне по электронной почте или комментарий ниже.
