En este artículo explico una forma manual para pasar los artículos desde Joomla 1.5 a Joomla 4.

Al portar los artículos de la versión anterior de Joomla a esta, encuentro que no hay (por el momento). Pasaron pocos días desde el lanzamiento de Joomla 4, así que me dediqué a buscar una forma alternativa de realizar esta tarea aunque fuese a mano.

La migración no está excenta de problemas, pero al menos es una forma rápida de tener los artículos migrados entre estas versiones.

 

Nociones preliminares

El contenido se registra en la base de datos en tablas que tienen un prefijo al momento de la instalación. Entonces, el contenido (los artículos) se registran en una tabla llamada content. Pero con el prefijo correspondiente.

Por ejemplo joomla_content.

En este artículo, para diferenciar claramente entre las tablas de Joomla! 1.5 y Joomla! 4, los prefijos serán joom1_content y joom4_content respectivamente.

Lo que necesito previamente

  • Debemos tener de antemano el último id asignado a un artículo en la tabla de destino.
  • El id del usuario que será el creador de los artículos a importar.

Procedimiento

El procedimiento consta de:

  1. Exportar a nivel SQL los artículos de la base de datos de Joomla 1.5
    Esportamos en un script SQL las incersiones
  2. Realizar algunas moficaciones sobre la base de datos de Joomla 4
    Esto es principalmente para compatiblilzar temporalmente ambos registros
  3. Improtar el script SQL en la base de datos de Joomla 4
    Es decir, ejecutamos las sentencias de inserción SQL
  4. Realizar ajustes propios de Joomla 4 sobre los registros importados
    Compatibilizamos los registros de acuerdo a la nueva estructura.
  5. Restaurar la arquitectura de la base de datos de destino a la original.
    Deshacer los cambios de la tabla para dejarla como estaba previo a la intervención.

 

Lista de pasos

1- Exportar a nivel SQL los artículos de la base de datos de Joomla! 1.5

Como se establece en este paso, es de interés exportar el contenido de la tabla joom1_content a un archivo SQL.

Para esto, podemos emplear cualquier software para trabajar con bases de datos, tales como MySQL Workbench, DataGrip, o cualquier otro de nuestra preferencia.

Lo importante en este caso es tener cada unos de los registros con su correspondiente sentencia INSERT, evitando exportar el id del artículo.

cap1

Esta es la estructura que deberá tener el archivo a exportar. Notar que no está seleccionada la opción Computed ni Generated.

 

2- Realizar algunas moficaciones sobre la base de datos de Joomla 4

El objetivo de este paso es realizar algunas modificaciones sobre la tabla de joom4_content para adaptarla a la migración en forma directa. Esto es para evitar tener que modificar todos los registros que exportamos en el paso anterior. De modo que la incersión sea rápida y directa.

En Joomla 4 ya no existe el concepto de Sección. Este concepto ya se abandonó en la versión 2. Por lo que tendremos columnas que ya no existen en la versión de destino.

Entonces lo que haremos es crear las columnas que no existen en la tabla de destino. En resumen, las columnas de estas tablas que no están son las siguientes: 

  • title_alias
  • sectionid
  • mask
  • parentid

 Además, deberemos modificar la siguiente columna para que acepte (temporalmente) un valor por defecto.

  • modified
  • language

 

alter table joom_content alter column modified set default '2000-01-01 00:00:00';

alter table joom_content alter column language set default '*';

alter table joom_content
add title_alias varchar(100) null;

alter table joom_content
add sectionid int null;

alter table joom_content
add mask varchar null;

alter table joom_content
add parentid int null;

 

3- Improtar el script SQL en la base de datos de Joomla 4

 Realizadas las modificaciones del paso 2, procedemos a ejecutar las inserciones obtenidas en el paso 1.

En este punto se asignarán id sucesivos a partir del último que nos guardamos. Es importante tener ese dato a mano como expliqué al comienzo, ya que lo vamos a necesitar en el paso 4.

Aquí deberían realizarse sin mayores inconvenientes. Tendremos n cantidad de

INSERT INTO joom4_content (title, alias, title_alias, introtext, .........
INSERT INTO joom4_content (title, alias, title_alias, introtext, .........
INSERT INTO joom4_content (title, alias, title_alias, introtext, .........

 

 

4- Realizar ajustes propios de Joomla 4 sobre los registros importados

Una vez que han finalizado las operaciones de inserción, debermos aplicar los cambios correspondientes a la versión 4 del CMS.

El paso que sigue es ejecutar la siguiente sentencia, siendo <ULTIMO_ID> el número que guardamos en la introducción de este artículo.

 

UPDATE joom_content SET
asset_id = 0,
created_by = <ID_USUARIO>,
modified_by = <ID_USUARIO>,
access = 1,
catid = <ID_CATEGORIA>
WHERE id > <ULTIMO_ID>;
UPDATE joom_content SET modified = '2000-01-01 00:00:00' WHERE modified IS NULL;

 

 

5- Restaurar la arquitectura de la base de datos de destino a la original.

Aquí revertimos los pasos ejecutados en 2.

alter table joom4_content modify modified datetime not null;

alter table joom4_content alter column language drop default;

alter table joom4_content drop column title_alias;

alter table joom4_content drop column sectionid;

alter table joom4_content drop column mask;

alter table joom4_content drop column parentid;

 

Notas

Si bien este proceso es bastante rudimentario, es capaz de migrar exitosamente los registros. Aunque deja huérfano los registros de joom4_assets. Esto hace que no sea posible encontrar estos artículos desde el panel de adminsitrador. Sin embargo son completamente accesibles y editables desde la misma página del blog.

 Adicionalmente, todo este procedimiento es experimental, y no deberá llevarse a cabo sin antes hacer una copia de seguridad en ambas bases de datos.

¡Mucha suerte!