Saltar al contenido

Joomla y Next.js: headless sin perder la ACL

Joomla 4 incorporó una API de servicios web en condiciones, lo que lo convierte en una fuente headless creíble. Los permisos y el multilingüe que ya construyó son la parte que merece conservarse.

3 min de lectura

A Joomla se le suele dejar fuera de la conversación headless, y eso está desactualizado. Joomla 4 incorporó una API de servicios web en el núcleo

  • artículos, categorías, usuarios, con autenticación por token - y Joomla 5 siguió construyendo sobre ella. Es una API REST mantenida como parte de la plataforma y no una extensión que alguien tenga que mantener viva, y eso es lo que convierte esto en una arquitectura real en vez de una idea ingeniosa.

Lo que merece conservarse

Dos cosas, y son la razón de que este emparejamiento sea interesante en lugar de arbitrario.

El control de acceso. La ACL de Joomla es granular en el núcleo: grupos, niveles de acceso, permisos por acción hasta elementos individuales. Si tiene una jerarquía editorial real - colaboradores, revisores, departamentos que solo pueden tocar su propia sección -, ese modelo ya está construido y reproducirlo en otro sitio sale caro.

El montaje multilingüe. Nativo, con asociaciones entre elementos traducidos, y sin plugin. Quien haya ensamblado lo mismo con piezas en otra plataforma sabe lo que eso vale.

Los dos sobreviven al movimiento del front. Ese es el sentido de hacerlo así.

Qué cambia y qué hay que diseñar

El renderizado se mueve, así que el modelo de renderizado es lo primero que hay que entender. Qué rutas son estáticas, cuáles revalidan al publicar, cuáles tienen que ser dinámicas porque dependen de quién pregunta.

Dos cosas necesitan diseño explícito y no suposición.

Permisos de visualización. La ACL sigue decidiendo quién puede editar. Quién puede ver un elemento pasa a tener que respetarlo también el front, de modo que esa lógica existe en dos sitios y tienen que coincidir. Decida dónde se hace la comprobación y déjelo por escrito.

Enrutado de idiomas. Las asociaciones llegan por la API y el front las mapea sobre sus rutas. Derivar el hreflang de esas asociaciones en lugar de una lista en un archivo de configuración es lo que evita que el sitio anuncie traducciones que no existen, que es la forma más habitual en que esto se tuerce.

Qué cuesta

La edición de plantilla. Posiciones de módulos, el gestor de menús, colocar cosas sin un desarrollador. Parte vuelve por la forma en que se construya el front, y es una conversación que hay que tener con los editores antes del proyecto y no después.

La vista previa. Es lo que decide si los editores siguen confiando en el sistema. Si un borrador no se puede ver tal como va a aparecer, el proyecto se da por fallido por razones que no tienen nada que ver con el renderizado. Es el modo de fallo específico de todo proyecto headless, no una peculiaridad de Joomla.

Las extensiones que renderizan. Todo lo que funcionaba emitiendo HTML dentro de una plantilla deja de aplicar. Cada una se convierte en una decisión: reimplementar contra la API, sustituir, o dejar caer a propósito.

Cuándo dejar la plantilla en paz

Si el sitio son artículos y páginas y la plantilla hace su trabajo, las ganancias baratas están en otro lado. Imágenes, tipografías, los scripts que se han ido acumulando. Eso suele ser toda la página lenta, y cuesta una semana en vez de un proyecto.

Headless se gana su sitio cuando el front tiene que ser más que una plantilla: un área de aplicación tras un login, un sistema de diseño compartido con un producto, o un comportamiento de renderizado que la plantilla no puede expresar. Hasta entonces, un sitio Joomla con plantilla mantenida y ACL funcionando es un sitio en buen estado, y no dan premios por sustituirlo.

La mayoría de los sitios que se hacen esta pregunta están en WordPress y no en Joomla, y allí el intercambio es peor, porque el control de acceso y el multilingüe no vienen ya construidos. Esa comparación está aquí.

Preguntas relacionadas

¿Se puede usar Joomla de forma headless de verdad?
Sí. Joomla 4 introdujo una API de servicios web en el núcleo que cubre artículos, categorías, usuarios y más, con autenticación por token, y Joomla 5 la continuó. Es una API REST real en el núcleo y no una extensión, y eso es lo que hace esta arquitectura práctica en vez de teórica.
¿Perdemos el control de acceso si movemos el front?
En el lado de Joomla no. La ACL sigue gobernando quién puede editar qué, que es la parte cara de reconstruir. Lo que sí hay que diseñar es cómo respeta el front los permisos de visualización, porque esa lógica pasa a vivir en dos sitios y los dos tienen que coincidir.
¿Y el montaje multilingüe?
Se queda, y suele ser la razón más fuerte para mantener Joomla en el cuadro. Las asociaciones entre artículos traducidos llegan por la API y el front las mapea sobre su propio enrutado. Lo delicado es sacar el hreflang de esas asociaciones y no de una lista en configuración.
¿Merece la pena para un sitio de contenido sin aplicación detrás?
A menudo no. Si el sitio son artículos y páginas y la plantilla hace su trabajo, las ganancias baratas están en imágenes, tipografías y scripts. Headless se gana su sitio cuando el front tiene que ser más que una plantilla: un área de aplicación, un sistema de diseño compartido, o un renderizado que la plantilla no puede expresar.

Volver a todos los artículos