Перейти к основному содержанию

Drupal 8. Основные нововведения, Symfony2-компоненты, новые возможности

Хотя до сих пор точной даты выхода Drupal 8 еще нет, предстоящий запуск новой версии Drupal сильно повлияет на развитие самой CMS, не только как инструмента администрирования, но и ресурса для создания многофункциональных мобильных веб-сервисов.

Хотя до сих пор точной даты выхода Drupal 8 еще нет, предстоящий запуск новой версии Drupal сильно повлияет на развитие самой CMS, не только как инструмента администрирования, но и ресурса для создания многофункциональных мобильных веб-сервисов.

Мы рассмотрим основные 9 нововведений, которые будут составлять основной «базис» новой CMS Drupal 8.

1. Объектно-ориентированное программирование (ООП).

Drupal 8 официально войдет в мир объектно-ориентированного программирования с введением основных компонентов Symfony2. Проект Symfony представляет собой набор специализированных PHP-компонентов, использующий знаменитый шаблон проектирования Model-View-Controller. Таким образом, программистам предоставляются огромные возможности по созданию динамических отношений между различными объектами PHP классов. Поддерживать и модернизировать такой код намного легче и приятнее.

В состав Drupal 8 будут включены следующие компоненты Symfony2:

А) HttpFoundation и HttpKernel – основные компоненты, с которых началась интеграция Drupal 8 и Symfony2. Эти компоненты отвечают за обработку HTTP-запросов и ответов, которыми управляются в виде готовых объектов.

Схема работы маршрутизации HTTP-запросов в Drupal 8

Routing HTTP-запросов в Drupal 8

Компонент HttpFoundation

На самом глубоком уровне находится компонент :namespace:`Symfony\\Component\\HttpFoundation`. HttpFoundation предоставляет основные объекты, необходимые для работы с HTTP. Это объектно-ориентированная абстракция некоторых встроенных PHP функций и переменных:

  • Класс Symfony\Component\HttpFoundation\Request абстрагирует основные глобальные переменные в PHP, такие как $_GET, $_POST, $_COOKIE, $_FILES и $_SERVER;
  • Класс Symfony\Component\HttpFoundation\Response абстрагирует некоторые PHP функции типа header(), setcookie() и echo;
  • Класс Symfony\Component\HttpFoundation\Session и Symfony\Component\HttpFoundation\SessionStorage\SessionStorageInterface абстрагируют функции session_*() для управления сессией.

Компонент HttpKernel

Поверх HttpFoundation располагается компонент :namespace:`Symfony\\Component\\HttpKernel`. HttpKernel управляет динамической частью HTTP; это тонкая обёртка поверх классов Request и Response, которая приводит способы обработки запросов к стандарту. Компонент также предоставляет точки для расширений и инструменты, делающие его идеальной стартовой площадкой для создания Web-фреймворка без лишних проблем.

Б) Routing – наследник hook_menu, компонент преобразовывает HTTP-запрос в вызов определенной функции.

В) ClassLoader – важный компонент, особенно для разработчиков модулей, который необходим для загрузки определенных классов по необходимости.

Г) Dependency Injection или Service Container - позволяет сделать классы независимыми, доступными для повторного использования и юнит-тестирования;

Д) EventDispatcher. Компонент реализует систему паттернов хуков, но не заменяет их полностью. Ожидается, что в Drupal 9 EventDispatcher усилит свое присутствие в различных компонентах уровня ядра.

Е) Yaml – компонент, позволяющий определять модулям свои настройки по умолчанию и разрешать пользователям сайта их переопределять.

Ж) Twig – мощный шаблонизатор, который полностью вытеснит существующий PHPtemplate в Drupal 7.

З) Serializer – компонент, который переводит объект в один из указанных форматов и обратно.

И) Translation – компонент, отвечающий за перевод и локализацию.

K) Process – компонент, необходимый для управления CMS drupal 8 из командной строки.

Л) Validator – компонент, отвечающий за проверку значений и данных. Будет использоваться, например, при проверке сущностей данных или при проверке форм при их отправке.

2. Twig – новый движок для создания тем в Drupal 8.

Ядро Twig полностью интегрировано с Drupal 8 и определяет новую удобную логику для построения различных тем.

Twig в Drupal 8

Характеристики Twig

  • Быстрый: Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.
  • Безопасный: Twig имеет режим "песочницы" для оценки "ненадежного" кода в шаблонах. Это позволяет использовать Twig в приложениях, где пользователи могут менять содержимое шаблонов.
  • Гибкий: Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создавать собственный DSL.

Пример шаблона maintenance-page.html.twig темы bartik в CMS Drupal 8

{{ head }} {{ head_title }} {{ styles }} {{ scripts }} {{ 'Skip to main content'|t }} 

{% if site_name or site_slogan %}

{% if site_name %}

{{ site_name }} 

{% endif %} {% if site_slogan %}

{{ site_slogan }}

{% endif %}

{% endif %}

{% if title %}

{{ title }}

{% endif %} {{ content }} {% if messages %}

{{ messages }}

{% endif %}

3. Встроенный inline-редактор SPARK.

Главная особенность модуля заключается в возможности редактирования содержимого, меню и блоков непосредственно на странице, без необходимости загрузки отдельной формы редактирования. Проект SPARK http://www.sparkdrupal.com/  поддерживается компанией-разработчиком Drupal – Acquia.

4. Новая адаптивная панель инструментов.

Новая административная панель в Drupal 8 будет иметь новый вид и визуально разделена на три пункта Menu, Shortcuts (Ярлыки), Личный кабинет. В свою очередь, Menu включает пункты Content (Контент), Structure (Структура), Appearance (Внешний вид), Extend (Расширения), Configuration (Настройки), People (Пользователи), Reports (Отчеты), Help (Справка).  

Toolbar Drupal 8

Кроме того, новая панель инструментов адаптирована под мобильные устройства, планшеты и персональные компьютеры. Дополнительное меню может автоматически трансформироваться, как в вертикальную, так и в горизонтальную позицию.

5. Интеграция модуля Views в ядро Drupal 8.

Номер 1 модуль по количеству скачиваний – Views будет интегрирован в ядро CMS Drupal 8. Так как данный модуль используется на более 70% всех веб-сайтов CMS Drupal, такой нововведение позволит разрабатывать и визуализировать новые проекты без единой строчки кода «прямо из коробки».

Toolbar Drupal 8

6. Drupal 8 будет наиболее доступной CMS для слабовидящих пользователей Интернета.

В системе появится специальный метод «Announce», который дает возможность модулям создавать прямой выход на чтения с экрана. Дополнительный метод TabbingManager позволит скрывать ненужные элементы, для выделения и  отображения необходимого контента.

7. Встроенный визуальный редактор CKEditor.

По умолчанию в Drupal 8 главным WYSISYG-редактором становится CKEditor. Автоматически настроенный с различными профилями фильтрации тегов, CKEditor позволяет сократить время на настройку визуального редактирования материалов.

8. Поддержка RESTful Web Services.

В Drupal 8 весь контент может взаимодействовать через REST интерфейс, позволяющий проектировать различные сетевые веб-приложения. Таким образом, количество передаваемых форматов увеличится (HTML, XML, JSON).

9. Улучшенная поддержка мультиязычности.

Строительство многоязычных веб-сайтов становится намного проще, благодаря совершенствованию выбора языков, готовых локализаций и настройке параметров перевода.

Кроме того, в состав ядра Drupal 8 будут входить следующие компоненты:

Guzzle — HTTP-клиент, пришедший на замену drupal_http_request().

Assetic — менеджер js и css файлов.

EasyRDF - компонент для построения RDF-данных.

Composer — менеджер зависимостей для PHP.

PHPUnit - юнит-тестирование PHP.

Zend_Feed - функциональная часть Zend Framework для работы с RSS-лентами.

Backbone.js — компонент для создания RIA JavaScript приложений.

Underscore.js — набор функций-утилит расширяющий возможности Javascript.

domReady — легковесный аналог jQuery(document).ready().

jQuery, jQuery UI, jQuery Form, jQuery UI Touch Punch - актуальный набор библиотек Javascript последней версии.

Normalize.css — альтернатива css reset.

Modernizr - библиотека на JavaScript с открытым исходным кодом, позволяющая определять поддержку различных свойств.  Modernizr предоставляет широкий спектр решений для веб-дизайнеров и разработчиков, чтобы пользоваться новыми возможностями HTML5 и CSS3, несмотря на различную поддержку браузерами.