Обзор drupal 8 by andrei khalipau, kostya halipov and Егор Богатырёв
DESCRIPTION
Minsk Drupal Meetup #1TRANSCRIPT
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
• {% %} - 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