Book Image

Drupal 10 Development Cookbook - Third Edition

By : Matt Glaman, Kevin Quillen
Book Image

Drupal 10 Development Cookbook - Third Edition

By: Matt Glaman, Kevin Quillen

Overview of this book

This new and improved third edition cookbook is packed with the latest Drupal 10 features such as a new, flexible default frontend theme - Olivero, and improved administrative experience with a new theme - Claro. This comprehensive recipe book provides updated content on the WYSIWYG (What You See Is What You Get) editing experience, improved core code performance, and code cleanup. Drupal 10 Development Cookbook begins by helping you create and manage a Drupal site. Next, you’ll get acquainted with configuring the content structure and editing content. You’ll also get to grips with all new updates of this edition, such as creating custom pages, accessing and working with entities, running and writing tests with Drupal, migrating external data into Drupal, and turning Drupal into an API platform. As you advance, you’ll learn how to customize Drupal’s features with out-of-the-box modules, contribute extensions, and write custom code to extend Drupal. By the end of this book, you’ll be able to create and manage Drupal sites, customize them to your requirements, and build custom code to deliver your projects.
Table of Contents (17 chapters)

Hooking into Drupal to react to entity changes

One of the most common integration points is hooking into Drupal to react to the create, read, update, and delete operations of an entity. The entity system also has hooks to provide default values when instantiating a new entity and modifying it before it is saved.

In this recipe, we will create a hook that runs whenever new content is published and send an email to the site’s email address as a notification of the new content.

How to do it…

  1. First, create a file called mymodule.module in your module file. This is the module extension file that stores hook implementations.
  2. Next, we will implement a hook to listen for new node entities being inserted. Create a function named mymodule_node_insert, which is an implementation of the hook_ENTITY_TYPE_insert hook:
    <?php
    function mymodule_node_insert(\Drupal\node\
        NodeInterface $node) {
    }
  3. In our insert hook, we will check if the node...