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

Keopx
Keopx Drupal Developer en Isarea
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
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
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
● …
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/
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
Thanks to our all Sponsors
Ikusi arte
Nos vemos
See you
1 de 41

Recomendados

[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9 por
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9Keopx
236 vistas50 diapositivas
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7 por
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7Keopx
1.5K vistas28 diapositivas
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7 por
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7Keopx
1.1K vistas35 diapositivas
Introduccion técnica a Drupal por
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
1.5K vistas30 diapositivas
¡This is drupal! - Global Training Days por
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
415 vistas36 diapositivas
Drupal - Introducción por
Drupal - IntroducciónDrupal - Introducción
Drupal - IntroducciónDanilo Domínguez
1.9K vistas43 diapositivas

Más contenido relacionado

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

Drupal 7: mucho más que una nueva versión (para desarrolladores) por
Drupal 7: mucho más que una nueva versión (para desarrolladores)Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)Ymbra
1.8K vistas34 diapositivas
Presentacion Drupal Ccrtv por
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal CcrtvPedro Cambra
1.4K vistas76 diapositivas
Introduccion drupal por
Introduccion drupalIntroduccion drupal
Introduccion drupalDanilo Domínguez
404 vistas42 diapositivas
¡This is drupal! por
¡This is drupal!¡This is drupal!
¡This is drupal!Jose Luis Bellido
981 vistas34 diapositivas
Introduccion a Drupal 6 e-ghost por
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostKeopx
444 vistas110 diapositivas
Drupal Sitebuilding 101 por
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101Alessandro Mascherpa
800 vistas13 diapositivas

Similar a [DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10(20)

Drupal 7: mucho más que una nueva versión (para desarrolladores) por Ymbra
Drupal 7: mucho más que una nueva versión (para desarrolladores)Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Ymbra1.8K vistas
Presentacion Drupal Ccrtv por Pedro Cambra
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
Pedro Cambra1.4K vistas
Introduccion a Drupal 6 e-ghost por Keopx
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
Keopx 444 vistas
Taller de introducción a drupal 7 1ª parte por Javier Gomez
Taller de introducción a drupal 7 1ª parteTaller de introducción a drupal 7 1ª parte
Taller de introducción a drupal 7 1ª parte
Javier Gomez6.2K vistas
Arquitectura de proyectos Drupal por Ymbra
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
Ymbra1.5K vistas
Presentando drupal en xalapa por Medio y forma
Presentando drupal en xalapaPresentando drupal en xalapa
Presentando drupal en xalapa
Medio y forma1.1K vistas
MasterClass Desarrollo Plantillas Joomla! por SergioIglesiasNET
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
SergioIglesiasNET1.8K vistas
Inciación a Drupal 8 por Julian Valero
Inciación a Drupal 8Inciación a Drupal 8
Inciación a Drupal 8
Julian Valero2.6K vistas
Taller de Drupal - Sesión 2 por SEAT, S.A.
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2
SEAT, S.A.767 vistas
Drupal 8 WorkShop - e-Ghost 2015 por Keopx
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
Keopx 860 vistas
Introducción general a Drupal por Pedro Cambra
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
Pedro Cambra2.4K vistas
Por qué Drupal es un potente gestor de contenidos por Juampy NR
Por qué Drupal es un potente gestor de contenidosPor qué Drupal es un potente gestor de contenidos
Por qué Drupal es un potente gestor de contenidos
Juampy NR939 vistas
Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014 por OpenExpoES
Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014
Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014
OpenExpoES283 vistas
Metodologia de Trabajo en Proyectos con Drupal por Rojomorgan
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
Rojomorgan929 vistas

Más de Keopx

Fucking copyright por
Fucking copyrightFucking copyright
Fucking copyrightKeopx
265 vistas27 diapositivas
Segurtasuna sarean por
Segurtasuna sareanSegurtasuna sarean
Segurtasuna sareanKeopx
348 vistas40 diapositivas
[DrupalCampSpain2018] CircleCI por
[DrupalCampSpain2018] CircleCI[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCIKeopx
771 vistas38 diapositivas
[DrupalCampSpain2018] Trabajando en remoto por
[DrupalCampSpain2018] Trabajando en remoto[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remotoKeopx
558 vistas26 diapositivas
[DrupalCampSpain2018] Contribuir a Drupal por
[DrupalCampSpain2018] Contribuir a Drupal[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a DrupalKeopx
446 vistas40 diapositivas
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org por
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.orgDrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.orgKeopx
217 vistas16 diapositivas

Más de Keopx (20)

Fucking copyright por Keopx
Fucking copyrightFucking copyright
Fucking copyright
Keopx 265 vistas
Segurtasuna sarean por Keopx
Segurtasuna sareanSegurtasuna sarean
Segurtasuna sarean
Keopx 348 vistas
[DrupalCampSpain2018] CircleCI por Keopx
[DrupalCampSpain2018] CircleCI[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCI
Keopx 771 vistas
[DrupalCampSpain2018] Trabajando en remoto por Keopx
[DrupalCampSpain2018] Trabajando en remoto[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remoto
Keopx 558 vistas
[DrupalCampSpain2018] Contribuir a Drupal por Keopx
[DrupalCampSpain2018] Contribuir a Drupal[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a Drupal
Keopx 446 vistas
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org por Keopx
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.orgDrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
Keopx 217 vistas
El poder de webform (antes yaml form) por Keopx
El poder de webform (antes yaml form)El poder de webform (antes yaml form)
El poder de webform (antes yaml form)
Keopx 691 vistas
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao] por Keopx
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Keopx 1.8K vistas
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100 por Keopx
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
Keopx 820 vistas
Contribuir a Drupal por Keopx
Contribuir a DrupalContribuir a Drupal
Contribuir a Drupal
Keopx 673 vistas
Contribuir a Drupal - Entorno por Keopx
Contribuir a Drupal - EntornoContribuir a Drupal - Entorno
Contribuir a Drupal - Entorno
Keopx 249 vistas
Uso practico de git por Keopx
Uso practico de gitUso practico de git
Uso practico de git
Keopx 1.3K vistas
WorkShop: Introducción a GIT por Keopx
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
Keopx 2.3K vistas
Drupal 8 WorkShop por Keopx
Drupal 8 WorkShopDrupal 8 WorkShop
Drupal 8 WorkShop
Keopx 791 vistas
Herramientas de trabajo para entorno LAMP por Keopx
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
Keopx 2.3K vistas
Drupal Day Bilbao 2014 - Sesión de cierre por Keopx
Drupal Day Bilbao 2014 - Sesión de cierreDrupal Day Bilbao 2014 - Sesión de cierre
Drupal Day Bilbao 2014 - Sesión de cierre
Keopx 632 vistas
Drupal Day Bilbao 2014 - Sesión de apertura por Keopx
Drupal Day Bilbao 2014 - Sesión de aperturaDrupal Day Bilbao 2014 - Sesión de apertura
Drupal Day Bilbao 2014 - Sesión de apertura
Keopx 360 vistas
Introducción a git por Keopx
Introducción a gitIntroducción a git
Introducción a git
Keopx 1.7K vistas
Business inteligence por Keopx
Business inteligenceBusiness inteligence
Business inteligence
Keopx 1K vistas
Herramientas de reporte por Keopx
Herramientas de reporteHerramientas de reporte
Herramientas de reporte
Keopx 2.3K vistas

Último

Kubernetes: Más Allá de la Orquestación de Contenedores por
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de ContenedoresOpenDireito
8 vistas12 diapositivas
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx por
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxDEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxKarenlisethGuioAlbin
8 vistas8 diapositivas
MasterMind.pdf por
MasterMind.pdfMasterMind.pdf
MasterMind.pdfrtovarfernandez
17 vistas5 diapositivas
Operations & Data Graph por
Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
36 vistas25 diapositivas
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx por
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxMOISESPENAANAYA
5 vistas8 diapositivas
Aws Community Day Guatemala Criptografia con AWS KMS por
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSMario IC
25 vistas42 diapositivas

Último(6)

Kubernetes: Más Allá de la Orquestación de Contenedores por OpenDireito
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de Contenedores
OpenDireito8 vistas
Operations & Data Graph por Neo4j
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
Neo4j36 vistas
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx por MOISESPENAANAYA
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptxPeña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx
MOISESPENAANAYA5 vistas
Aws Community Day Guatemala Criptografia con AWS KMS por Mario IC
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
Mario IC25 vistas

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

  • 1. Introducción al desarrollo de módulos en Drupal 10
  • 3. ● 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
  • 4. Ruben Egiguren aka Keopx Posición Drupal Senior Developer at Digitalist Open Tech AB (Sweden) Drupal Developer, Software Libre enthusiast, new technologies and geek
  • 7. De qué hablaremos Estándares Herramientas Organización de módulos Organización de código Código Bonus
  • 9. ¿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.
  • 11. 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
  • 14. 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.
  • 16. 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.
  • 17. 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.
  • 18. 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
  • 20. 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
  • 21. 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
  • 22. 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 ● …
  • 24. 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
  • 26. Qué deberíamos leer/conocer ahh y sobre todo…. CONTRIBUIR
  • 27. Qué deberíamos leer/conocer ● Trabajando con el API de Drupal ○ https://api.drupal.org/api/drupal ● Buenas prácticas
  • 28. 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
  • 31. 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
  • 32. 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
  • 34. Creando nuestro módulo Recursos para comenzar ● https://drupalcamp2023.keopx.net/
  • 35. ¡Comenzamos! ● lando start ● lando ssh ● drush generate module-standard (drush ^10.0) ● drush generate module (drush ^11.0) ● … ● lando stop
  • 36. Bonus
  • 37. 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
  • 38. 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/
  • 40. Thanks to our all Sponsors