16 апреля 2024 года вышли релизы Joomla 5.1 и Joomla 4.4.4. Если Joomla 4.x уже находится в режиме поддержки и получает только "заплатки", то в каждом выпуске Joomla 5.x появляется что-то новое. Краткий список был опубликован в недавней новости. Давайте посмотрим подробнее на то что же именно появилось в Joomla 5.1. Сначала опубликовал статью на Хабре, также она доступна на сайте автора.
Внедрение The Update Framework (TUF)
На Хабре встречается немало упоминаний TUF, также в статье Как устроен The Update Framework (TUF). Обзор технологии безопасного обновления ПО можно ознакомиться с тем, как он устроен под капотом. TUF используют Microsoft, Amazon, Google, DigitalOcean, Docker, IBM, Datadog, VMware, Red Hat и другие компании. Если вкратце, то TUF - это набор инструментов, позволяющих удостовериться в том, что получаемые пакеты обновлений действительно исходят от проекта Joomla и не были модифицированы по пути к вашему сайту.
В 2016 году на сервере обновлений WordPress была обнаружена уязвимость, которая позволила бы злоумышленникам скомпрометировать до 27% сайтов в интернете (цифры на 2016-й год - 27% сайтов в мире были на WordPress), так как на многих сайтах WordPress используется автообновление. Подобные атаки называются Supply chain attack (атака на цепочку поставок).
Supply chain attack (атака на цепочку поставок)
Для смягчения такой атаки необходимо, чтобы локальный сайт Joomla мог подтвердить, что информация о доступных обновлениях была опубликована проверенным лицом - проектом Joomla). Также должна быть возможность проверить целостность загруженного пакета обновления.
Для этого в индустрии программного обеспечения используют шифрование с открытым/закрытым ключом: разработчик публикует информацию об обновлении и подписывает ее, используя свой закрытый ключ. В локальном экземпляре Joomla хранится копия открытого ключа, что позволяет проверить эту подпись. Если информация об обновлении или подпись были изменены, проверка завершится неудачей. И если эта информация об обновлении также включает в себя хеш-сумму («отпечаток пальца» для файла) фактического пакета обновления, программное обеспечение также может проверить, что фактически загруженный пакет является исходным файлом и не был изменен.
Благодаря TUF Joomla теперь может доказать целостность как информации об обновлениях, так и файлов. Это делает будущие обновления ядра защищенными от несанкционированного доступа. Даже если злоумышленникам удастся получить доступ к серверу обновлений, распространяющему информацию о доступных обновлениях, они не смогут подделать криптографическую подпись, подтверждающую, что эта информация действительно была опубликована официальным проектом.
TUF решает широкий спектр различных проблем , а также позволяет проекту Joomla безопасно добавлять и удалять авторизованные ключи подписи в будущем. Это стратегическое решение в плане безопасности Joomla на долгие годы вперед.
Для разработчиков расширений Joomla ничего пока что не меняется. TUF поддерживается только для обновлений ядра Joomla.
Тёмная тема панели администратора Joomla 5
Тёмная тема админки появилась в Joomla 5, однако, практически сразу стали возникать пожелания к улучшению. В частности, не хватало переключателя между тёмной и светлой темой, что решалось дополнительными модулями для панели управления.
Тёмная тема в Joomla 5.0.2:
Тёмная тема в Joomla 5.1:
В настройках стиля шаблона панели администратора Joomla 5 - Atum появились настройка для выбора темы по умолчанию. Для этого пройдите в Система - Стили панели управления - Atum - вкладка "Параметры цвета".
Туда нужно зайти и просто сохранить параметры. Тогда переключатель темы появится в выпадающем меню админки "Мой профиль".
До сохранения параметров шаблона Atum:
После сохранения появляется пункт "Переключить тему шаблона".
Приветственный (Welcome) обучающий тур
Для новых установок Joomla создан приветственный тур, который призван познакомить новичков с основными разделами админки.
За 6 шагов Joomla, конечно, не изучишь. Да и подавляющему большинству опытных пользователей это не нужно. Но тем, кто впервые окажется в адмнке, возможно окажется полезным. Подобные туры встречаются и в других движках, например, в Moodle. В целом это напоминание о том, что в Joomla есть такой функционал и его можно использовать для обучения новых пользователей админки. Ну и создание доброжелательной атмосферы ))
В сам процесс создания туров добавлена поддержка checkbox
, radio
, select
в качестве целей для элемента тура.
Настройки SEO в Joomla 5.1
2 новых функции были добавлены в плагин SEF. Одна из них связана с index.php
в url, вторая - с повторяющимися слешами в конце адреса.
Обычно эти проблемы решаются настройками в файле .htaccess
. Но теперь добавили этот функционал в админку.
Как убрать index.php из url адреса в Joomla 5.1+?
Обычно эта проблема появляется из-за того, что после установки не был включён параметр "Перенаправлять URL" в общих настройках, также не был переименован htaccess.txt
в .htaccess
для сервера Apache. Обычно этих двух действий вполне достаточно. Но в том случае, если под действием чёрной магии index.php
из адреса не убирается - можно включить параметр в плагине SEF. Как сообщает подсказка к опции "Использование параметра невозможно, если в общих настройках сайта для параметра Перенаправлять URL установлено значение Нет."
Как убрать слеши в конце URL в Joomla 5.1+?
Другой полезной опцией плагина SEF стал параметр "Конечная косая черта в URL". У него есть 3 возможных значения: "без изменений", "принудительно включать в конце" и "принудительно исключать в конце". Также обычно это решается правилами в .htaccess
, но возможно кому-то окажется полезным.
Также, в общих настройках Joomla добавлено уведомление о том, что эти настройки существуют и находятся в плагине Система - SEF.
Добавлены два новых плагина для Schema.org: Custom и Article
В целом нужно напомнить о том, что в Joomla 5 появился новый тип плагинов - schemaorg
. Работают они вкупе с плагином Система - Schema.org
.
Из коробки Joomla имеет возможность указывать микроразметку Schema.org в формате json+ld
. Для этого базовые настройки указываются в системном плагине, а плагины типов добавляют настройки в компоненты материалов и контактов. Добавлен тип Schema.org/Article, а также тип Custom (в названии PR он значился как Generic, но потом переименовали в Custom). При выборе этого типа появляется поле, где можно вручную указать нужный JSON-код микроразметки.
Полный список плагинов микроразметки Schema.org в Joomla 5.1
-
Schema.org - Article - https://schema.org/Article
-
Schema.org - Custom - для использования схем, отсутствующих в ядре Joomla
-
Schema.org - BlogPosting - https://schema.org/BlogPosting
-
Schema.org - Book - https://schema.org/Book
-
Schema.org - Event - https://schema.org/Event
-
Schema.org - Organization - https://schema.org/Organization
-
Schema.org - Person - https://schema.org/Person
-
Schema.org - Recipe - https://schema.org/Recipe
-
Schema.org - JobPosting - https://schema.org/JobPosting
Улучшение версии сайта для слабовидящих в Joomla
Плагин версии для слабовидящих появился ещё в Joomla 4. Он соответствует требованиям WCAG - международным рекомендациям для обеспечения доступности контента в интернете. Аналогом их является ГОСТ Р 52872-2019 "Интернет-ресурсы и другая информация, представленная в электронно-цифровой форме. Приложения для стационарных и мобильных устройств, иные пользовательские интерфейсы. Требования доступности для людей с инвалидностью и других лиц с ограничениями жизнедеятельности" (бывший ГОСТ Р 52872-2012).
Улучшения версии для слабовидящих касаются инструмента проверки контента на доступность (в материалах). Он позволяет обнаруживать и исправлять проблемы с доступностью, такие как проблемы с цветовым контрастом, отсутствующие теги и т.д.
Также добавлена поддержка новых языков и автоматическое определение языка на основе языка страницы, добавлены новые параметры в настройки плагина. Решалась проблема поддержки кодовой базы на JS для двух версий Joomla, так как они отличались.
Замена Bootstrap modal на dialog
Для обычных пользователей Joomla это нововведение незаметно. Внешне всё работает так же, как и раньше. Но для разработчиков, поддерживающих ядро Joomla, а так же для разработчиков расширений Joomla на лицо видно движение в сторону стандартизации подходов внутри ядра.
Ранее писал статью Создание пользовательского типа поля Form в Joomla 5 на примере Modal Select, в которой описывается работа с новым типом диалоговых окон в Joomla 5.
Улучшение CLI
Команда проверки обновлений расширений Joomla
Для команды php cli\joomla.php update:extensions:check
был добавлен расширенный вывод информации об обновлениях расширений в CLI.
Добавлен выбор источника обновлений ядра через CLI
Joomla позволяет проводить обновление ядра через CLI, однако при этом использовались настройки компонента com_joomlaupdate
. Теперь в команду обновления CLI добавили возможность выбора сервера обновлений default
, next
, testing
или custom
. В случае если указан custom
, то также нужно указать параметр --url=<url>
со ссылкой на xml-манифест обновлений ядра. Подробнее в PR #42597.
Добавлено новый триггер для плагинов onAfterInitialiseRouter
Joomla позволяет изменять роутинг (построение URL), добавляя к нему правила. До сих пор часто это делалось с помощью плагина и добавления этих правил на событии onAfterInitialise
. Однако это создает проблему, когда мы не находимся в приложении SiteApplication
и хотим создать ссылку, поскольку роутер может быть создан неправильно. Достаточно часто плагины проверяют, является ли текущее приложение приложением SiteApplication
, и если нет, то они не реагируют. Однако это означает, что когда вы находитесь в серверной части и создаете ссылку на фронтенд, например, для e-mail рассылки, URL-адрес может быть неправильным, потому что плагины с пользовательским поведением не привязывали это поведение к роутеру, поскольку они думали, что находятся в неправильном контексте.
В Joomla 5.1 добавлено новое событие onAfterInitialiseRouter
. Это событие запускается каждый раз при создании объекта роутера (которое должно выполняться только один раз для каждой инициализации) и позволяет плагинам добавлять свою логику независимо от текущего запущенного приложения и, в частности, независимо от того, когда был создан объект. Подробнее в PR #42692.
Увеличение "ёмкости" полей типа subform
При создании дочерних форм (subform) в пользовательских полях для материалов, контактов и т.д. часто в них помещались разного рода таблички, которые удобно таким образом заполнять. Joomla сохраняет данные сабформы в json и помещает в базу данных. Казалось бы всё хорошо, но тип поля value
в таблице #_fields_values
был text
. В него помещалось довольно много информации на латинице, но довольно немного на кириллице, так как кириллица переводится в unicode. И для того же объёма текста объём сохраняемых данных увеличивается раз в 5. Так слово текст
в формате unicode escape выглядит как \u0442\u0435\u043A\u0441\u0442
. Поэтому большие формы на русском языке не умещались в базу данных. Вебмастера обычно вручную изменяли тип поля в базе данных с text
на mediumtext
. Но теперь это изменение пришло в ядро.
Валидация полей Joomla Form с помощью регулярных выражений
Набор классов validation rules можно посмотреть в libraries/src/Form/Rule
. Эти правила указываются в xml-формах и позволяют выполнять проверки в процессе сохранения данных. Теперь добавлена такая возможность - указывать регулярки для проверки значений полей. Подробнее в PR #42657.
Обновление FontAwesome и TinyMCE
Теперь в составе ядра TinyMCE 6.8.3 и FontAwesome 6.5.1.
Полный список изменений
Полный список доступен на GitHub. Он содержит в себе 247 принятых Pull Requests. Из них 69 с лейблом Feature
- новый функционал самого разного масштаба.
Также почитать о нововведениях в Joomla 5.1 можно в официальном журнале международного Joomla-сообщества - Joomla Community Magazine: What's new in Joomla 5.1?.