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)

Creating a custom plugin type

The plugin system provides a means to create specialized objects in Drupal that do not require the data storage features of the entity system. As we have seen with the block and field plugins, each plugin type serves a specific purpose and allows for extensibility.

In this recipe, we will create a new plugin type called GeoLocator, which will return the country code for a given IP address. We will create a plugin manager, a default plugin interface, a plugin annotation definition, and plugin implementations. A Content Delivery Network (CDN) commonly provides HTTP headers with the visitor’s country code. We will provide plugins for Cloudflare and AWS CloudFront.

How to do it…

  1. All plugins need to have a service that acts as a plugin manager. Create a file in the src directory of your module called GeoLocatorManager.php. This will hold the GeoLocatorManager class.
  2. Create the GeoLocatorManager class by extending the \Drupal...