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

# When There's Not a Module For That

###### mid.camp/6337

<img alt="Agaric" src="images/o-midcamp.png" class="plain" />

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

---

###### Presented by

**Benjamin Melançon** & **Mauricio Dinarte**

###### AKA

**[mlncn](https://agaric.coop/mlncn)** & **[dinarcon](https://agaric.coop/dinarcon)**

---


### Together,

## We are

#### ⅓

#### of


---


<img alt="Agaric" src="images/agaric-logo-stacked.png" class="plain" />

**ask@agaric.coop**

---


<img alt="Agaric" src="images/o-midcamp.png" class="plain" width="47%" />

{{% 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](images/create-frankenstein-unmodified.png)


{{% 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`

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


`frankenstein.module`

```php
<?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](images/frankenstein-location-in-ranger.png)


---


![Regular node add form with Save button](images/create-frankenstein-unmodified.png)


---


**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](images/create-frankenstein-reanimate.png)

---

![Adam Scott staring at the camera](images/adam-scott-conan-stare.gif)

{{% 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](images/stack-overflow-helping-devs-quit-vim.png)

{{% 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 %}}


---


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


---


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


---


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


---


