drupal 8 pro drupal development

17
Drupal 8 - Pro Drupal Development краткий курс для любопытных Drupal Сamp Minsk 2014

Upload: slavikkk

Post on 16-Jun-2015

349 views

Category:

Internet


11 download

DESCRIPTION

Drupal 8 - Pro Drupal Development, краткий курс для любопытных. Drupal Сamp Minsk 2014

TRANSCRIPT

Page 1: Drupal 8   pro drupal development

Drupal 8 - Pro Drupal Development

краткий курс для любопытных

Drupal Сamp Minsk 2014

Page 2: Drupal 8   pro drupal development

Новые библиотеки в 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.

Page 3: Drupal 8   pro drupal development

Новые библиотеки в 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.

Page 4: Drupal 8   pro drupal development

Улучшения в ядре

● Inline редактирование

● Модуль Views в ядре

● Встроенная мультиязычность

● Встроенный CKEditor редактор

● Адаптивный дизайн для встроенных тем

● Новый тулбар

● Возможность изменения отображения формы ноды

● Новые типы полей: Entity Reference, Date, Link, Telephone, Email, Picture

● Система управления конфигурированием - данные хранятся в файлах

● Часть модулей удалена из ядра: Dashboard, Poll, Blog, Profile, Open ID, PHP filter, Trigger

● Блок — это сущность (Entity), с присущей ей свойствами

Page 5: Drupal 8   pro drupal development

Symfony 2...

● HttpFoundation и HttpKernel — одни из основных компонентов, с которых началась интеграция Symfony2 в Drupal. Преобразовывает все что связано с HTTP при запросе и ответе — в объекты;

● Routing — преобразовывает HTTP запрос в вызов определенной функции, подобно hook_menu;

● ClassLoader — используется для загрузки классов по мере необходимости;

● DependencyInjection или Service Container — позволяет сделать классы независимыми, и тем самым делает их доступными для повторного использования и юнит-тестирования;

Page 6: Drupal 8   pro drupal development

Symfony 2...

● EventDispatcher — реализует паттерн Наблюдатель (Observer). Делает тоже самое что и система хуков, но на данный момент, не заменяет их полностью;

● Yaml — позволяет работать с форматом yaml;

● Twig — новый удобный, мощный движок шаблонов;

● Serializer — преобразование объектов в определенный формат и обратно;

● Translation — система переводов;

● Process — используется для выполнения в субпроцессе, команд из консоли;

● Validator — компонент, для проверки значений;

Page 7: Drupal 8   pro drupal development

Как писать модули

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

Page 8: Drupal 8   pro drupal development

Как писать модули

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('Это тестовая страничка.'), ); } }

Page 9: Drupal 8   pro drupal development

Как писать модули

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; }

Page 10: Drupal 8   pro drupal development

Как писать модули

7. Включаем модуль...

Что посмотреть:

● drupal 8 модуль — это не так сложно … как казалось бы

● Drupal 8 создание модуля, часть 2: Формы

● Drupal 8 Плагины часть III, создаем модуль

● Примеры кода для Drupal 8: https://github.com/wizzlern/drupal8-demo

● Лучшие ресурсы для начала работы с Drupal 8

Page 11: Drupal 8   pro drupal development

Портирование Symfony Acme Demo Bundle в модуль Drupal 8

1. Структура директорий и файлов в модуле

Page 12: Drupal 8   pro drupal development

Портирование Symfony Acme Demo Bundle в модуль Drupal 8

2. acme.module

3. acme.info.yml

Page 13: Drupal 8   pro drupal development

Портирование Symfony Acme Demo Bundle в модуль Drupal 8

4. acme.routing.yml

5. lib/Drupal/acme/Controller/DemoController.php

Page 14: Drupal 8   pro drupal development
Page 15: Drupal 8   pro drupal development

Портирование Symfony Acme Demo Bundle в модуль Drupal 8

6. /modules/acme/templates/hello.html.twig

7. /modules/acme/templates/base.html.twig

Page 16: Drupal 8   pro drupal development

Портирование Symfony Acme Demo Bundle в модуль Drupal 8

8. Можно просто клонировать модуль описанный выше

9. Включим модуль используя drush

10. После включения Вам станет доступна страница из модуля по URL: http://drupal8.dev/acme/hello/drupal

11. Код модуля доступен тут: https://github.com/hechoendrupal/acme

Page 17: Drupal 8   pro drupal development

Нужна помощь или есть вопросы: [email protected] - всегда отвечу, я или мои девушки из поддержки ;)

На этом всё... следуйте за уточками