Everything you ever wanted to know about Drupal 8*



Similar documents
Drupal 8 The site builder's release

Faichi Solutions. The Changing Face of Drupal with Drupal 8

Drupal 8. Core and API Changes Shabir Ahmad MS Software Engg. NUST Principal Software Engineser PHP/Drupal

Drupal and ArcGIS Yes, it can be done. Frank McLean Developer

Symfony2 and Drupal. Why to talk about Symfony2 framework?

Entites in Drupal 8. Sascha Grossenbacher Christophe Galli

How To Fix A Bug In Drupal 8.Dev

Software Development & Education Center PHP 5

Who? Wolfgang Ziegler (fago) Klaus Purer (klausi) Sebastian Gilits (sepgil) epiqo Austrian based Drupal company Drupal Austria user group

FormAPI, AJAX and Node.js

Sitecore Dashboard User Guide

MASTER DRUPAL 7 MODULE DEVELOPMENT

#d8rules - Support the Rules module for Drupal 8

Eclipse 4 RCP application Development COURSE OUTLINE

How does Drupal 7 Work? Tess Flynn, KDØPQK

JAVASCRIPT, TESTING, AND DRUPAL

Symfony vs. Integrating products when to use a framework

Paul Boisvert. Director Product Management, Magento

KEYSTONE JS FOR DRUPAL DEVELOPERS

Scott Moore, Esri April 4, Intermountain, Great Falls, MT

2nd Edition. Covers Drupal 7 & 8. Programmer s Guide to. Drupal PRINCIPLES, PRACTICES, AND PITFALLS. Jennifer Hodgdon

Configuration Management in Drupal 8. Andrea Pescetti Nuvole

Managing Projects Using Drupal 8 s Configuration Management System

Drupal Training Modules 2015

The following is a comparison between CiviCRM, RedHen and CRM Core which are the leading option for CRM in the Drupal Community.

I have experience in building large Community websites, Business websites, Products and Services websites and E-commerce websites using Drupal.

Develop a Native App (ios and Android) for a Drupal Website without Learning Objective-C or Java. Drupaldelphia 2014 By Joe Roberts

Easy configuration of NETCONF devices

Behavioral Driven Development with Behat

Drupal CMS for marketing sites

Cross-Platform Tools

HOW TO CREATE THEME IN MAGENTO 2

Linked Data Publishing with Drupal

Kentico CMS 5 Developer Training Syllabus

Services, Dependency Injection, and Containers, Oh my!

BUILDING MULTILINGUAL WEBSITES WITH DRUPAL 7

Elgg 1.8 Social Networking

Progressive Enhancement With GQuery and GWT. Ray Cromwell

Drupal 6 to Drupal 7 Migration Worksheet

Optimizing Drupal Performance. Benchmark Results

Armedia. Drupal and PhoneGap Building Mobile Apps

Agile Web Development Liip.ch. Introduction to. Lukas Kahwe some content graciously stolen from Yoav

Migrating into Drupal 8

Armedia. Drupal and PhoneGap Building Mobile Apps

Data Management Applications with Drupal as Your Framework

Visualizing an OrientDB Graph Database with KeyLines

Creating Value through Innovation MAGENTO 1.X TO MAGENTO 2.0 MIGRATION

Introduction to Web AppBuilder for ArcGIS: JavaScript Apps Made Easy

Installing and Sending with DocuSign for NetSuite v2.2

Using your Drupal Website Book 1 - Drupal Basics

Cache All The Things

Absolute Beginner s Guide to Drupal

Content Management Systems: Drupal Vs Jahia

Trainer name is P. Ranjan Raja. He is honour of and he has 8 years of experience in real time programming.

MathCloud: From Software Toolkit to Cloud Platform for Building Computing Services

Framework as a master tool in modern web development

CiviCRM for Drupal Developers

HTML5. Turn this page to see Quick Guide of CTTC

HTML5 Data Visualization and Manipulation Tool Colorado School of Mines Field Session Summer 2013

Creating a Drupal 8 theme from scratch

VIVO Dashboard A Drupal-based tool for harvesting and executing sophisticated queries against data from a VIVO instance

The truth about Drupal

Drupal Module Development

Drupal 8 Development Retrospective. A timeline and retrospective from a core contributor

White Paper On. Single Page Application. Presented by: Yatin Patel

ECG-1615A. How to Integrate IBM Enterprise Content Management Solutions With Microsoft SharePoint and IBM Connections. elinar.com

Design principles of the Drupal CSC website

MAGENTO TRAINING PROGRAM

Migrating into Drupal 8 Migrando a Drupal 8

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Abdullah Radwan. Target Job. Work Experience (9 Years)

1: 2: : 3.1: 3.2: 4: 5: & CAPTCHA

Building and Deploying Web Applications

EZ PLATFORM DESIGN AND DEVELOP CONTENT-DRIVEN WEBSITES AND APPLICATIONS

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Site Audit ( /site_audit) Generated on Fri, 22 Aug :14:

Introduction to Module Development

How We Did It. Unique data model abstraction layer to integrate, but de-couple EHR data from patient website design.

Quick Start Guide Mobile Entrée 4

Enterprise Application Development In Java with AJAX and ORM

Kentico CMS 7.0 Intranet Administrator's Guide

Knowledge Spaces. v9.1 Feature Review. Bob Peery, Director, Product Management

Shipbeat Magento Module. Installation and user guide

Transcription:

Everything you ever wanted to know about Drupal 8* but were too afraid to ask *conditions apply

So you want to start a pony stud small horses, big hearts

Drupal 8 - in a nutshell Learn Once - Apply Everywhere* Source: http://www.sxc.hu/photo/784108 *Including outside Drupal

Major Architectural Changes http://www.sxc.hu/photo/207618

Don t be afraid...

"If you learnt php from Drupal - Drupal 8 will teach you modern php from a familiar setting" - Me, 2014

Proudly invented elsewhere Installed with Composer: easyrdf/easyrdf symfony2/{various} symfony-cmf/routing zendframework/zend-feed guzzle/http doctrine/annotations...

Modern PHP PHP 5.4+ Object-oriented PHP Classes, Interfaces, Namespaces PSR-0, PSR-4

Object-Oriented PHP Example menu_block/lib/drupal/menu_block/menublockrepository.php

Dependency Injection http://www.sxc.hu/photo/778753

Dependency Injection page_example/lib/drupal/page_example/exampleservice.php

Dependency Injection Container Symfony2 component Steps: 1. Write a class 2. Define it as a service in *.services.yml

Dependency Injection Container page_example/page_examples.services.yml

Extension points Plugins Modules Services

Routing Pages and Forms http://pixabay.com/en/road-sign-arrows-arrow-direction-64060/

Routing Pages and Forms What does D7 hook_menu really do? routes default menu items local actions local tasks

D7 Hook Menu

D7 Hook Menu

Routing Pages 2 easy steps: 1. create a PHP class that extends ControllerBase 2. create route definition in module_name. routing.yml

2. Create a Controller class page_example/lib/drupal/page_example/controller/pageexamplecontroller. php

1. Create a route definition page_example/page_example.routing.yml

ControllerBase Goodies D7 D8 t( some text ) $this->t( some text ); l( title, $path) $this->l( title, $route_name); url($path) $this->url($route_name); drupal_goto($path) $this->redirect($route_name); global $user $this->currentuser(); variable_get($key) $this->config( group )->get($key); cache_get($key) $this->cache()->get($key); module_exists($m) ($m) $this->modulehandler()->moduleexists

Controller DI Factory Pattern

Routing Forms 2 steps: 1. create a form class that extends FormBase 2. create route definition in module.routing.yml

Form Example

Form Example

What happened to hook_menu()? (sad face)

Default Menu Links hook_menu_link_defaults()

Local Actions module.local_actions.yml

Local Tasks module.local_tasks.yml

Other formats? Leveraging request accept headers Ajax controller Dialog controller REST Request uri Accept header Response node/1 application/hal+json The node in hal+json node/1 text/html The node page node/1 application/vnd.drupal-modal The node in a modal

Routing Documentation https://drupal.org/node/2122071

Configuration System http://www.sxc.hu/photo/425946

Configuration System variable_{get,set} are gone! Config is stored in yaml files sites/default/files/config_{hash}/{active,staging}

Configuration System $config = \Drupal::config('forum.settings'); $vocabulary = $config->get('vocabulary'); $config->set('vocabulary', 'hooha')->save(); In OO code, inject the @config.factory service

Configuration System system_settings_form() is gone Instead subclass ConfigFormBase Example: @see \Drupal\system\Form\SiteInformationForm

Configuration System Ctools exportables => Config Entities

Configuration System Unified Entity API including config $node_type = $storage_controller->create($values); $node_type->save(); $node_type->label(); $node_type->id();

Configuration System Module config imported on install Docs https://drupal.org/node/1667894

Configuration System Deployment workflows Active => Staging => Active

Configuration System Translatable in core Schemas for validation

Configuration System State (Key/Value) API Settings API

Plugins

Plugins Learn plugins once - apply it everywhere

Plugins Semi-random magic collection of hooks Real objects and interfaces

Drupal 7 Block function forum_block_info() function forum_block_save() function forum_block_configure() function forum_block_view()

Drupal 8 Block Steps: 1. Create a new PHP class 2. Add some annotations

Blocks

Plugins Advantages: Base classes Inheritance One file per plugin Nice. Neat. Tidy.

Plugins So many more Learn Once Apply Everywhere More: http://bit.ly/1a50ygs *Stream wrappers still pending

Migrate in core Sunday 10:30am chx

Entities and Fields http://www.sxc.hu/photo/1433343

Entities and Fields First class objects Swappable classes Common API No more of this crap $node->field_foo[language_none][0]['value']

Entities and Fields New field types Link Email Comment Date Entity Reference Telephone

Entities and Fields Display and form modes Base field consistency Fieldable blocks

Entities and Fields Now plugins: Field types Field formatters Widgets

Entities and Fields Unified API using first-class objects. D7 : $node->field_foo[language_none][0]['value'] D8: Node->title->value Node->field_foo->value

Entities and Fields Info Discovery API $entity->getpropertydefinitions() $entity->field_foobar->getfielddefinition() @see Drupal\Core\Field\FieldDefinitionInterface

Frontend http://twig.sensiolabs.org/

Twig node.tpl.php -> node.html.twig Simple Safe

Twig example

There s a session for that... Can I TWIG It? Yes, You Can! Sunday 11:30am mortendk

theme() is deprecated Instead: Return render arrays with a #theme item

#theme example

drupal_add_js/css() removed No Javascript will be loaded by default Steps: 1. Declare assets with hook_library_info() 2. #attach your library in a render array

Library Info Hook

Coming soon... https://drupal.org/node/1996238

#attached

Responsive? Responsive core themes Responsive admin theme Picture element HTML5

More JS Libraries in Core jquery UI Touch Punch Backbone, Underscore modernizr domready html5shiv & classlist

What else? Wysiwyg Plugins Tour Edit Backbone, Underscore Toolbar

A Tour Of The Tour Module Sunday 1:30pm nick_schuch

Current State DX Cleanup Criticals and beta blockers

Current State

Questions? Lee Rowlands Senior Drupal Developer PreviousNext @larowlan Kim Pepper Technical Director PreviousNext @kim.pepper @kimb0oo