when-not-a-module-for-that/content/_index.md
2020-03-18 15:55:17 -04:00

5.4 KiB

+++ title = "When There's Not a Module For That" outputs = ["Reveal"] +++

When There's Not a Module For That

mid.camp/6337
Agaric

{{% note %}} mid-air camp {{% /note %}}


Presented by

Benjamin Melançon & Mauricio Dinarte

AKA

mlncn & dinarcon


Together,

We are

of


Agaric

ask@agaric.coop


Agaric

{{% note %}} mid-air camp {{% /note %}}


When building a Drupal site, “there’s a module for that” can be the sweetest words you can hear.

{{% note %}} {{% /note %}}


Regular node add form with Save button

{{% note %}} Say you're creating a site where people can relive great literature that may have been inspired by a global pandemic. {{% /note %}}


frankenstein.info.yml

name: Frankenstein
type: module
description: "Rename save button for Frankenstein's content."
core: 8.x|9.x

 

frankenstein.module

<?php
function frankenstein_form_node_frankenstein_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
  $form['actions']['submit']['#value'] = t('Re-animate!');
}

Where to put these files

Folder hierarchy of custom module in Drupal


Regular node add form with Save button


Enable your module:

drush -y en frankenstein


That slide was the most important you're going to be shown.

Enable your module


Regular node add form with Save button as reanimate


Adam Scott staring at the camera

{{% note %}} So you're all sitting* there thinking ... sure, that's easy if you know the exact words and symbols to put in that file. And you're absolutely right.

And we're going to tell you how you can figure out all of that.

The examples with the what will tell you a lot about the how.

But first, two secrets. {{% /note %}}


Now you know where to paste

How do I exit the Vim editor? viewed 2.1 million times

{{% note %}} (yes, the same family of sites that has helped a couple million developers figure out how to quit vim.)

Knowing where to put this code unleashes the power of Stack Overflow.

You now know enough to be dangerous. {{% /note %}}


That simple form alter has hidden gotchas

  • As written, it only applies to the create (node/add) form— not the edit form.
  • There's a dozen variations of the humble form alter hook, and all are valid.

{{% note %}} {{% /note %}}


We'll cover

  • Hooks
    • Form alter
    • Node insert
  • Plugins
    • Block
    • Formatter
  • Services
    • Route subscriber
    • Event subscriber

{{% note %}}

the three main ways to mess with Drupal 8 and 9: hooks, plugins, and services, with a couple examples in each.

{{% /note %}}


{{% note %}} both examples of what technically to do and how to do general things

For example:

Doing something with a form? You want hook_form_alter() or one of its variants. {{% /note %}}


Learning to learn

  • Drupal documentation
  • Drupal contributed modules
  • Drupal core and its modules
  • Drupal forums and issues
  • Drupal.StackExchange.com
  • The rest of the Internet
  • Debugger
  • Code search / grep

{{% note %}} Where to start if i don't cover it in this session {{% /note %}}


When not to make a module?

Turtle with golf ball on spring contraption on back.

{{% note %}} You can do anything with a module! Why wouldn't you make one every day? {{% /note %}}


…when there's an easier way

Ginger Howard completing her swing after hitting a golf ball

{{% note %}} find a contrib module that does it

Should it be in a template {{% /note %}}


When to make a module

Lego heart with a missing piece

{{% note %}} You've identified to the best of your ability that there's definitely not something out there that does what you want to do.

I personally do not advocate introspection at this point: Why am i trying to do something that no one else is trying to do? {{% /note %}}


Step 1: Write up what you plan to do

groups.drupal.org/contributed-module-ideas

{{% note %}} The module does not exist.

I do not advocate self-reflection at this point

Credit: lego heart is credited to Llama-Muffin-Kelly on DeviantArt but only see it on Pinterest {{% /note %}}


The Rest of the Internet

{{% note %}} {{% /note %}}


Why contribute?

  • Right thing to do
  • I asked you to
  • People may contribute to it
  • Someone may take it over and upgrade it or improve it greatly

{{% note %}} {{% /note %}}



{{% note %}} {{% /note %}}