[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
keopx
251 views
41 slides
Sep 23, 2023
Slide 1 of 41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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: ...
[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: https://2014.drupalcamp.es/es/node/210.html
Se explicara por encima algunos conceptos.
Puedes facilitar lo que deseas encontrarte en el taller, de esta manera intentare ajustarme a lo que los asistentes desearían conocer :)
Sera necesario tener instalado el entorno de desarrollo, un entorno con Drupal en LAMP, MAMP, WAMP o similar para poder trabajar.
Recomendación:
- Drupal 10. Instalado y funcionando.
- IDE de desarrollo. En la maquina virtual estara disponible Code.
- Se recomienda usar la maquina virtual para facilitar la sesión.
Algunos módulos que veremos, por ello es aconsejable instalarlos.
- Modulo Devel
- Modulo Coder
- Módulo Examples
Están disponibles maquinas virtuales o instaladores para facilitar:
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.
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
●…
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/
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/