Drupal 8: Writing your first Drupal 8 custom module -- info file

 Bhavin Joshi
  • Social Media Twitter Drupal | Joshi Consultancy Services
  • Social Media Linkedin Drupal | Joshi Consultacy Services
  • bhavinjoshi [at] joshics [dot] in (Social Media Email Drupal | Joshi Consultancy Services)target="_blank" rel="noopener external nofollow"
  • Social Media Website Drupal | Joshi Consultacy Services

Drupal 8 custom module structure

Drupal 8 has been rewritten from scratch and it heavily uses OOP. And this affects all the way we write code for Drupal 8, be it a custom module for your project or a contributed module that you want to publish on drupal.org

Let us dive into the details and learn how to write a custom module for Drupal 8!

In this first article of the ‘Drupal 8: Writing your first Drupal 8 custom module’ series, we will explore the details of the info.yml file.


The info file

With slight modifications, the info file is almost identical to previous versions of Drupal. However, in Drupal 8, it is known as info.yml and a few extra parameters/instructions/routines for Drupal 8

In Drupal 8, info.yml file takes following details/routines:

type*: Is this a module or theme or even a distribution/profile? Allowed values: string module|theme|profile

name*: Name of your custom module/theme/distribution/profile Allowed value: string [A human readable name which will be displayed on Modules list page] GeoBlocker

description*: some descriptive text about your custom code. Allowed value: string [details about what your module offers]

core*: What Drupal core version this custom code targets. Allowed value: 8.x (Post Drupal core 8.8, this routine is no longer required)

package: In what group you want to put this custom code in. If you do not specify this routine, Drupal puts your custom code under ‘others’ on modules list page. Allowed value: string Geo

core_version_requirement: Specifically used to denote that your custom code/module is compatible with Drupal 9 and can be used on a Drupal 9 website without modifying code.

  Allowed value: ^8 || ^9

configure: If your module offers a configuration page, you need to provide reference to relative path to the configuration page here, as in your routing.yml file.

* required routine


Here is an example of actual Drupal 8 / 9 module info.yml file

type: module
name: GeoBlocker    
description: "Restricts or allows access to the website, or to a subset of nodes, in regards of user's country of origin."
configure: geoblocker.configuration_form
package: Geo
core_version_requirement: ^8.8 || ^9

Durpal 8 custom module -- Info file | Joshi Consultancy Services