Altering, extending, and enhancing Drupal


A large part of Drupal's appeal lies in its flexibility. The fact that a developer can alter, extend, and enhance almost any aspect of Drupal without having to hack core. Knowing what systems are available for doing so, and how to make use of them is critical for anyone developing with Drupal.

Drawing from my experience both using and helping to document these new patterns I’ll answer these questions:


  • What are hooks, plugins, events, and services?
  • What problems do these patterns seek to solve?
  • How do I decide which method to use and when?
  • Looking ahead to the future, how do these patterns affect the code I write today?

Learning Objectives

After attending this session you'll be able to:

  • Explain the use-case for plugins, hooks, services, and events
  • Understand at a high level how to implement all of these APIs
  • Choose the best approach to altering, extending, or enhancing Drupal for your specific problem(s)

Target Audience

If you're currently writing modules for Drupal 8 or 9, porting modules from Drupal 7, or think that you might have to sometime in the future this session contains critical information for you. After attending this session you should have all the background information you need to make informed decisions about how your code can, and should, work alongside Drupal in order to uphold best practices and write modules that are easy to maintain and play well with others.


Attendees will get the most out of this session by being familiar with PHP and basic Drupal module development. Maybe you've made changes to an existing module but haven't yet implemented your own from scratch. This information will also be useful for anyone looking to better understand the differences between hooks, events, plugins, and services. And which one to use when.


Development & Coding


back-end development
drupal core

Experience Level


When & Where

Thursday, 16 July, 2020 - 21:15 to 22:00
Hopin Sessions

If no timezone is set on your profile, time is displayed in UTC.
Update your profile's timezone