Drupal 8 pro drupal development
description
Transcript of Drupal 8 pro drupal development
Drupal 8 - Pro Drupal Development
краткий курс для любопытных
Drupal Сamp Minsk 2014
Новые библиотеки в Drupal 8
● Часть Symfony 2 — роутинг, работа с http, события, Dependency injection, загрузчик классов, валидаторы, работа с yaml, сериализация.
● Twig — PHP шаблонизатор. Замена PHPTemplate.
● Guzzle — HTTP-клиент. Замена drupal_http_request().
● Assetic — менеджер js и css файлов.
● EasyRDF — работа с RDF.
● Composer — менеджер зависимостей.
● Часть Doctrine — работа с PHP аннотациями.
● PHPUnit — юнит-тестирование php кода. Замена DrupalUnitTestCase.
● Часть Zend Framework — Zend_Feed для работы с лентами RSS и Atom.
Новые библиотеки в Drupal 8
● Backbone.js — каркас для создания RIA JavaScript приложений.
● Underscore.js — набор функций-утилит расширяющий возможности Javascript.
● CKEditor — WYSIWYG редактор.
● domReady — легковесный аналог jQuery(document).ready().
● jQuery, jQuery UI — Javascript фреймворк.
● jQuery Form — AJAX формы.
● jQuery UI Touch Punch — библиотека для реализации тач интерфейсов.
● Часть Modernizr — определение возможностей браузера.
● Normalize.css — альтернатива css reset.
Улучшения в ядре
● Inline редактирование
● Модуль Views в ядре
● Встроенная мультиязычность
● Встроенный CKEditor редактор
● Адаптивный дизайн для встроенных тем
● Новый тулбар
● Возможность изменения отображения формы ноды
● Новые типы полей: Entity Reference, Date, Link, Telephone, Email, Picture
● Система управления конфигурированием - данные хранятся в файлах
● Часть модулей удалена из ядра: Dashboard, Poll, Blog, Profile, Open ID, PHP filter, Trigger
● Блок — это сущность (Entity), с присущей ей свойствами
Symfony 2...
● HttpFoundation и HttpKernel — одни из основных компонентов, с которых началась интеграция Symfony2 в Drupal. Преобразовывает все что связано с HTTP при запросе и ответе — в объекты;
● Routing — преобразовывает HTTP запрос в вызов определенной функции, подобно hook_menu;
● ClassLoader — используется для загрузки классов по мере необходимости;
● DependencyInjection или Service Container — позволяет сделать классы независимыми, и тем самым делает их доступными для повторного использования и юнит-тестирования;
Symfony 2...
● EventDispatcher — реализует паттерн Наблюдатель (Observer). Делает тоже самое что и система хуков, но на данный момент, не заменяет их полностью;
● Yaml — позволяет работать с форматом yaml;
● Twig — новый удобный, мощный движок шаблонов;
● Serializer — преобразование объектов в определенный формат и обратно;
● Translation — система переводов;
● Process — используется для выполнения в субпроцессе, команд из консоли;
● Validator — компонент, для проверки значений;
Как писать модули
1. Создадим в папке modules (расположенной в корневой папке сайта) папку example (modules/example), где и будет лежать наш модуль
2. В папке с нашим модулем modules/example создаем файлы:
● example.module
● example.info.yml
3. В файле example.info.yml сохраняем такой код:
name: Exampletype: moduledescription: 'это мой первый drupal 8 модуль / my first drupal 8 module'package: Customversion: 8.x-1.0core: 8.xdependencies:- node- blockhidden: false
Как писать модули
4. И так создаем Controller: modules/example/lib/Drupal/example/Controller/ExampleController.php
<?php
namespace Drupal\example\Controller;
use Drupal\Core\Controller\ControllerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; class ExampleController implements ControllerInterface { public static function create(ContainerInterface $container) { return new static($container->get('module_handler')); } /** * This will return the output of the example page. */ public function examplePage() { return array( '#markup' => t('Это тестовая страничка.'), ); } }
Как писать модули
5. Создаём роуты: modules/example/example.routing.yml
example: pattern: 'admin/example' defaults: _content: '\Drupal\example\Controller\ExampleController::examplePage' requirements: _permission: 'access administration pages'
6. Добавляем в example.module
<?php /** * Implements hook_menu(). */ function example_menu() { $items['admin/example'] = array( 'title' => 'Example page', 'description' => 'This is the demo example page.', 'route_name' => 'example', ); return $items; }
Как писать модули
7. Включаем модуль...
Что посмотреть:
● drupal 8 модуль — это не так сложно … как казалось бы
● Drupal 8 создание модуля, часть 2: Формы
● Drupal 8 Плагины часть III, создаем модуль
● Примеры кода для Drupal 8: https://github.com/wizzlern/drupal8-demo
● Лучшие ресурсы для начала работы с Drupal 8
Портирование Symfony Acme Demo Bundle в модуль Drupal 8
1. Структура директорий и файлов в модуле
Портирование Symfony Acme Demo Bundle в модуль Drupal 8
2. acme.module
3. acme.info.yml
Портирование Symfony Acme Demo Bundle в модуль Drupal 8
4. acme.routing.yml
5. lib/Drupal/acme/Controller/DemoController.php
Портирование Symfony Acme Demo Bundle в модуль Drupal 8
6. /modules/acme/templates/hello.html.twig
7. /modules/acme/templates/base.html.twig
Портирование Symfony Acme Demo Bundle в модуль Drupal 8
8. Можно просто клонировать модуль описанный выше
9. Включим модуль используя drush
10. После включения Вам станет доступна страница из модуля по URL: http://drupal8.dev/acme/hello/drupal
11. Код модуля доступен тут: https://github.com/hechoendrupal/acme
Нужна помощь или есть вопросы: [email protected] - всегда отвечу, я или мои девушки из поддержки ;)
На этом всё... следуйте за уточками