[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10

keopx 251 views 41 slides Sep 23, 2023
Slide 1
Slide 1 of 41
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41

About This Presentation

[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10

En el taller se mostrara la creación de un modulo básico, veremos ejemplos existentes y como poder aprovecharlos para hacer nuestros desarrollos a medida.

Es una sesión actualizada de la que ya di en la DrupalCamp 2014: ...


Slide Content

Introducción al
desarrollo de módulos
en Drupal 10

Egun on
Buenos dias
Good morning

●Drupal association
●Drupal Core && Drupal contrib module && Drupal Mentor
●Asociación Española de Drupal
●G.D.O Basque Country
●…
BIOGRAFÍA
Ruben Egiguren aka Keopx
CONTACTO
Drupal Developer, Software Libre enthusiast, new technologies and geek
●Blog: www.keopx.net
●Drupal: www.drupal.org/u/keopx

Ruben Egiguren aka Keopx
Posición
Drupal Senior Developer at Digitalist Open Tech AB (Sweden)
Drupal Developer, Software Libre enthusiast, new technologies and geek

De qué hablaremos

De qué hablaremos
Estándares
Herramientas
Organización de módulos


Organización de código
Código
Bonus

¿Quién sabe de qué?

¿Quién sabe de qué?
SIN MIEDO
Conocer a los asistentes
●Instalación y crear contenido.
●Editar menús, bloques.
●Instalación y configuración de módulos.
●Desarrollado algún módulo.

Estándares

Estándares
Drupal code standards
●https://www.drupal.org/docs/develop/standards/coding-standards (PHP)
●https://www.drupal.org/docs/develop/standards/javascript/javascript-coding-standards
(javascript)
●https://www.drupal.org/docs/develop/standards/css/css-coding-standards (CSS)
Documentación
●https://www.drupal.org/docs/develop/standards

Estándares
Code
●https://www.drupal.org/docs/develop/development-tools/configuring-visual-studio-code
Netbeans setup
●https://drupal.org/node/1019816
Eclipse
●https://drupal.org/node/75242

Herramientas

Herramientas
Drush
●https://www.drush.org/
Devel
●https://drupal.org/project/devel
Examples
●https://drupal.org/project/examples
Coder
●https://drupal.org/project/coder
PHPStan
●https://www.drupal.org/docs/develop/development-tools/phpstan/getting-started
○PHPStan is a static analysis tool that allows you to find bugs in your codebase without running the code.

Estructura de directorios

Estructura de directorios
●/core todos los archivos proporcionados por core que no tienen una razón explícita para estar en el directorio /
●/libraries contiene bibliotecas de terceros. No es utilizado por el núcleo de Drupal, pero se encuentra
comúnmente en muchos sitios.
●/modules es el directorio en el que van todos los módulos personalizados y contribuidos.
● Este directorio contiene los subdirectorios contrib y custom, que pueden utilizarse para facilitar el
seguimiento de los módulos.
●/profiles contiene perfiles aportados y personalizados.
●/themes contiene (sub)temas contribuidos y personalizados.
●/sites es el directorio utilizado para ejecutar las configuraciones multisitio de Drupal y se utiliza de la misma
manera que en Drupal 7. Los módulos y temas en /sites/all/modules y /sites/all/themes anulan los de los
directorios de módulos y temas base. Los módulos en /sites/SITENAME/modules y
/sites/SITENAME/themes sustituirán a los demás para el sitio en cuestión.
●/vendor es el directorio donde van las dependencias de Composer, por ejemplo Symfony y Twig.

Estructura de directorios
Detalles sobre el directorio /core, útiles sobre todo para los nuevos hackers del core:
●/core/assets - Varias librerías externas utilizadas por Core. jQuery, underscore, modernizer, etc.
●/core/misc - Código del frontend del que depende Drupal Core.
●/core/includes - Funcionalidad que es de bajo nivel para ser modular. Como el propio sistema de
módulos.
●/core/lib - Clases de Drupal Core.
●/core/modules - Módulos de Drupal Core.
●/core/profiles - Perfiles de instalación de Drupal Core. Perfiles de instalación multilingüe mínimo,
estándar, de prueba y de prueba por defecto.
●/core/scripts - Varios scripts CLI, utilizados principalmente por los desarrolladores.
●/core/tests - Tests de Drupal Core.
●/core/themes - Temas de Drupal Core.

Estructura de directorios
Directorios

●/modules/contrib - Contiene los módulos de Drupal.org.
○Nota: no se modifican estos módulos. Usar cweagans/composer-patches para aplicar
parches.
●/modules/custom - Módulos desarrollados.
●/profile/contrib - Perfiles contribuidos.
●/profile/custom - Perfiles propios.
●/themes/contrib - Contiene los temas de Drupal.org. Nota: usa subtemas.
●/themes/custom - Temas propios o subtemas.
●/libraries - Contiene librerías de terceros como plugins, javascript, etc.
Fuente: https://www.drupal.org/docs/understanding-drupal/directory-structure

Organizar el módulo

Organizar el módulo - custom
Los módulos suele tener esta estructura:
●loremipsum.info.yml - Fichero de información.
●loremipsum.module - Fichero principal, implementación de hook
●loremipsum.install - (Des)Instalador del módulo, esquema de información.
●loremipsum.services.yaml Fichero de configuración de los servicios.
●loremipsum.routing.yaml Fichero de configuración de las rutas.
●loremipsum.libraries.yaml Fichero de configuración de las librerías.
●loremipsum.links.menu.yaml Fichero de configuración del menú.
●loremipsum.links.task.yaml Fichero de configuración de las “tareas” (pestañas).
●loremipsum.config_translation.yaml Fichero de configuración de la traducción.
●…
●Fuente: https://www.drupal.org/docs/creating-custom-modules/basic-module-building-tutorial-lorem-ipsum-generator/basic-structure

Organizar el módulo - custom
Los módulos suele tener esta estructura:
●…
●config/ - configuración del módulo, schema, views, etc.
○config/install | config/schema - configuración del módulo, schema, views, etc.
●templates/ - Fichero relacionados con el tema (*.html.twig,...)
●translations/ - fichero de traducciones.
●css/ - Estilos CSS.
●images/ - Imágenes.
●js/ - Javascript.
●src/ - Código principal
●tests/src - Código los tests Unit, Kernel, Fuctional…
●Fuente: https://www.drupal.org/docs/creating-custom-modules/basic-module-building-tutorial-lorem-ipsum-generator/basic-structure

Organizar el módulo - custom
Los módulos suele tener esta estructura:
●src/Controller/ - controlador
●src/Entity/ - Entidad
●src/Events/ - EventDispatcher
●src/EventSubscriber/ - EventSubscriber
●src/Form/ - Formulario
●src/Service/ - Servicios
●src/Plugin/ - Plugins de todo tipo, bloques, campos, migrate, etc.
○src/Plugin/Block/ - Plugins bloques.
○src/Plugin/Field/ - FieldFormatter, FieldType, FieldWidget…
○src/Plugin/rest/ - Plugins de rest.
●src/Element/ - Elementos
●src/Cache/ - Cache
●…

Fuente:
https://www.drupal.org/docs/creating-custom-modules/basic-module-building-tutorial-lorem-ipsum-ge
nerator/basic-structure

Qué deberíamos leer/conocer

Qué deberíamos leer/conocer
●Existe multitud de material el drupal.org
●Buscar no es difícil
●Lo difícil es saber qué buscar
●Algunas referencias

Qué deberíamos leer/conocer
ahh y sobre todo….

Qué deberíamos leer/conocer
ahh y sobre todo….
CONTRIBUIR

Qué deberíamos leer/conocer
●Trabajando con el API de Drupal
○https://api.drupal.org/api/drupal
●Buenas prácticas

Qué deberíamos leer/conocer
●Uno de los más habituales son los formularios que nos aportan multitud de posibilidades.
●Form API Reference, si seguimos manteniendo características de D7.
●Introduction to Form API
○Sanzante: https://www.youtube.com/watch?v=NJotlAWdZ2E
○https://rsanzante.github.io/drupalconprague-2022-form-api-workflow
●Esquema del API de Form
○https://www.drupal.org/docs/drupal-apis/form-api/form-api-workflow

Qué deberíamos leer/conocer

Creando nuestro módulo

Creando nuestro módulo
●Eres nuevo creando módulos
○http://deeson-online.co.uk/labs/are-you-developer-new-drupal-read
●Creating modules - a tutorial: Drupal 10.*
○https://www.drupal.org/docs/creating-custom-modules
●Examples
○https://drupal.org/project/examples

Creando nuestro módulo
●Drush para generar módulos y código
○drush generate module-standard
■Generate a Module using Drush
■https://gist.github.com/davidjguru/590bf212c2a31528ea872a27f7bf3443
■https://medium.com/limoengroen/lazy-coding-exploring-drush-generate-dcb2cee22bf2
■https://github.com/Chi-teck/drupal-code-generator

¡Comenzamos!

Creando nuestro módulo
Recursos para comenzar
●https://drupalcamp2023.keopx.net/

¡Comenzamos!
●lando start
●lando ssh
●drush generate module-standard (drush ^10.0)
●drush generate module (drush ^11.0)
●…
●lando stop

Bonus

Bonus
●Debug
○https://asociaciondrupal.es/video/virtual-bof-debugging-php
●XDebug
○www.keopx.net/blog/configuracion-de-php-53-y-xdebug
○https://docs.lando.dev/guides/lando-with-vscode.html
○https://docs.lando.dev/guides/lando-phpstorm.html
●Configuración del entorno
○https://drupal.org/node/238805

Bonus
Por donde empezar a contribuir
Issue
●https://drupal.org/novice
●http://drupalize.me/videos/getting-started-issue-queue
Herramientas
●https://www.drupalpod.com
●https://dreditor.github.io/

Thanks to our all Sponsors

Ikusi arte
Nos vemos
See you