Enviado por Antonio el Jue, 26/08/2021

Hola.

Tengo creado un sitio en drupal 8.9.X en el curro, bastante avanzado, le he instalado los módulos que he necesitado, le metí como tema bootstrap 3 y me creé mi plantilla.

Ahora me gustaría aprender más sobre como desarrollar mis propios módulos en Drupal 8 ó 9.

He visto tutoriales de como hacer algunos sencillos, tipo mostrar "Hola mundo", que están bien para empezar y sobre todo para comprender la estructura de directorios y archivos. 

Pero el caso es que cuando quiero hacer algo más complicado, no sé muy bien como hacerlo, que librerías debo usar, ... 

También es cierto que mis conocimientos en php son básicos, symphony no lo he tocado. Quizá el problema pueda venir por ahí...

Me podéis recomendar por donde empezar, alguna web que haga algún módulo algo más avanzado o incluso algún curso de desarrollo que esté bien.

 Ahora mismo, lo que tengo pensado hacer es:

Tengo un tipo de contenido con un campo de tipo file, en el se puede subir más de 1 fichero.

Lo que quiero es tener un botón, que al pulsarlo recorra los ficheros que tengo y mandarlos a un web service externo que los devolvería sellados y sustituir los ficheros mandados por los sellados.

Esto parece fácil contarlo pero no creo que sea muy fácil de implementar. De hecho, no sé si incluso se podría hacer desarrollándolo con Drupal.

Gracias por adelantado por vuestras ayudas.

Un saludo

  1. Buenas Antonio, pues como comentas, si, conviene que sepas algo de Symfony, ya que para algunas cosas (como el trabajar con archivos que comentas), es mejor utilizar herramientas de Symfony (como el componente Finder en este caso de archivos), para las peticiones a un sitio externo (entiendo que REST API), tienes Guzzle dentro de Drupal como un servicio llamado 'http_client', con ese puedes conectarte al sitio externo.

    Y sobre lo de Drupal, en Udemy tengo unos cursos, te dejo enlace a los 2 con un cupón para que sean mas baratos si te interesan, ambos son de desarrollo:

    Desarrollo de modulos.

    Desarrollo de Themes.

    Saludos.

    PD: Un consejo, mejor que utilices Media (esta en el core de Drupal), para la gestión de archivos en lugar de utilizar los campos de "image" y "file" que hay.

  2. Muchas gracias Borja.

    Entonces me pondré las pilas con Symfony y le echaré un ojo a tus cursos de Udemy.

    En cuando a lo de usar Media, creo que no puedo, porque tengo para almacenar los ficheros uso file fields paths con tokens definidos con los campos del tipo de contenido que tengo creado.

    Muchas gracias por los videos que cuelgas, porque a mi por lo menos me ayudan bastante. Me ayudaron mucho los del site de Nireneko.

    Un saludo.

  3. Si, toca aprender Symfony (por lo menos un poquito) para entender muchas cosas de Drupal y que sea mas sencillo.

    Sobre Media, te vas a ver forzado a usarlo, en Drupal 10 van a activar Media por defecto, y seguramente deprequen Image y File (para eliminarlos o los integren dentro de Media), Media es el futuro.

    No se que haces con los token, pero utilizando los tokens de esta manera, puedes acceder a las imágenes o archivos de Media

    [node:field_portada:entity:field_media_image:large:url]

    En ese caso, es un campo "field_portada" que apunta a Media ("entity") de tipo imagen y tiene la imagen en el campo "field_media_image" (este segundo campo corresponde a Media), y es el equivalente a tener la imagen o el archivo en el nodo, de ahí en adelante, funciona igual.

    La web de nireneko la tengo abandonada en favor a esta, que es donde iré metiendo básicamente cursos en la sección de cursos, de momento no habrá código, pero en un futuro subiré también videos sobre desarrollo. La semana que viene por ejemplo, empezare a publicar videos de Views, ahora mismo estoy terminando los de DDEV.

  4. Pues eso, toca buscar algún tutorial, curso de symfony, que ya que me pongo empiezo por la 5, ¿no?

    Los tokens los uso en "file fields path" para crear una estructura de directorios físico donde almacenar los ficheros que suben los usuarios, ejemplo: 2021/01/N1/boletin1.pdf, 2021/01/N2/boletin2.pdf, .....

    Tengo un tipo de contenido para almacenar boletines de información. Los campos que uso para crear la estructura de directorios y almacenar los ficheros son los siguientes: field_num_boletin, field_anio_boletin, field_mes_boletin y field_ficheros_boletin (ilimitados). 

    En el campo field_ficheros_boletin en la ruta, uso file fields path con tokens: [node:field_anio_boletin]/[node:field_mes_boletin]/[node:field_num_boletin]/[file:ffp-name-only-original].[file:ffp-extension-original], de este modo puedo tener organizados los ficheros en la estructura de directorios según los valores que seleccionen los usuarios.

    Creo que ahora mismo con Media no puedo hacer esto. Espero que en un futuro Media me permita hacer esto.... miedo me da si tengo que cambiarlo en un futuro.... :)

    Muchas gracias por tu ayuda Borja.

    Te animo a que sigas haciendo estas aportaciones tan buenas que haces, porque es una currada y ayudas mucho.

    Un saludo.

     

     

  5. No hace falta que te vuelvas un pro en Symfony, es mas que nada para que te suenen las cosas (hombre, si aprendes mucho de Symfony mejor para trabajar en Drupal y de paso con Symfony). Tema de controladores y rutas para conocer los conceptos, servicios, eventos y Twig principalmente, y si ya aprendes el workflow de Symfony con el componente HttpKernel y el componente HttpFoundation para conocer los objetos Request y Response sera mas que suficiente para empezar con Drupal con las cosas mas claras.

    No hace falta que aprendas cosas como las siguientes: los formularios de Drupal son completamente distintos a los de Symfony, el sistema de rutas tambien trabajan de manera distinta (en Symfony es con expresiones regulares desde cadenas de texto en archivos, y en Drupal es desde la base de datos), al igual que todo el tema de acceso a bases de datos y gestión de usuarios.

    Y ya paro, pero sin entrar en muchos detalles, lo que he comentado :)

    Para aprender tienes cursos en videos (muy buenos): https://symfonycasts.com

    Y el libro de la web: https://symfony.com/doc/current/the-fast-track/es/index.html