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

Keopx
Keopx Drupal Developer um 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 von 41

Recomendados

[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9 von
[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 views50 Folien
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7 von
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 views28 Folien
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7 von
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 views35 Folien
Introduccion técnica a Drupal von
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
1.5K views30 Folien
¡This is drupal! - Global Training Days von
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
415 views36 Folien
Drupal - Introducción von
Drupal - IntroducciónDrupal - Introducción
Drupal - IntroducciónDanilo Domínguez
1.9K views43 Folien

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) von
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 views34 Folien
Presentacion Drupal Ccrtv von
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal CcrtvPedro Cambra
1.4K views76 Folien
Introduccion drupal von
Introduccion drupalIntroduccion drupal
Introduccion drupalDanilo Domínguez
404 views42 Folien
¡This is drupal! von
¡This is drupal!¡This is drupal!
¡This is drupal!Jose Luis Bellido
981 views34 Folien
Introduccion a Drupal 6 e-ghost von
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostKeopx
444 views110 Folien
Drupal Sitebuilding 101 von
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101Alessandro Mascherpa
800 views13 Folien

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) von 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 views
Presentacion Drupal Ccrtv von Pedro Cambra
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
Pedro Cambra1.4K views
Introduccion a Drupal 6 e-ghost von Keopx
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
Keopx 444 views
Taller de introducción a drupal 7 1ª parte von 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 views
Arquitectura de proyectos Drupal von Ymbra
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
Ymbra1.5K views
Presentando drupal en xalapa von Medio y forma
Presentando drupal en xalapaPresentando drupal en xalapa
Presentando drupal en xalapa
Medio y forma1.1K views
MasterClass Desarrollo Plantillas Joomla! von SergioIglesiasNET
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
SergioIglesiasNET1.8K views
Taller de Drupal - Sesión 2 von SEAT, S.A.
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2
SEAT, S.A.767 views
Drupal 8 WorkShop - e-Ghost 2015 von Keopx
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
Keopx 860 views
Introducción general a Drupal von Pedro Cambra
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
Pedro Cambra2.4K views
Por qué Drupal es un potente gestor de contenidos von 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 views
Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014 von 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 views
Metodologia de Trabajo en Proyectos con Drupal von Rojomorgan
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
Rojomorgan929 views

Más de Keopx

Fucking copyright von
Fucking copyrightFucking copyright
Fucking copyrightKeopx
265 views27 Folien
Segurtasuna sarean von
Segurtasuna sareanSegurtasuna sarean
Segurtasuna sareanKeopx
348 views40 Folien
[DrupalCampSpain2018] CircleCI von
[DrupalCampSpain2018] CircleCI[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCIKeopx
771 views38 Folien
[DrupalCampSpain2018] Trabajando en remoto von
[DrupalCampSpain2018] Trabajando en remoto[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remotoKeopx
558 views26 Folien
[DrupalCampSpain2018] Contribuir a Drupal von
[DrupalCampSpain2018] Contribuir a Drupal[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a DrupalKeopx
446 views40 Folien
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org von
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 views16 Folien

Más de Keopx (20)

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

Último

Aws Community Day Guatemala Criptografia con AWS KMS von
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 views42 Folien
trabajotecnologiatemperatura-231005005635-53760f2d.pdf von
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdfSamuelRamirez83524
5 views2 Folien
MasterMind.pdf von
MasterMind.pdfMasterMind.pdf
MasterMind.pdfrtovarfernandez
17 views5 Folien
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx von
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxDEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptx
DEFINICIONES DE BLOGGUER, MOVIE MAKER Y FILMORA. .pptxKarenlisethGuioAlbin
8 views8 Folien
Kubernetes: Más Allá de la Orquestación de Contenedores von
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 views12 Folien
Operations & Data Graph von
Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
31 views25 Folien

Último(7)

Aws Community Day Guatemala Criptografia con AWS KMS von 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 views
trabajotecnologiatemperatura-231005005635-53760f2d.pdf von SamuelRamirez83524
trabajotecnologiatemperatura-231005005635-53760f2d.pdftrabajotecnologiatemperatura-231005005635-53760f2d.pdf
trabajotecnologiatemperatura-231005005635-53760f2d.pdf
Kubernetes: Más Allá de la Orquestación de Contenedores von 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 views
Operations & Data Graph von Neo4j
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
Neo4j31 views
Peña_Anaya_TAREA Reportes Maestro - Detalle con el uso de AJAX.pptx von 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 views

[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