-
Добавлено пользователем arturbaranok - 05.12.2013 - 23:25
Хотя до сих пор точной даты выхода 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

Компонент 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
- Быстрый: 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 %}
{% 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 (Справка).
![]()
Кроме того, новая панель инструментов адаптирована под мобильные устройства, планшеты и персональные компьютеры. Дополнительное меню может автоматически трансформироваться, как в вертикальную, так и в горизонтальную позицию.
5. Интеграция модуля Views в ядро Drupal 8.
Номер 1 модуль по количеству скачиваний – Views будет интегрирован в ядро CMS Drupal 8. Так как данный модуль используется на более 70% всех веб-сайтов CMS Drupal, такой нововведение позволит разрабатывать и визуализировать новые проекты без единой строчки кода «прямо из коробки».

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, несмотря на различную поддержку браузерами.