diegocarbonella

Como crear nuestro primer modulo en Drupal 10

En esta oportunidad voy a mostrar como crear un modulo en Drupal 10.

“` html

HTML Document

“`

El modulo va a ser un modulo muy simple, la idea es explicar como se crea y en que partes de Drupal impactan nuestros cambios. Como instalar el modulo y como desinstalarlo. La unica funcionalidad que tendar el modulo sera la de almacenar configuraciones que se pueden cambiar desde el panel de administracion de Drupal.

Imaginemos que estamos creando un modulo que sirve para enviar nuestras ultimas entradas por correo electronico, probablemente en nuestro modulo, necesitemos configurar alguna de las siguientes opciones:
– Un campo que permite o no el envio de mails dentro de nuestro modulo.
– Un campo para guardar el mail desde el cual queremos enviar nuestros correos.
– Un campo para guardar el subject que queremos usar en nuestros correo.
– Poder cambiar las tres configuraciones anteriores desde una url dentro de Drupal.
– Un enlace en nuestro menu de administracion de Drupal que nos lleve a nuestro editor de configuraciones.

Para poder conseguirlo, vamos a
1. Vamos a necesitar crear una carpeta con el nombre de nuestro modulo.
2. Situarla dentro de /sites/default/modules
3. Crear los archivos de nuestro modulo
4. Instalar nuestro modulo en Drupal.

Estructura de un modulo en Drupal 10

Un modulo es una carpeta que contiene archivos que a su vez contienen funcionalidades que nos sirven para extender los comportamientos nativos de Drupal. Los modulos se pueden instalar en dos simples pasos, 1. copiando la carpeta dentro de sites/default/modules y 2. instalandolo en nuestro panel de Drupal.

Un modulo es una carpeta que contiene multiples archivos. Este es un ejemplo de un modulo basico.
└── samplesettings
│ ├── README.md
│ ├── sample_settings.info.yml
│ ├── sample_settings.links.menu.yml
│ ├── sample_settings.routing.yml
│ └── src
│ ├── Controller
│ │   └── SampleSettingsController.php
│ └── Form
│ ├── AnotherForm.php
│ └── CustomModuleForm.php
├── another_module
├── first_module
└── README.txt

Creando nuestros archivos

Vamos a abrir nuestro editor de codigo preferido (yo estoy usando vim) y vamos a crear los siguientes archivos. Tambien voy a dejar un enlace a un repositorio de git para que los puedas descargar tambien.

sample_settings.routing.yml

El archivo .routing.yml vamos a usarlo para definir cuales seran las url que nuestro modulo usara para acceder a las funcionalidades.

En este caso, para acceder a nuestro modulo vamos a usar misitioweb.com/first-route

sample.settings_basic:
path: '/first-route'
defaults:
_title: 'Simple Settings Module'
_form: '\Drupal\sample_settings\Form\CustomModuleForm'
requirements:
_permission: 'access content'

sample_settings.info.yml

El archivo .info.yml Contiene informacion general de nuestro modulo, como puede ser el nombre del modulo, la version, descripcion, etc. Es lo que lee Drupal y lo muestra en el panel de administracion.

name: Simple Settings Module
description: Creates a simple settings page.
package: Custom
type: module
version: 1.0
core_version_requirement: ">=8"

sample_settings.links.menu.yml

En el archivo .links.menu.yml vamos a definir cuales seran los botones que vamos a tener en los menus de Drupal. Podemos agregar botones en nuestro menu de administracion, en development, en muchos lugares, link a la documentacion oficial de Drupal https://www.drupal.org/docs/drupal-apis/menu-api/providing-module-defined-menu-links

sample_settings.admin:
title: 'Sample config module settings'
description: 'example of how to make an admin settings page link'
parent: system.admin_config_development
route_name: sample.settings_basic
weight: 100

README.md

Archivo de informacion de nuestro modulo.

src/

Carpeta donde se almacenaran nuestras funciones, controladores, formularios, interfaces, clases, etc.

src/Form/CustomModuleForm.php

Nuestro archivo donde definiremos nuestro formulario. Prestar atencion a los metodos buildForm() y submitForm()

“`php
<?php
namespace Drupal\sample_settings\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
class CustomModuleForm extends ConfigFormBase {
/
* {@inheritdoc}
*/
public function getFormId() {
return ‘my_example_settings’;
}
/

* {@inheritdoc}
/
protected function getEditableConfigNames() {
return [
‘my_example.settings’,
];
}
/

* {@inheritdoc}
/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config(‘my_example.settings’);

$form['sample_setting'] = array(
  '#type' => 'textfield',
  '#title' => $this->t('Sample setting'),
  '#description' => $this->t('A sample setting for our module.'),
  '#default_value' => $config->get('sample_setting'),
);
return parent::buildForm($form, $form_state);

}
/*
* {@inheritdoc}
/
public function submitForm(array &$form, FormStateInterface $form_state) {
// Retrieve the configuration
$this->configFactory->getEditable(‘my_example.settings’)
// Set the submitted configuration setting
->set(‘sample_setting’, $form_state->getValue(‘sample_setting’))
->save();
parent::submitForm($form, $form_state);
}
}
“`

Con esos archivos, ya estamos listos para instalar nuestro modulo!

Instalando el modulo

En mi caso, yo cree todos los archivos directamente en mi servidor en la carpeta web/modules/samplesettings por lo que no me hace falta nada mas!

En caso de haberlo creado en local habria que subir los archivos por medio de SSH o SFTP

Asi luce mi carpeta modules ahora mismo:

├── modules
│   ├── another_module
│   ├── first_module
│   ├── README.txt
│   └── samplesettings

Ahora debemos ir a **Manage -> Extend

Y vamos a el apartado que dice Custom. Y vemos nuestro modulo! Hacemos click en el checkbox para activarlo.

Luego bajamos y le damos click en Install.

Listo, nos aparece una confirmacion de que nuestro modulo fue instalado correctamente.

Probando nuestro modulo

Ahora que instalamos nuestro modulo, podemos verlo que se encuentra en el menu Configuration -> Development -> Sample config module settings y si hacemos click nos aparece lo siguiente:

Vamos a completarlo!

Le damos a save, y se nos guardaron nuestros campos!!!

(cambiar imagen)

Como desinstalar nuestro modulo en Drupal

Para poder desinstalar nuestro modulo en Drupal, tenemos que ir a Manage -> Extend y hacer click en Uninstall.

Luego deberemos elegir en la lista de modulos, el modulo que queremos desinstalar.

Luego vamos hacia abajo y hacemos click en Uninstall.

Corroboramos que el modulo que estamos desinstalando es el correcto y confirmamos que queremos desinstalar haciendo click en Uninstall.

Vemos el mensaje de confirmacion de que nuestro modulo fue desinstalado correctamente.

Se guarda en la base de datos


Conclusion

Aprendimos a crear un modulo. Cuales son sus partes internas. Como hacer para crear un formulario desde Drupal. Como se guarda informacion en la base de datos. Como se instala y desinstala un modulo!

Me base en estos dos links para crear el modulo
1. añade un setting a drupal https://theaccidentalcoder.com/adding-settings-form-custom-module
2. hello world https://www.drupal.org/docs/creating-custom-modules/step-by-step-tutorial-hello-world/adding-a-basic-controller

cuales archivos son necesarios para un modulo https://drupalize.me/tutorial/overview-info-files-drupal-modules

3.     Keep it Light: Keep the dot-module file as light as possible because it is loaded on every HTTP request.

Contenido relacionado