Drupal 8
Введение
Статистика
●Текущий релиз - drupal 8.0-alpha9
●Более 11 400 файлов и 37.5 мб кода в
распакованном состоянии
●Количество контрибьютеров - over 1700
●Количество незакрытых критических багов менее
120
●Предполагаемая дата релиза TBD
●Количество скачиваний более 23 тысяч
Ключевые моменты
Phase Start date End date
Development phase March 10, 2011 December 1, 2012
Feature completion phase December 1, 2012 February 18, 2013
Clean-up phase February 18, 2013 July 1, 2013
API completion phase July 1, 2013 TBD
Инициативы
●Configuration Management
●HTML5
●Layouts (была вынесена из ядра)
●Mobile
●Multilingual
●Views in Core
●Web Services
Install Drupal 8
CKEditor
Views
Поддержка RESTful Web Services
No valid e-mail, link
Пример создания материала без комментариев
Manage fields
Manage form display
Quick editing
Отказ от поддержки IE6/7
Конфигурация хранится в
специальных файлах
sites/default/files/config_XXXX/active
Модуль Migrate
Пример размещения одного блока несколько раз
на странице
Пример размещения одного блока несколько раз
на странице
BACKEND
Изменения в Drupal 8
 Новые типы полей.
 Настройка страниц с Views.
 Редактирование контента.
 Конфигурационная система.
 ООП подход.
 Использование компонентов Symfony2.
 PHPUnit тесты.
 Миграция в Drupal 8.
 Мультиязычность.
 Сокращение модулей ядра.
 Новые типы: ссылка на сущность (Entity Reference),
ссылка, дата, адрес электронной почты, телефон и
т.д.
 Комментарии теперь являются полем.
 Создания собственных пользовательских
контактных форм.
Новые типы полей
 Модуль Views встроен в ядро.
 Легко настраиваемая фронтальная страница.
 Простой процесс создания собственных страниц
администрирования, настройки уже существующих
страниц, фильтров, действий и т. д.
Настройка страниц с Views
 Встроенный редактор WYSIWYG CKEditor.
 Конфигурация WYSIWYG с учетом требований веб-
безопасности.
 В месте редактирования контента теперь нет
необходимости использовать полную форму
редактирования.
Редактирование контента
 Файлы конфигурации в формате YAML.
 Простой импорт/экспорт конфигураций между
сайтами.
 Использование систем контроля версий (Git, SVN и
т.д.)
Конфигурационная система
 ООП подход к большей части системы.
 Постепенный отход от процедурного
программирования и использования хуков.
 Стандарт PSR-0 для пространств имен.
 Полный переход к ООП планируется осуществить в
Drupal 9.
 Большая гибкость в разработке и настройке
поведения Drupal.
ООП подход
 HttpFoundation и HttpKernel
 Routing
 ClassLoader
 DependencyInjection или Service Container
 EventDispatcher
 Yaml
 Twig
 Serializer
 Translation
 Process
 Validator
Использование компонентов
Symfony2
 Drupal 8 содержит PHPUnit для более быстрого и
целенаправленного тестирования.
 SimpleTest все еще является частью системы.
PHPUnit тесты
 Модуль Migrate интегрирован в ядро.
 Инструменты импорта.
 Импорт контента из Drupal 6 или Drupal 7.
Миграция в Drupal 8
 Выбор языка на первом шаге установки Drupal 8.
 Перевод слов в системе с помощью встроенного
пользовательского интерфейса стал более удобен.
 Создание страниц с Views с фильтрацией языка и
видимостью блоков.
 Автоматические обновления переводов от
сообщества Drupal.
Мультиязычность
 Blog
 Dashboard
 List
 OpenID
 Overlay
 PHP filter
 Trigger
 Poll
 Profile и т.д
Сокращение модулей ядра
СПАСИБО ЗА ВНИМАНИЕ
Материалы используемые для подготовки доклада
o Drupal 8 — Coming soon (https://drupal.org/drupal-8.0)
o Drupal 8 — революционные изменения
(http://habrahabr.ru/post/197670/)
o Change records for Drupal core (https://drupal.org/list-
changes)
o Лучшие ресурсы для начала работы с Drupal 8
(http://habrahabr.ru/company/first/blog/205754/)
Drupal 8
Frontend
Bartik, Stark & Seven
Bartik wide
Bartik narrow & mobile
Seven wide
Seven narrow & mobile
HTML 5
Responsive images
jQuery 2.0.3 & jQuery UI 1.10.2
Modernizr
Backbone & Underscore
jQuery UI Touch Punch
domReady
No IE8
Twig
Twig syntax
• {# #} - comments
• {{ }} - print
• {% %} - commands
Docblock
PHPTemplate:
<?php
/**
* @file
* File description
*/
?>
Twig:
{#
/**
* @file
* File description
*/
#}
Переменные
PHPTemplate:
<?php print $content; ?>
<?php print $item['#item']['alt']; ?>
<?php $cust_var = $content-
>comments; ?>
<?php $args = array('!author' =>
$author, '!date' => $created); ?>
Twig:
{{ content }}
{{ item['#item'].alt }}
{% set cust_var =
content.comments %}
{% set args = {'!author': author,
'!date': created} %}
Управляющие конструкции
PHPTemplate:
<?php if ($content->comments): ?>
<?php endif; ?>
<?php foreach ($users as $user): ?>
<?php endforeach; ?>
Twig:
{% if content.comments %}
{% endif %}
{% for user in users %}
{% endfor %}
{% for user in users %}
* {{ user.name }}
{% else %}
No users have been found.
{% endfor %}
Фильтры
PHPTemplate:
<?php print check_plain($title); ?>
<?php print t('Home'); ?>
<?php print t('Welcome,
@username', array('@username' =>
$user->name)); ?>
Twig:
{{ title|escape }}
{{ 'Home'|t }}
{{ 'Welcome, @username'|t({
'@username': user.name }) }}
{% trans %}
Welcome, {{ user.name }}
{% endtrans %}
escape
Theme Drupal 7 > Drupal 8:
• MYTHEME.info > MYTHEME.info.yml
• template.php > MYTHEME.theme
• template_name.tpl.php > template_name.html.twig
• Theme functions > twig templates
• No process functions
• No render functions
Обзор Drupal 8 by Andrei Khalipau, Kostya  Halipov and Егор Богатырёв

Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв

  • 1.
  • 2.
    Статистика ●Текущий релиз -drupal 8.0-alpha9 ●Более 11 400 файлов и 37.5 мб кода в распакованном состоянии ●Количество контрибьютеров - over 1700 ●Количество незакрытых критических багов менее 120 ●Предполагаемая дата релиза TBD ●Количество скачиваний более 23 тысяч
  • 3.
    Ключевые моменты Phase Startdate End date Development phase March 10, 2011 December 1, 2012 Feature completion phase December 1, 2012 February 18, 2013 Clean-up phase February 18, 2013 July 1, 2013 API completion phase July 1, 2013 TBD
  • 5.
    Инициативы ●Configuration Management ●HTML5 ●Layouts (былавынесена из ядра) ●Mobile ●Multilingual ●Views in Core ●Web Services
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
    Пример создания материалабез комментариев
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Конфигурация хранится в специальныхфайлах sites/default/files/config_XXXX/active
  • 17.
  • 18.
    Пример размещения одногоблока несколько раз на странице
  • 19.
    Пример размещения одногоблока несколько раз на странице
  • 20.
  • 21.
    Изменения в Drupal8  Новые типы полей.  Настройка страниц с Views.  Редактирование контента.  Конфигурационная система.  ООП подход.  Использование компонентов Symfony2.  PHPUnit тесты.  Миграция в Drupal 8.  Мультиязычность.  Сокращение модулей ядра.
  • 22.
     Новые типы:ссылка на сущность (Entity Reference), ссылка, дата, адрес электронной почты, телефон и т.д.  Комментарии теперь являются полем.  Создания собственных пользовательских контактных форм. Новые типы полей
  • 23.
     Модуль Viewsвстроен в ядро.  Легко настраиваемая фронтальная страница.  Простой процесс создания собственных страниц администрирования, настройки уже существующих страниц, фильтров, действий и т. д. Настройка страниц с Views
  • 24.
     Встроенный редакторWYSIWYG CKEditor.  Конфигурация WYSIWYG с учетом требований веб- безопасности.  В месте редактирования контента теперь нет необходимости использовать полную форму редактирования. Редактирование контента
  • 25.
     Файлы конфигурациив формате YAML.  Простой импорт/экспорт конфигураций между сайтами.  Использование систем контроля версий (Git, SVN и т.д.) Конфигурационная система
  • 26.
     ООП подходк большей части системы.  Постепенный отход от процедурного программирования и использования хуков.  Стандарт PSR-0 для пространств имен.  Полный переход к ООП планируется осуществить в Drupal 9.  Большая гибкость в разработке и настройке поведения Drupal. ООП подход
  • 27.
     HttpFoundation иHttpKernel  Routing  ClassLoader  DependencyInjection или Service Container  EventDispatcher  Yaml  Twig  Serializer  Translation  Process  Validator Использование компонентов Symfony2
  • 28.
     Drupal 8содержит PHPUnit для более быстрого и целенаправленного тестирования.  SimpleTest все еще является частью системы. PHPUnit тесты
  • 29.
     Модуль Migrateинтегрирован в ядро.  Инструменты импорта.  Импорт контента из Drupal 6 или Drupal 7. Миграция в Drupal 8
  • 30.
     Выбор языкана первом шаге установки Drupal 8.  Перевод слов в системе с помощью встроенного пользовательского интерфейса стал более удобен.  Создание страниц с Views с фильтрацией языка и видимостью блоков.  Автоматические обновления переводов от сообщества Drupal. Мультиязычность
  • 31.
     Blog  Dashboard List  OpenID  Overlay  PHP filter  Trigger  Poll  Profile и т.д Сокращение модулей ядра
  • 32.
    СПАСИБО ЗА ВНИМАНИЕ Материалыиспользуемые для подготовки доклада o Drupal 8 — Coming soon (https://drupal.org/drupal-8.0) o Drupal 8 — революционные изменения (http://habrahabr.ru/post/197670/) o Change records for Drupal core (https://drupal.org/list- changes) o Лучшие ресурсы для начала работы с Drupal 8 (http://habrahabr.ru/company/first/blog/205754/)
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
    jQuery 2.0.3 &jQuery UI 1.10.2
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
    Twig syntax • {##} - comments • {{ }} - print • {% %} - commands
  • 49.
    Docblock PHPTemplate: <?php /** * @file * Filedescription */ ?> Twig: {# /** * @file * File description */ #}
  • 50.
    Переменные PHPTemplate: <?php print $content;?> <?php print $item['#item']['alt']; ?> <?php $cust_var = $content- >comments; ?> <?php $args = array('!author' => $author, '!date' => $created); ?> Twig: {{ content }} {{ item['#item'].alt }} {% set cust_var = content.comments %} {% set args = {'!author': author, '!date': created} %}
  • 51.
    Управляющие конструкции PHPTemplate: <?php if($content->comments): ?> <?php endif; ?> <?php foreach ($users as $user): ?> <?php endforeach; ?> Twig: {% if content.comments %} {% endif %} {% for user in users %} {% endfor %} {% for user in users %} * {{ user.name }} {% else %} No users have been found. {% endfor %}
  • 52.
    Фильтры PHPTemplate: <?php print check_plain($title);?> <?php print t('Home'); ?> <?php print t('Welcome, @username', array('@username' => $user->name)); ?> Twig: {{ title|escape }} {{ 'Home'|t }} {{ 'Welcome, @username'|t({ '@username': user.name }) }} {% trans %} Welcome, {{ user.name }} {% endtrans %} escape
  • 53.
    Theme Drupal 7> Drupal 8: • MYTHEME.info > MYTHEME.info.yml • template.php > MYTHEME.theme • template_name.tpl.php > template_name.html.twig • Theme functions > twig templates • No process functions • No render functions