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

Время чтения
1 минут
Прочитано

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

декабря 05, 2013 - 20:21
0 комментариев

Хотя до сих пор точной даты выхода 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

<!DOCTYPE html>
 
<html{{ html_attributes }}>
 
<head>
 
  {{ head }}
 
  <title>{{ head_title }}</title>
 
  {{ styles }}
 
  {{ scripts }}
 
</head>
 
<body class="{{ attributes.class }}"{{ attributes }}>
 
  <a href="#main-content" class="visually-hidden focusable skip-link">
 
    {{ 'Skip to main content'|t }}
 
  </a>
 
  <div id="page-wrapper"><div id="page">
 
    <header id="header" role="banner"><div class="section clearfix">
 
      {% if site_name or site_slogan %}
 
        <div id="name-and-slogan"{{ hide_site_name and hide_site_slogan ? ' class="visually-hidden"' }}>
 
          {% if site_name %}
 
            <div id="site-name"{{ hide_site_name ? ' class="visually-hidden"' }}>
 
              <strong>
 
                <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home"><span>{{ site_name }}</span></a>
 
              </strong>
 
            </div>
 
          {% endif %}
 
          {% if site_slogan %}
 
            <div id="site-slogan"{{ hide_site_slogan ? ' class="visually-hidden"' }}>
 
              {{ site_slogan }}
 
            </div>
 
          {% endif %}
 
        </div> <!-- /#name-and-slogan -->
 
      {% endif %}
 
    </div></header> <!-- /.section, /#header -->
 
    <div id="main-wrapper"><div id="main" class="clearfix">
 
      <main id="content" class="column" role="main"><section class="section">
 
        <a id="main-content"></a>
 
        {% if title %}<h1 class="title" id="page-title">{{ title }}</h1>{% endif %}
 
        {{ content }}
 
        {% if messages %}
 
          <div id="messages"><div class="section clearfix">
 
            {{ messages }}
 
          </div></div> <!-- /.section, /#messages -->
 
        {% endif %}
 
      </section></main> <!-- /.section, /#content -->
 
    </div></div> <!-- /#main, /#main-wrapper -->
 
  </div></div> <!-- /#page, /#page-wrapper -->
 
</body>
 
</html>

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

Каковы ваши мысли о Drupal 8? Поделитесь вашим мнением о новой версии CMS!

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.