В быстро меняющемся мире IT, да и не только, выигрывают те, кто постоянно развиваются: остановился — значит проиграл. Это справедливо в частности и для CMS. Стараясь идти в ногу со временем, не за горами выход новой версии CMS Drupal 8.
На данный момент, доступна 3 альфа версия Drupal 8. Было создано несколько инициативных групп, работающих над основными направлениями: Управление конфигурациями, Дизайн, Мобильные устройства, Многоязычность и Вебсервисы. Над ядром работает около 1600+ разработчиков. В новой версии сделано более 500 нововведений и изменений. Ниже я упомяну, по моему мнению, наиболее значимые из них. Изменения описываются по отношению к Drupal 7, т.е. предполагается что читатель знаком с Drupal 7.
Изменения доступные через интерфейс
Сделано много улучшений в интерфейсе по умолчанию — что упростит использование CMS не профессиональными пользователями. Так как наиболее востребованная функциональность добавлена в ядро, практически есть все необходимое из коробки, для построения “среднего” веб-сайта без использования сторонних модулей. Что позволит использовать 8-ку сразу после релиза, не дожидаться выхода основных модулей, как это было для предыдущих версий и обычно занимало около 6 месяцев. И так, изменения:
Inline редактирование
Редактирование контента становится очень простым и удобным: кликнув по значку карандаша, возле нужного контента — он становится доступным для редактирования, конечно если у вас есть соответствующие права.
Модуль Views в ядре
Views — это самый популярный модуль. Как показывает его использование в предыдущих версиях Drupal, использование новой версии Drupal значительно возрастает после выхода именно этого модуля.
Встроенная мультиязычность
Для полного использования мультиязычности в предыдущей версии Drupal нужно было дополнительно установить около 5 дополнительных модулей, сейчас мультиязычность поддерживается в ядре в полном объеме. В 8-ке можно, заменить язык по умолчанию — английский на другой.
Встроенный CKEditor редактор
Удобный текстовый редактор теперь доступен из коробки.
Добавление изображений
Появилась возможность, без установки дополнительных модулей, вставлять изображение в нужное место в тексте. Возможна также одновременная загрузка нескольких изображений.
Адаптивный дизайн для встроенных тем
Встроенные темы теперь являются адаптивными и готовы для использования на мобильных устройствах.
Новый тулбар
Тулбар полностью переделан и теперь стал адаптивным, более удобным и интуитивным.
Возможность изменения отображения формы ноды
Изменять отображение формы ноды, теперь можно без написания кода.
Новые типы полей
В ядро встроены дополнительные часто используемые типы полей: Entity Reference (позволяет устанавливать связь между контентами), Date (для событий ), Link, Telephone, Email, Picture.
Система управления конфигурированием
Полностью переделана система конфигурирования и теперь данные о настройках храняться не в базе, как это было раньше, а в файлах. Что позволяет легко экспортировать/импортировать настройки, использовать разные настройки для разработки и релиза а также, хранить данные в системе управления версиями.
Часть модулей удалена из ядра
Это модули: Dashboard, Poll, Blog, Profile, Open ID, PHP filter, Trigger. В большинстве, эти модули сейчас доступны отдельно.
Апгрейт с предыдущих версий
Для обновления с предыдущих основных версий, в ядро интегрирован модуль Migrate, который позволит напрямую обновляться с 6, 7 до 8.
Изменения для разработчиков
Наибольшие изменения касаются разработчиков, так как делается отход от привычной для Drupal технологии разработки в сторону ООП и использования компонентов Symfony2.
Всем известна крутая кривая изучения Drupal. Использование ООП — должно сделать изучение более простым и доступным. Ядро Drupal, еще никогда не было так хорошо документировано, благодаря отличной документации компонентов Symfony2.
Использование ООП
Хотя ООП частично использовалось и раньше, в 8-ке официально принято использование ООП. Начат постепенный отход от процедурного программирования и использования хуков, которые применялись в времена когда ООП еще небыло доступно в нужном объеме в PHP. В связи с этим появляется много новых, для Drupal, концепций и понятий. Для пространств имен принято следовать стандарту PSR-0 (чуть позже, возможно PSR-4). В 8-ке не будет сделан полный переход к ООП и частичное наследие в виде процедурного кода еще останется, но это будет осуществлено в Drupal 9.
Использование компонентов Symfony2
Одним из главных нововведений в 8-ке, является использование компонентов Symfony2:
- HttpFoundation и HttpKernel — одни из основных компонентов, с которых началась интеграция Symfony2 в Drupal. Преобразовывает все что связано с HTTP при запросе и ответе — в объекты;
- Routing — преобразовывает HTTP запрос в вызов определенной функции, подобно hook_menu;
- ClassLoader — используется для загрузки классов по мере необходимости;
- DependencyInjection или Service Container — позволяет сделать классы независимыми, и тем самым делает их доступными для повторного использования и юнит-тестирования;
- EventDispatcher — реализует паттерн Наблюдатель (Observer). Делает тоже самое что и система хуков, но на данный момент, не заменяет их полностью;
- Yaml — позволяет работать с форматом yaml;
- Twig — новый удобный, мощный движок шаблонов;
- Serializer — преобразование объектов в определенный формат и обратно;
- Translation — система переводов;
- Process — используется для выполнения в субпроцессе, команд из консоли;
- Validator — компонент, для проверки значений;
Composer
Менеджер зависимостей, который используется для скачивания и поддержки в актуальном состоянии используемых библиотек, компонент проекта.
Движок шаблонов Twig
Предыдущий движок шаблонов Phptemplate, часто критиковался за неудобства работы с ним, использовании PHP вставок, плохую защищенность. Twig не только лишен этих недостатков, но так же имеет и много преимуществ: прост в изучении, гибок, шаблоны легко читаемы, cловом сплошное удовольствие для темизатора.
Система конфигурирования
Как упоминалось выше, система конфигурирования полностью переработана и сейчас данные хранятся в текстовых файлах, в весьма удобном формате yaml.
PHPUnit
Добавляет возможность юнит-тестирования, которое современем заменит Simpetest.
Новая концепция блоков
В 8-ке, блок — это сущность (Entity), с присущей ей свойствами: создания дополнительных полей, типов блоков, версий.
RESTful сервер
Из коробки, Drupal 8 может работать как REST сервер и обслуживать множество устройств.
Другие сторонние компоненты
- Doctrine — используется не в полном объеме, а лишь небольшая часть — Annotations. Которая добавляет возможность использования аннотаций, например для конфигурирования плагинов;
- EasyRDF — компонент используемый для добавления RDF и тем самым приближая семантический веб;
- Assetic — фреймворк, который используется при скачивании страницы или другого контента, для сжатия и/или преобразования данных;
- Guzzle — http клиент;
- PSR/Log — система логирования;
Плагины
Плагин — это класc который предназначен для дополнения работы ядра или модулей, и по сути является заменой хуков info. Плагин не является отдельным компонентом и входит в состав модуля, в котором может быть много плагинов.
Изменения нужны не всем
Как известно, люди противятся любым изменениям — даже хорошим, так как это выбивает их из накатанной колии и заставляет покинуть зону комфорта. А в данном случае заставляет заняться изучением — что само по себе является весьма полезным, тем более в свете недавней статьи.
Упомянутые нововведения, предположительно связывают с тем, что Drupal 8 движется к корпоративному рынку, где будут больше востребованы профессиональные разработчики. Часть разработчиков, которым не хочется сложно освоить новую архитектуру и технологию разработки, такой ситуацией не довольны. Поэтому, был сделан форк с Drupal 7, который назвали BackDrop CMS. Это не есть чем-то новым для Drupal, форки делались и раньше, но ни один из них так и не стал популярным. Создатели BackDrop планируют развивать его более “спокойным” способом, но также планируют постепенно использовать ООП, подключить движок шаблонов Twig или написать подобный. Думаю, самым сложным, будет поддерживать BackDrop после окончания официальной поддержки Drupal 7 (а это будет после выхода D9).
Вместо заключения
Приведенный список изменений является далеко не полным, ознакомиться подробней можно здесь. Работа над Drupal 8 пока не завершена, предположительный выход — первая половина следующего года. Желающие опробовать последнюю версию уже сейчас, могут получить пререлиз отсюда или с репозитория.
Автор: ViViVi