Вышел Drupal 11: что нового и почему лучше начать миграцию на новую версию

2 августа вышел релиз Drupal 11 -- самой продвинутой в мире CMS(F) с открытым кодом! Что нового с момента выхода Drupal 10 в декабре 2022 года?

Добавлены новые возможности для организации сложной работы с контентом и медиа

Новый стабильный модуль Workspaces позволяет сохранять несколько рабочих пространств сайта, например Live/Stage, в каждом из которых изолированно храняться обновления контента и конфигурации сайта. Можно переключаться между такими состояниями, просматривать изменения и публиковать их из одного рабочего пространства в другое. На мой взгляд это одно из самых масштабных нововведений в Drupal 11. Это позволяет подготавливать, модерировать и единовременно публиковать большие изменения на сайте, не только в его коде, но и в контенте, переводах на другие языки, товарах в каталоге. Не показывать посетителям недоделанные страницы, недозаполненные товары, устаревшие переводы. Workspaces по сути аналогичны веткам в системе контроля версий файлов GIT при работе с программным кодом, только в данном случае речь идет об альтернативных ветках контента сайта в базе данных. Разработчики знают, что минусом работы с кодом в разных альтернативных ветках является трудоемкость слияния веток кода. Как с этой проблемой для контента справляются Drupal Workspaces? Очень просто -- текущая реализация не дает править один и тот же контент в двух рабочих пространствах одновременно, предупреждая возможные конфликты.

У словарей таксономии добавлена работа с ревизиями словарей. Также можно настроить модерацию изменения в таксономию с помощью Workflows. Таксономия Drupal является одной из самых мощных функций работы с полями, позволяющей гибко работать со справочниками значений и тегов.

Ревизии словарей таксономии<br />
Ревизии словарей таксономии

Новые типы полей для хранения номеров телефонов и интервалов дат и времени.

Новые поля интервала дат и телефона<br />
Новые поля интервала дат и телефона

Улучшена и упрощена работа с блоками контента. Реализована работа с ревизиями блоков контента. Проще добавить блок контента в регион. Видимостью блока можно управлять в зависимости от статуса ответа веб-сервера, словаря таксономии, роли пользователя, типа контента.

Модуль Media Library позволяет лучше ориентироваться в видео и изображениях, загруженных на сайт или вставленных из других источников, упрощает их повторное использование в ссылочных полях или при вставке в контент через CKEditor при создании и редактировании материалов. В новом режиме сетки проще находить нужный контент. А специальная кнопка в CKEditor показывает диалог для поиска и переиспользования видео или картинок из медиа библиотеки сайта при вставке их прямо в текст. Автоматической дедупликации Media в ядре пока нет, однако она может быть организована дополнительными модулями.

Добавлена поддержка версионирования (ревизий) в Media контент.

Drupal считается одной из лучших платформ для многоязычных сайтов. Можно переводить на любые языки контент, пользовательский интерфейс, конфигурацию сайта. В 11 версии улучшения коснулись и мультиязычности. Теперь все переводы легко можно отмечать как устаревшие при правке оригинального контента. В админке подсвечиваются требующие актуализации устаревшие переводы контента. А выкатывание обновлений сразу в оригинальные и все переведенные материалы легко можно организовать через Workspaces.

Модернизирован интерфейс администрирования сайта

Два новых экспериментальных модуля Navigation и Navigation Bar добавлют выпадающее слева меню для быстрого доступа к страницам управления сайтом.

Упрощено создание полей для добавления дополнительной информации к типам материалов, комментариям, пользователям.

Улучшена интеграция и настройки CKEditor для работы с картинками и стилями текста, фрагментами кода. Наконец-то из коробки нормально настроены форматы ввода HTML во все основные поля, стили текста и удобно сделана вставка, подпись, изменение размера картинок.

Работа с инлайновыми картинками в CKEditor 5<br />
Работа с инлайновыми картинками в CKEditor 5

Упрощено создание вложенных пунктов меню.

Создание подменю<br />
Создание подменю

В Layout builder улучшен функционал перетаскивания мышью.

Скорость загрузки страниц

Ядро Drupal теперь содержит фреймворк тестирования производительности Gander, который собирает такие параметры как Time to first byte (TTFB), Largest contentful paint (LCP), First contentful paint (FCP), количество запросов в базу данных и сами запросы, количество CSS и JS-файлов на странице, количество запросов в кеш Drupal. Публично доступный сервис на базе Grafana Dashboard мониторит производительность ядра Drupal при его разработке на drupal.org и теперь все компоненты Drupal также покрываются тестами на скорость работы. Это позволило оптимизировать стратегии кеширования, запросы к базе данных, пересмотреть и упростить код в ядре Drupal 11 версии.

Вышел Drupal 11: что нового и почему лучше начать миграцию на новую версию

Для изображений Media по умолчанию используется формат WebP, что уменьшает их вес примерно на 25-34%.

Добавлена минификация JavaScript налету. Выбрасываются комментарии, лишние строки и пробелы, лишние скобки + сжатие gzip. Размер файлов уменьшается на 2/3. Ранее для сжатия приходилось использовать сторонние модули или решения, которые не всегда работали корректно.

Улучшена работа BigPipe, добавлена работа с ленивой загрузкой респонсив изображений и ленивая подгрузка oEmbed-контента. Facebook BigPipe -- это технология отложенной подгрузки тяжелых блоков на странице за один запрос к веб-серверу, которая реализована в Drupal 8+.

Поддержка PHP версии 8.3. Уже это само по себе дает прирост производительности в 1.5 раза за счет реализованных в новой версии PHP оптимизаций.

Как обычно удален устаревший (Deprecated) код Drupal 10 и из ядра удалены и перенесены в contrib ряд редко используемых модулей (Actions UI, Activity Tracker, Book, Forum, Statistics, Tour). Некоторые компоненты устаревшей библиотеки jQuery UI заменены на современный более быстрый JavaScript.

Все эти изменения обещают прирост в скорости работы сайта до 50% по сравнению с предыдущей версией Drupal на более старой версии PHP.

Для разработчиков

Single Directory Components (SDC). Стили, разметка и код теперь организованы более логично для более быстрого написания UI, тестирования, повторного использования компонентов UI.

Access Policy API дополняет ролевой контроль доступа (RBAC) для создания более сложных и гибких решений управления доступом, например, на основе привязки ко времени доступа.

Улучшения в API-first и Headless CMS подходе для лучшей интеграции с микросервисами и отдельными фронтэндами на фреймворках типа React and Vue.js. Улучшения как в RESTful API, так и в поддержке GraphQL. Отдельные точки входа с использованием стандарта Linkset позволяют упростить на фронтэнде разработку динамической навигации, которая управляется из админки Drupal.

Улучшения в безопасности. Более сильные протоколы хеширования паролей. Автоматические обновления из админки наконец-то реализованы. Модуль обновления умеет соединяться с сайтом по SSH и SFTP и обновлять файлы сайта безопасно, без необходимости выдачи прав на запись файлов кода из PHP.

Drupal 11 построен на фреймворке Symfony 7, который вышел в ноябре 2023. В нем содержится множество изменений, улучшающих производитеьность сайта, безопасность и скорость разработки. Например, встроенный профилировщик команд, поддержка типов PHP для упрощения написания кода и отладки в IDE, поддержка предварительной загрузки ресурсов еще до того, как загрузилась страница (preconnect).

Опции "Twig Development Mode" и "Do Not Cache Markup" ускоряют разработку, позволяют отключить кеширование на всех уровнях и автоматически перезагружать шаблоны Twig.

Настройки режима разработки<br />
Настройки режима разработки

Recipes API. Поэтапное построение сайтов с помощью рецептов -- новая концепция в мире Drupal. Рецепты представляют собой записи настроек модулей Drupal, которые можно накатить на любой сайт из админки или командной строки. В отличие от ранее популярных Features, рецепты не устанавливаются, а просто применяются к сайту. В отличе от дистрибутивов Drupal, рецепты не делают сайт зависимым от какой-то одной сборки. Рецепты могут зависеть от модулей, тем оформления, других рецептов и автоматически устанавливать их. Рецепты также покрыты тестами. В ядре Drupal в каталоге core/recepies доступны 29 рецептов. Например, рецепт создания роли редактора контента и настройки прав ему помещается в одном файле recipe.yml + тесты и выглядит так:

name: 'Content editor role' description: 'Provides the Content editor role.' type: 'User role' config: actions: user.role.content_editor: # If this role already exists, then this action has no effect. If it doesn't exist, we'll create it with the following values. createIfNotExists: id: content_editor label: 'Content editor' weight: 2 is_admin: false permissions: - 'access administration pages' - 'view own unpublished content'

Рецепты от пользователей Drupal можно посмотреть тут.

Конфигурации -- одно из ключевых технологических отличий Drupal от всех других CMS, таких как Wordpress и Битрикс, которое делает Drupal-разработку похожей на разработку на фреймворках с поддержкой автоматической миграций данных и настроек модулей. Система рецептов делает работу с конфигурациями Drupal еще более гибкой. Конфигурации и рецепты автоматизируют перенос настроек между копиями сайта local/dev/stage/prod, используются для хранения настроек сайта в GIT, встраиваются в цепочки CI/CD для автоматизированного тестирования и выкатки обновлений сайта.

Стоит ли обновляться?

С Drupal начиная с версий 8 и заканчивая 9 однозначно стоит. Drupal 8 и 9 более не поддерживаются, не получают обновлений безопасности, их использование становится небезопасным. Обновление будет не очень трудоемким. Плюсом при условии обновления PHP до 8.3 можно получить хороший прирост в скорости работы сайта.

Drupal 10 будет поддерживаться до 2026 года. Обновление до 11 рекомендуется если важна скорость работы сайта или нужны новые функции, такие как Workspaces.

Для тех, у кого большой проект на старой некогда популярной версии Drupal 7 и скорость работы сайта устраивает вопрос не столь однозначный. Поддержка и выпуск обновлений безопасности Drupal 7 продлены до 5 января 2025. Наиболее важные изменения по сравнению с Drupal 7 перечислены в конце статьи про Drupal 10. Переделывать сайт на новой версии Drupal и мигрировать контент с Drupal 7 очевидно будет целесообразным если планируется дальнейшее активное развитие сайта, редизайн, внедрение новых веб-технологий, которые поддерживаются в новых версиях Drupal.

55
Начать дискуссию