Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Drupal 8 overview

Drupal 8 overview

Quickly hacked the "offical" Drupal 8 Preview Slideshow to keep a session to my co-workers at Integral Vision. Heavily used Schnitzel's DCBarcelona Drupal 8 experience session record too. Thanks to all!

Tamás Hajas

October 07, 2015

More Decks by Tamás Hajas

Other Decks in Technology


  1. None
  2. It works! It’s great! M. Schnitzel, Head of Technology, Amazee

  3. Drupal 8 
 improvements for end-users & clients

  4. Authoring improvement: 
 WYSIWYG in Core

  5. Authoring improvement: 
 In-place editing

  6. Authoring improvement: 
 In-place editing

  7. Authoring improvement:
 New content creation page

  8. Authoring improvement:
 Preview on the frontend

  9. It’s mobile-first

  10. Responsive themes, images, breakpoints

  11. Mobile-friendly administration

  12. Mobile-first “overlay”

  13. Restyled administration interface 

  14. Multilingual improvements in Drupal 8

  15. source: http://www.drupal8multilingual.org/

  16. Community translation downloads

  17. Language data tracking expanded

  18. Translation on (almost) everything

  19. More info Installing and Choosing Modules for Multilingual in Drupal

    8 https://www.drupal.org/node/2415945 Multilingual demo install https://www.drupal.org/project/multilingual_demo Workshop video http://www.drupal8multilingual.org/workshop Initiative site http://www.drupal8multilingual.org/
  20. Drupal 8 improvements for site builders

  21. Fieldable blocks Everything is an entity and (almost) everything is

  22. Everything is in blocks

  23. Place multiple copies of any block

  24. New field types Date/Datetime Entity Reference …plus, Link, Phone, Email,

  25. Form displays: customize the look and feel of data entry

    forms built in view modes ui too
  26. Views in Core

  27. Drupal 8 improvements for designers and themers

  28. Killed support for IE 6 & 7 
 (and most

    of 8)
  29. HTML5 Form Elements

  30. New front-end libraries

  31. Native Schema.org Output

  32. Twig Example: node.html.twig <article{{ attributes }}> {{ title_prefix }} {%

    if not page %} <h2{{ title_attributes }}> <a href="{{ url }}" rel="bookmark">{{ label }}</a> </h2> {% endif %} {{ title_suffix }} {% if display_submitted %} <footer class="node__meta"> {{ author_picture }} <div class="node__submitted {{ author_attributes.class }}"{{ author_attributes| without('class') }}> {% trans %}Submitted by {{ author_name|passthrough }} on {{ date }}{% endtrans %} {{ metadata }} </div> </footer> {% endif %} <div class="node__content {{ content_attributes.class }}"{{ content_attributes| without('class') }}> {{ content|without('links') }} </div> {% if content.links %} <div class="node__links"> {{ content.links }} </div> {% endif %} </article> 1. HTML5 tags 2. {{ print a variable }} 3. {% logic(stuff) %}
  33. Twig blocks & extends Twig Blocks are not Drupal Blocks!

    {# Extending the page template to override the title #} {% extends 'themes/THEMENAME/templates/page.html.twig' %} {% block title %} Nice New Title for the whole world to see. {% endblock %} https://www.newmediadenver.com/blog/twig-extending-templates
  34. None
  35. CSS is SMACS & BEM based #id not used (for

    styling) / removed 90% of the div removed libs (eg. jQuery) aren’t loaded by default better accessibility
  36. More info Theming session in DCBarcelona by mortendk https://events.drupal.org/barcelona2015/sessions/drupal-8-theming-0 Backend

    of the front-end (DCBarcelona, laurii) https://events.drupal.org/barcelona2015/sessions/drupal-8-theme-system http://drupal.org/theme-guide/8 drupal.org/coding-standards/css
  37. Decoupled Drupal http://buytaert.net/the-future-of-decoupled-drupal http://zensations.at/blog/headless-drupal-cake-lie

  38. Drupal 8 improvements for developers

  39. Keep calm and drush cr

  40. Configuration management dev stage production

  41. sync sync

  42. None
  43. Drush integration for automation

  44. Configuration management in Drupal 8 (Drupalaton 2013) https://videotorium.hu/hu/recordings/details/ 6837,Configuration_management_in_Drupal_8 Configuration

    management in Drupal 8 (Drupalaton 2015) https://www.youtube.com/watch? v=OVFQDdTRCeM&list=PLB89p5xo_6ST7DM69sJVEPRIA9hrS6h2- &index=5 http://nuvole.org/blog/2015/aug/10/drupal-8-configuration-management- beware-pitfalls More info
  45. Features? “In Drupal 8, Features will return to it's original

    mission of bundling functionality rather than just managing configuration.” – M. Potter, Features maintainer https://events.drupal.org/barcelona2015/sessions/features-drupal-8
  46. Getting off the island* * http://www.garfieldtech.com/blog/off-the-island-2013

  47. HttpFoundation HttpKernel Dependency Injection EventDispatcher Routing Yaml Symfony framework

  48. Not invented here 
 "Proudly Found Elsewhere" Much more modern,

    object-oriented code (classes, inheritance, interfaces, etc.) Embracing latest PHP standards (e.g. PSR-4*, namespaces, traits) Using many “best of breed” external libraries: Composer, PHPUnit, Guzzle, Zend Feed Component… Non-Drupal developers can start work right away * http://www.php-fig.org/psr/psr-4/
  49. Entity API Plugins Services

  50. Plugin System Bart Feenstra: The Drupal 8 plugin system: extensibility

    for all https://www.youtube.com/watch? v=IoxEtvydKuc&list=PLB89p5xo_6ST7DM69sJVEPRIA9hrS6h2-&index=7 Drupal 8 Plugin Deep Dive (DCBarcelona) https://events.drupal.org/barcelona2015/sessions/drupal-8-plugin-deep-dive
  51. Web services other systems or framewor ks desktop Android applicati

    ons other Drupal sites Flash compone nts iPhone applicati ons kiosk applicati
  52. GETting data out of Drupal: 
 RESTful Web Services module

  53. GETting data into Drupal: Guzzle $client = \Drupal::httpClient(); $config =

    \Drupal::config('3rdparty.settings'); // Format arguments for passing in URL. $arg = urlencode($argument); // Pull data from 3rd party's REST API. $api_key = $config->get('api_key'); $request = $client->get("http://3rdparty.com/ $arg/?key=$api_key"); // Get the response and do something with it. $response = $request->send(); $json = $response->json(); ...
  54. Hack core without hacking core Override services

  55. No IDE? No debugger? No Drupal 8!

  56. drupal.org/project/examples or check core’s code

  57. API documentation https://www.drupal.org/developing/api/8 Symfony for Drupal developers https://events.drupal.org/barcelona2015/sessions/symfony-drupal- developers Dependecy

    injection https://events.drupal.org/barcelona2015/sessions/dependency-injection what-why-how-when More info
  58. Catch all of the improvements! https://www.drupal.org/list-changes/drupal

  59. Performance

  60. Performance Making Drupal fly - The fastest Drupal ever is

    here! https://events.drupal.org/barcelona2015/sessions/making-drupal-fly-fastest-drupal-ever-here The future of decoupled Drupal http://buytaert.net/the-future-of-decoupled-drupal https://www.youtube.com/watch?t=41&v=JwzX0Qv6u3A BigPipe Smart Caching
  61. What about the upgrade path? Instead of an upgrade path,

    Drupal 8 have a migration path! Some Drupal 6 migrations already in core, more in the works, see https:// groups.drupal.org/imp https://dev.acquia.com/blog/seamless- migration-drupal-8-make-it-yours
  62. What’s this 8.0.0 talk? Drupal 8 will use semantic versioning

    Drupal 8.1.0 will include new features and/or APIs New releases will be (mostly) backwards compatible New 8.x releases every 6 months (planned) No need to wait years for new things Bugfixes in minor releases, eg. 8.1.5
  63. What about contributed modules? Check status of contrib module upgrades

    at: drupal.org/project/contrib_tracker To avoid upgrade pain, stick to well-vetted contributed modules over custom code. Other tips: www.acquia.com/blog/getting-your- site-ready-drupal-8
  64. And my own modules? To start the upgrade of you

    own code, use drupal.org/project/drupalmoduleupgrader If you need to or want to start your module fresh, see drupal.org/project/console Creating Drupal 8.x modules https://www.drupal.org/node/1915030
  65. None