Course description

This course will explore the world of content entities in Drupal 8 by means of handcrafting a new entity type from scratch. Instead of basing custom website logic on nodes and node types it can be beneficial to create custom entity types that are designed for your specific application. With Drupal 8 this is no longer a daunting task; instead you can put together existing parts to fit your needs with a minimal amount of code - if you know how. In addition to being great practice for future projects where custom entity types might be of use, this will also yield a deep understanding of the Drupal 8 Entity API and the different components that it comprises.

Learning Objectives

At the end of the course participants will have gained an in-depth understanding of the Drupal 8 Entity API. On top of that they will have created a ready-to-use custom entity type that is highly integrated and benefits from all of Drupal's flexibilities - all with very few lines of code.


This course will answer the following questions:

  • What are entities in Drupal?
  • What are (and aren't) content entities?
  • What are fields?
  • How are entities stored?
  • How are revisions stored?
  • How are entities translated?
  • How can I access and manipulate entities programmatically?

On top of that the following topics will be covered as aspects relating to entities:

  • Routing
  • Administration
  • Access control
  • Forms
  • Rendering
  • Views
  • Validation
  • RESTful Web Services
  • Quick Edit
Who will gain the most from this course?

People who answer any of the following questions with yes:

  • Have you worked on Drupal (7 or 8) sites that have extensively used nodes and featured many node types to model completely different functionality on the same website and want to see if there might be a different way of building Drupal sites?
  • Are you tired of employing node-type-specific form alterations, access hooks, … in your custom modules?
  • Do you want to explore content and content management in Drupal outside of the boundaries of nodes?
  • Are you intrigued by exploring the innerworkings of Drupals Entity API?
  • Have you created (or tried to create) a custom entity type before in Drupal 7?
Prerequisites for this course

This course entails creating a Drupal module so some familiarity with PHP programming is required. Experience with creating Drupal 7 or Drupal 8 modules is not required. Familiarity with Drupal and the terminology and concepts encountered when building sites - fields, view modes or views, for example - are helpful, but not strictly required.

Dev Environments

A Drupal 8 development site is required, either locally (preferred) or remotely with code access ( is not sufficient, for example). Having Git available is recommended, but not strictly required. We will be writing the code mostly from scratch but will be using a sandbox module on as a guideline and as a backup if things go wrong, so attendees with Git available can go ahead and clone that module (all others will receive a copy of the module on site).

Course Information

Date: May 9, 2016

Time: 9:00am - 5:00pm

Cost: $450 early bird rate (through April 15), $500 regular rate - includes light breakfast, lunch and coffee breaks

Training Company: erdfisch

Trainers: Tobias Stöckler, Jan Stöckler and Christian López Espínola

Experience Level: Intermediate

Drupal Version: 8.x

Register Now

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