SlideShare a Scribd company logo
1 of 50
Download to read offline
Introducción al desarrollo de módulos en Drupal 9
ZARAGOZA 3-5 JUNIO
DRUPALCAMP SPAIN 2022
ZARAGOZA 3-5 JUNIO
DRUPALCAMP SPAIN 2022
Arratsalde on
Buenas tardes
Good afternoon
INFORMACIÓN DEL PONENTE
1
● Drupal association
● Drupal Core && Drupal contrib module && Drupal Mentor
● Asociación Española de Drupal
● G.D.O Basque Country
● …
DRUPALCAMP Zaragoza 2022
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
INFORMACIÓN DEL PONENTE
1
DRUPALCAMP Zaragoza 2022
Ruben Egiguren aka Keopx
Posición
Drupal Senior Developer at Digitalist Sweden
Drupal Developer, Software Libre enthusiast, new technologies and geek
INFORMACIÓN DEL PONENTE
1
DRUPALCAMP Zaragoza 2022
De qué hablaremos
2
DRUPALCAMP Zaragoza 2022
De qué hablaremos
De qué hablaremos
2
DRUPALCAMP Zaragoza 2022
Estándares
Herramientas
Organización de módulos
Organización de código
Código
Bonus
De qué hablaremos
2
DRUPALCAMP Zaragoza 2022
¿Quién sabe de qué?
3
DRUPALCAMP Zaragoza 2022
¿Quién sabe de qué?
¿Quién sabe de qué?
3
DRUPALCAMP Zaragoza 2022
¿Quién sabe de qué?
3
DRUPALCAMP Zaragoza 2022
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.
SIN MIEDO
Estándares
4
DRUPALCAMP Zaragoza 2022
Estándares
Estándares
4
DRUPALCAMP Zaragoza 2022
Estándares
4
DRUPALCAMP Zaragoza 2022
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
4
DRUPALCAMP Zaragoza 2022
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
5
DRUPALCAMP Zaragoza 2022
Herramientas
Herramientas
5
DRUPALCAMP Zaragoza 2022
Herramientas
5
DRUPALCAMP Zaragoza 2022
Drush
● https://www.drush.org/
Devel
● https://drupal.org/project/devel
Examples
● https://drupal.org/project/examples
Coder
● https://drupal.org/project/coder
Estructura de directorios
6
DRUPALCAMP Zaragoza 2022
Estructura de directorios
Estructura de directorios
6
DRUPALCAMP Zaragoza 2022
Estructura de directorios
6
DRUPALCAMP Zaragoza 2022
● /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
6
DRUPALCAMP Zaragoza 2022
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
6
DRUPALCAMP Zaragoza 2022
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
7
DRUPALCAMP Zaragoza 2022
Organizar el módulo
Organizar el módulo
7
DRUPALCAMP Zaragoza 2022
Organizar el módulo - custom
7
DRUPALCAMP Zaragoza 2022
Los módulos suele tener esta estructura:
● loremipsum.info.yml - Fichero de informacion.
● loremipsum.module - Fichero principal, implementación de hook
● loremipsum.install - (Des)Instalador del módulo, esquema de información.
● config/ - 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
Fuente: https://www.drupal.org/docs/creating-custom-modules/basic-module-building-tutorial-lorem-ipsum-generator/basic-structure
Organizar el módulo - custom
7
DRUPALCAMP Zaragoza 2022
Los módulos suele tener esta estructura:
● src/Controller/ - controlador
● src/Entity/ - Entidad
● src/EventSubscriber/ - EventSubscriber
● src/Form/ - Formulario
● src/Plugin/ - Plugins de todo tipo, bloques, campos, migrate, etc.
● src/Plugin/Block/ - Plugins de todo tipo, bloques, campos, migrate, etc.
● …
Fuente: https://www.drupal.org/docs/creating-custom-modules/basic-module-building-tutorial-lorem-ipsum-generator/basic-structure
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
Qué deberíamos leer/conocer
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
● 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
8
DRUPALCAMP Zaragoza 2022
ahh y sobre todo….
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
ahh y sobre todo….
CONTRIBUIR
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
● Trabajando con el API de Drupal
○ https://api.drupal.org/api/drupal
● Buenas prácticas
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
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
Esquema del API de Form
● https://drupal.org/node/165104
Qué deberíamos leer/conocer
8
DRUPALCAMP Zaragoza 2022
Creando nuestro módulo
9
DRUPALCAMP Zaragoza 2022
Creando nuestro módulo
Creando nuestro módulo
9
DRUPALCAMP Zaragoza 2022
Creando nuestro módulo
9
DRUPALCAMP Zaragoza 2022
● Eres nuevo creando módulos
○ http://deeson-online.co.uk/labs/are-you-developer-new
-drupal-read
● Creating modules - a tutorial: Drupal 9.*
○ https://www.drupal.org/docs/creating-custom-modules
● Examples
○ https://drupal.org/project/examples
Creando nuestro módulo
9
DRUPALCAMP Zaragoza 2022
● Drush para generar módulos y código
○ drush generate module-standard
■ Generate a Module using Drush
¡Comenzamos!
10
DRUPALCAMP Zaragoza 2022
¡Comenzamos!
¡Comenzamos!
10
DRUPALCAMP Zaragoza 2022
¡Comenzamos!
10
DRUPALCAMP Zaragoza 2022
● lando start
● lando ssh
● drush generate module-standard (^10.0)
● drush generate module (^11.0)
● …
● lando stop
Bonus
11
DRUPALCAMP Zaragoza 2022
Bonus
Bonus
11
DRUPALCAMP Zaragoza 2022
Bonus
11
DRUPALCAMP Zaragoza 2022
● 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-phpstorm.html
○ https://docs.lando.dev/guides/lando-with-vscode.html
● Configuración del entorno:
○ https://drupal.org/node/238805
Bonus
11
DRUPALCAMP Zaragoza 2022
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.org/
Fin
12
DRUPALCAMP Zaragoza 2022
AGRADECIMIENTOS
13
DRUPALCAMP Zaragoza 2022
PLATINUM
GOLD
SILVER
BRONZE
COLABORADORES
ZARAGOZA 3-5 JUNIO
DRUPALCAMP SPAIN 2022
Eskerrik asko zuen arretagatik
keopx
GNU/GPL Licence
Gracias por vuestra atención
Thanks for your attention

More Related Content

What's hot

What's hot (20)

Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
 
Performance Profiling in Rust
Performance Profiling in RustPerformance Profiling in Rust
Performance Profiling in Rust
 
Json in Postgres - the Roadmap
 Json in Postgres - the Roadmap Json in Postgres - the Roadmap
Json in Postgres - the Roadmap
 
Building your First gRPC Service
Building your First gRPC ServiceBuilding your First gRPC Service
Building your First gRPC Service
 
Managing Terraform Module Versioning and Dependencies
Managing Terraform Module Versioning and Dependencies Managing Terraform Module Versioning and Dependencies
Managing Terraform Module Versioning and Dependencies
 
Improving Python and Spark (PySpark) Performance and Interoperability
Improving Python and Spark (PySpark) Performance and InteroperabilityImproving Python and Spark (PySpark) Performance and Interoperability
Improving Python and Spark (PySpark) Performance and Interoperability
 
Introducing Scylla Manager: Cluster Management and Task Automation
Introducing Scylla Manager: Cluster Management and Task AutomationIntroducing Scylla Manager: Cluster Management and Task Automation
Introducing Scylla Manager: Cluster Management and Task Automation
 
Apache Airflow Architecture
Apache Airflow ArchitectureApache Airflow Architecture
Apache Airflow Architecture
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
How to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large ClustersHow to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large Clusters
 
Introduction To Terraform
Introduction To TerraformIntroduction To Terraform
Introduction To Terraform
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with Spark
 
Facebook Presto presentation
Facebook Presto presentationFacebook Presto presentation
Facebook Presto presentation
 
Apache Airflow overview
Apache Airflow overviewApache Airflow overview
Apache Airflow overview
 
PySpark Training | PySpark Tutorial for Beginners | Apache Spark with Python ...
PySpark Training | PySpark Tutorial for Beginners | Apache Spark with Python ...PySpark Training | PySpark Tutorial for Beginners | Apache Spark with Python ...
PySpark Training | PySpark Tutorial for Beginners | Apache Spark with Python ...
 
Enhancing Network and Runtime Security with Cilium and Tetragon by Raymond De...
Enhancing Network and Runtime Security with Cilium and Tetragon by Raymond De...Enhancing Network and Runtime Security with Cilium and Tetragon by Raymond De...
Enhancing Network and Runtime Security with Cilium and Tetragon by Raymond De...
 
Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실Cloud Native Java GraalVM 이상과 현실
Cloud Native Java GraalVM 이상과 현실
 
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
 
04 spark-pair rdd-rdd-persistence
04 spark-pair rdd-rdd-persistence04 spark-pair rdd-rdd-persistence
04 spark-pair rdd-rdd-persistence
 
Prometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome MonitoringPrometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome Monitoring
 

Similar to [DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9

Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
Pedro Cambra
 

Similar to [DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9 (20)

[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
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 7
 
Drupal creación módulos, bloques, formularios y alters
Drupal  creación módulos, bloques, formularios y altersDrupal  creación módulos, bloques, formularios y alters
Drupal creación módulos, bloques, formularios y alters
 
Por qué Drupal es un potente gestor de contenidos #OpenExpoDay 2014
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
 
Por qué Drupal es un potente gestor de contenidos
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
 
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)
Drupal 7: mucho más que una nueva versión (para desarrolladores)
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
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 7
 
Cw15 conoce drupal_v28
Cw15 conoce drupal_v28Cw15 conoce drupal_v28
Cw15 conoce drupal_v28
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
 
Introduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Drupal - Introducción
Drupal - IntroducciónDrupal - Introducción
Drupal - Introducción
 
Drupal7 site buildingesue_3
Drupal7 site buildingesue_3Drupal7 site buildingesue_3
Drupal7 site buildingesue_3
 
Drupal Sitebuilding 101
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101
 
Introducción general a Drupal
Introducción general a DrupalIntroducción general a Drupal
Introducción general a Drupal
 
Inciación a Drupal 8
Inciación a Drupal 8Inciación a Drupal 8
Inciación a Drupal 8
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
Dc salad
Dc saladDc salad
Dc salad
 
Programacion basica de módulos
Programacion basica de módulosProgramacion basica de módulos
Programacion basica de módulos
 

More from Keopx

More from Keopx (20)

Fucking copyright
Fucking copyrightFucking copyright
Fucking copyright
 
Segurtasuna sarean
Segurtasuna sareanSegurtasuna sarean
Segurtasuna sarean
 
[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCI[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCI
 
[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remoto[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remoto
 
[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a Drupal[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a Drupal
 
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
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
 
El poder de webform (antes yaml form)
El poder de webform (antes yaml form)El poder de webform (antes yaml form)
El poder de webform (antes yaml form)
 
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]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
[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
[Drupal campspain2017] Contribuir a Drupal, de 0 a 100
 
Contribuir a Drupal
Contribuir a DrupalContribuir a Drupal
Contribuir a Drupal
 
Contribuir a Drupal - Entorno
Contribuir a Drupal - EntornoContribuir a Drupal - Entorno
Contribuir a Drupal - Entorno
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
Drupal 8 WorkShop
Drupal 8 WorkShopDrupal 8 WorkShop
Drupal 8 WorkShop
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
Drupal Day Bilbao 2014 - Sesión de cierre
Drupal Day Bilbao 2014 - Sesión de cierreDrupal Day Bilbao 2014 - Sesión de cierre
Drupal Day Bilbao 2014 - Sesión de cierre
 
Drupal Day Bilbao 2014 - Sesión de apertura
Drupal Day Bilbao 2014 - Sesión de aperturaDrupal Day Bilbao 2014 - Sesión de apertura
Drupal Day Bilbao 2014 - Sesión de apertura
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Business inteligence
Business inteligenceBusiness inteligence
Business inteligence
 

[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9