[Sergio Iglesias](https://sergioiglesias.net) · Blog sobre Joomla

# Algunos errores (y soluciones) al migrar un módulo a Joomla 4

[ Añadir a fuentes preferidas ](https://www.google.com/preferences/source?q=sergioiglesias.net)   11 Enero 2023    [Tips Joomla](https://sergioiglesias.net/blog/joomla)   2 - 4 minutos    Visitas: 1022  -
- [ Desarrollo Joomla ](https://sergioiglesias.net/etiquetas/desarrollo-joomla)
- [ Extensiones Joomla ](https://sergioiglesias.net/etiquetas/extensiones-joomla)
- [ Joomla4 ](https://sergioiglesias.net/etiquetas/joomla4)

  ![](https://sergioiglesias.net/images/blog/tips/migracion-modulos-joomla4.webp) Hoy te traigo este pequeño artículo en el que te cuento a lo que me he enfrentado estos días al **migrar mis extensiones a Joomla 4**. Problemillas y soluciones que seguro te van a venir bien.

Algunos errores (y soluciones) al migrar un módulo a #Joomla4

  [  Compártelo ](https://www.linkedin.com/sharing/share-offsite/?url=https://sergioiglesias.net/blog/joomla/algunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4 "Compártelo")   [  Postéalo ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fsergioiglesias.net%2Fblog%2Fjoomla%2Falgunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4&text=Algunos%20errores%20%28y%20soluciones%29%20al%20migrar%20un%20m%C3%B3dulo%20a%20%23Joomla4 "Postéalo")   [  Envíalo ](https://api.whatsapp.com/send?text=Algunos%20errores%20%28y%20soluciones%29%20al%20migrar%20un%20m%C3%B3dulo%20a%20%23Joomla4%20-%20https%3A%2F%2Fsergioiglesias.net%2Fblog%2Fjoomla%2Falgunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4 "Envíalo")

Aunque ya tengo todo migrado (puedes [ver todas las extensiones Joomla migradas: módulos, plugins y campos personalizados](https://sergioiglesias.net/extensiones-joomla)) hoy me voy a centrar en uno de los módulos para contarte algunos detalles a tener en cuenta.

Aunque puedes hacer el desarrollo de extensiones como tú quieras, lo mejor es seguir la documentación de Joomla y seguir las "convenciones" y estructuras que se proponen.

La estructura para versiones anteriores era la siguiente:

- **index.html**: fichero sin nada para evitar posibles entradas directas al directorio del módulo.
- **mi\_modulo.xml**: fichero de manifesto en dónde se pone información sobre el módulo (nombre, versión, desarrollador, ficheros y carpetas que lo forman, archivos de idioma, parámetros de configuración, enlace XML de actualización de versiones). Luego volveré a él ya que para versiones de Joomla 4 hay una información más.
- **mi\_modulo.php**: fichero de entrada en el que cargaremos estilos, librerías (o lo que necesites) y haremos la llamada tanto al controlador como a la vista.
- **helper.php**: es el "controlador" del módulo. En esta clase tendremos las consultas a base de datos en caso de ser necesarias. Veremos que aquí hay un cambio en las versiones a Joomla 4.
- **tmpl**: carpeta en donde tendremos la vista o vistas que forman el módulo y donde se mostrará la información en la parte front de nuestra página web.
- **languages**: carpeta con los ficheros de idioma.
- Se pueden tener otras carpetas con los CSS, JS y/o imágenes (yo suelo meter estos directos en uno llamado **assets**) que se necesiten (eso sí, todo debe estar declarado de forma correcta en el XML), **forms**... (puedes [ver esto que te digo en mi módulo SIS Carousel](https://github.com/sergiois/mod_sis_carousel)).

La estructura para Joomla 4 será la siguiente:

- **index.html**
- **mi\_modulo.xml**
- **mi\_modulo.php**
- **tmpl**
- **languages**
- **Otras carpetas**
- **src**: aquí tendremos la carpeta Helper con nuestro "controlador" en lugar de helper.php como en anteriores versiones.

Como puedes ver, no hay mucha diferencia salvo para el tema del controlador.

El motivo de este cambio es para poder utilizar bien los namespaces (te dejo este [enlace de la documentación oficial de PHP sobre namespaces](https://www.php.net/manual/es/language.namespaces.php) por si quieres saber más sobre esta funcionalidad).

El fichero PHP que tendremos en la ruta src/Helper debe tener el nombre del módulo.
Por ejemplo: para mi módulo que se llama mod\_articles\_faq el Helper será `ArticlesFaqHelper.php` y para el que se llama mod\_articles\_thumbnails `ArticlesThumbnailsHelper.php`.

Aquí es donde tendremos que declarar el namespace del módulo.
Por ejemplo: para mod\_articles\_faq la declaración es `namespace Joomla\Module\ArticlesFaq\Site\Helper;` (te dejo que piense cómo sería el de mod\_articles\_thumbnails).

Pues bien, una vez tenemos esto declarado y los métodos (funciones) de esta clase, lo que antes hacíamos de esta manera para llamar al helper (dentro del fichero mi\_modulo.php):

`<span class="pl-k">require_once</span> dirname(__FILE__) . <span class="pl-s">'/helper.php'</span>;<br></br>$items = modarticlesfaqHelper::getItems($params); // modarticlesfaqHelper es el nombre de la clase`

Ahora tendremos que definir el namespace:

`use Joomla\Module\ArticlesFaq\Site\Helper\ArticlesFaqHelper;<br></br>$items = ArticlesFaqHelper::getItems($params); // ahora a la clase la he llamado ArticlesFaqHelper`

Básicamente, estos son los cambios importantes a la hora de **migrar un módulo a Joomla 4**.

Cuando me puse a hacer pruebas, instalando la nueva versión módulo, no me reconocía el namespace.

Este es el principal problema que me he encontrado. Pero... todo tiene solución.

Como te comenaba antes, en el XML de instalación (mi\_modulo.xml) hay que añadir un nuevo atributo que es el que la "dice" a Joomla qué namespace se va a utilizar.

`<namespace path="src">Joomla\Module\ArticlesFaq</namespace>`

Puedes ver que le dices el path, "src" y el namespace "Joomla\\Module\\ArticlesFaq".

A partir de poner este atributo ya reconoció perfectamente todo y listo. Funcionando en Joomla 4.

 Lo mejor para ver todos los cambios que he hecho es que [entres en mi GitHub](https://github.com/sergiois) y veas las diferentes versiones de mis extensiones.

---

Espero que estos pequeños **tips sobre migración de módulos a Joomla 4** te ayuden si tienes que hacer una migración.

Y si te ha gustado... comparte en twitter ;-)

Algunos errores (y soluciones) al migrar un módulo a #Joomla4

  [  Compártelo ](https://www.linkedin.com/sharing/share-offsite/?url=https://sergioiglesias.net/blog/joomla/algunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4 "Compártelo")   [  Postéalo ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fsergioiglesias.net%2Fblog%2Fjoomla%2Falgunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4&text=Algunos%20errores%20%28y%20soluciones%29%20al%20migrar%20un%20m%C3%B3dulo%20a%20%23Joomla4 "Postéalo")   [  Envíalo ](https://api.whatsapp.com/send?text=Algunos%20errores%20%28y%20soluciones%29%20al%20migrar%20un%20m%C3%B3dulo%20a%20%23Joomla4%20-%20https%3A%2F%2Fsergioiglesias.net%2Fblog%2Fjoomla%2Falgunos-errores-y-soluciones-al-migrar-un-modulo-a-joomla-4 "Envíalo")

[ Añadir a fuentes preferidas ](https://www.google.com/preferences/source?q=sergioiglesias.net)Gratuito · Primer paso recomendado

### ¿No sabes bien en qué estado

está tu web Joomla?

Antes de decidir si hay que arreglar, migrar o mantener, conviene saber qué está pasando. Reviso el estado de tu web — versión de Joomla, extensiones y lo que se pueda ver — y te digo qué conviene hacer y en qué orden.

Versión de Joomla y ruta de actualización Estado de extensiones Plan de acción con recomendaciones Informe por email + HTML

[ Solicitar revisión gratuita sin compromiso ](https://sergioiglesias.net/revision-joomla-gratis)Respuesta en 24–48 h laborables

[![Sergio Iglesias](https://sergioiglesias.net/images/sergiois-joomla-web.png)](https://sergioiglesias.net/sobre-mi)##### Consultor Web Joomla Senior

Soy [Sergio Iglesias](https://sergioiglesias.net/sobre-mi). Ayudo a empresas, instituciones y profesionales a convertir su web en una herramienta real de negocio: segura, escalable y fácil de gestionar. Soy especialista en migraciones complejas de Joomla sin pérdida de datos, desarrollo de extensiones y plantillas a medida y ofrezco mantenimiento y evolución de tu CMS.

[](https://x.com/sergiois "Sergio Iglesias en X") [](https://www.linkedin.com/in/sergiois "Sergio Iglesias en Linkedin") [](https://github.com/sergiois "Sergio Iglesias en Github") [](https://sergiois.github.io/ "Extensiones Joomla de Sergio Iglesias")

### Suscríbete a mi newsletter

¿Te ha gustado el artículo? Suscríbete a mi newsletter y recibe contenido exclusivo.
Podrás hacer gratis un **Curso de desarrollo de plantillas Joomla**.

[Quiero apuntarme!](https://sergioiglesias.net/newsletter)

###  No hay comentarios

###  Deja tu comentario

 En respuesta a Some User

 Nombre \*

 Dirección de email \*

 Texto del comentario \*

 Doy mi consentimiento para que mi información personal sea recopilada y procesada por este sitio para aceptar y mostrar mi comentario, así como para notificarme sobre las respuestas a él según la [Declaración de privacidad](https://sergioiglesias.net/politica-privacidad) del sitio. \*
