Instrucciones de instalación y configuración del módulo Kowal_ExportImportCategories
Este documento describe la instalación, configuración y uso del módulo Kowal_ExportImportCategories para Magento 2. La guía incluye información del archivo README.md y las funciones implementadas en el módulo.
Requisitos
- Magento 2.
- PHP compatible con la instalación de Magento, se recomienda PHP
8.1 o superior. - Acceso a CLI Magento.
- Acceso a Composer.
- Permisos de administrador Magento.
- Acceso al repositorio del módulo.
- Para la importación de imágenes: posibilidad de colocar archivos en el directorio
pub/media/import/categories.
Instalación mediante Composer
El módulo está disponible a través del repositorio Composer.
1. Añade el repositorio Composer
composer config repositories.export.import.categories vcs https://github.com/kowalco/export-import-categories
2. Añade el token de acceso al repositorio privado de GitHub
Si el repositorio es privado, configura el token de GitHub:
composer config --global --auth github-oauth.github.com
Sustituye por tu propio token de acceso.
3. Instala el módulo
composer require kowal/module-export-import-categories
4. Activa el módulo en Magento
bin/magento module:enable Kowal_ExportImportCategories
5. Ejecuta la actualización de Magento
bin/magento setup:upgrade
6. Limpia la caché
bin/magento cache:flush
7. Opcionalmente, ejecuta la compilación DI
En entornos de producción o en modo production:
bin/magento setup:di:compile
8. Opcionalmente, despliega los recursos estáticos
Si el entorno lo requiere:
bin/magento setup:static-content:deploybin/magento cache:flush
Instalación manual en app/code
Como alternativa, el módulo se puede colocar manualmente en el directorio:
app/code/Kowal/ExportImportCategories
Después de copiar los archivos, ejecuta:
bin/magento module:enable Kowal_ExportImportCategoriesbin/magento setup:upgradebin/magento cache:flush
En modo production, ejecuta también:
bin/magento setup:di:compile
Comprobación de la instalación
Después de la instalación, comprueba si el módulo está activo:
bin/magento module:status Kowal_ExportImportCategories
El módulo debería aparecer en la lista de módulos activos.
En el panel de administración, ve a:
System > Data Transfer > Export/Import Categories
Deberían mostrarse tres opciones:
Export Categories,Import Categories,Import History.
Permisos ACL
El módulo añade permisos administrativos independientes:
- acceso a la sección principal
Export/Import Categories, - exportación de categorías,
- importación de categorías,
- historial de importaciones.
Si el usuario administrador no ve el menú del módulo, comprueba el rol de usuario en:
System > Permissions > User Roles
A continuación, asigna los permisos adecuados para los recursos del módulo.
Ubicación del módulo en el panel
El módulo está disponible en:
System > Data Transfer > Export/Import Categories
Vistas:
Export Categories - exportación de categorías a CSV.Import Categories - importación de categorías desde CSV.Import History - historial de importaciones e informes.
Configuración de la exportación
La vista de exportación permite generar un archivo CSV con categorías.
Campos de exportación
Store View
Selecciona el store view desde el que se leerán los valores de atributos de categorías.
Si seleccionas un store view de idioma, la exportación puede contener valores específicos de ese store view o valores heredados del scope predeterminado, según el modo de valores.
Start Category ID
Campo opcional que permite limitar la exportación a una categoría seleccionada y su subárbol.
Si el campo se deja vacío, el módulo exporta las categorías desde la root category del store view seleccionado.
Store View Value Mode
Define cómo exportar valores dependientes del store view.
Variantes disponibles:
resolved_value,store_override_only.
resolved_value exporta el valor visible en el store view seleccionado tras aplicar el fallback de Magento.
store_override_only exporta solo el valor sobrescrito para el store view seleccionado. Si el valor se hereda del default scope, la celda CSV estará vacía.
CSV Delimiter
Separador CSV. Por defecto:
,
Se puede utilizar otro separador si el archivo se va a editar en una herramienta que requiera, por ejemplo, punto y coma.
Attributes
Lista de atributos de categoría disponibles en Magento.
El módulo obtiene los atributos dinámicamente desde EAV, por lo que en la lista también pueden aparecer atributos de categoría propios añadidos en el proyecto.
Las columnas de sistema se añaden automáticamente y no es necesario seleccionarlas.
Columnas de sistema en la exportación
La exportación siempre debería contener columnas de sistema:
store_view_code,entity_id,parent_entity_id,category_path,parent_path,level,position,attribute_set_id.
Estas columnas sirven para identificar categorías, validar el store view y gestionar la estructura del árbol.
Configuración de la importación
La vista de importación permite cargar CSV y guardar datos de categorías.
Campos de importación
Store View
Selecciona el store view en el que se guardarán los valores.
Este campo determina el store_id numérico utilizado al guardar en las tablas Magento.
La columna store_view_code del CSV no se convierte directamente en store_id. Se utiliza para validar si el archivo corresponde al store view seleccionado.
Ejemplo:
- en el formulario seleccionas un store view con
store_id = 1, - en el CSV debe aparecer un
store_view_code correspondiente a ese store view, - el módulo guarda los datos usando
store_id = 1.
Import Mode
Modos disponibles:
update actualiza categorías existentes.
insert crea nuevas categorías.
CSV File
Archivo CSV con encabezados en la primera fila.
El archivo debe estar codificado en UTF-8.
CSV Delimiter
Separador CSV. Debe corresponder al separador utilizado en el archivo.
Unknown Columns Policy
Define el comportamiento para columnas que no son columnas de sistema ni atributos de categoría conocidos.
Variantes disponibles:
error - la importación muestra un error para columnas desconocidas.ignore - las columnas desconocidas se ignoran.
Variante recomendada:
error
Empty Values Policy
Define cómo interpreta el módulo las celdas CSV vacías.
Variantes disponibles:
skip_empty,clear_value,use_default.
skip_empty significa que una celda vacía no cambiará el valor actual.
clear_value significa que una celda vacía limpiará el valor del atributo.
use_default significa que una celda vacía eliminará la sobrescritura del store view y permitirá que Magento utilice el valor predeterminado.
Variante recomendada para importaciones de actualización:
skip_empty
URL Key Strategy
Define cómo gestionar el atributo url_key.
Variantes disponibles:
use_csv_value,generate_from_name,keep_existing,magento_default.
use_csv_value guarda url_key desde el CSV.
generate_from_name genera url_key a partir del valor name.
keep_existing conserva el url_key existente en modo update.
magento_default deja la gestión de URL al mecanismo estándar de Magento.
Create permanent redirect for URL key changes
La opción define si Magento debe crear un permanent redirect al cambiar url_key.
Conviene activarla cuando el cambio de URL de categoría debe conservar redirecciones SEO desde las direcciones antiguas.
Images Base Directory
Directorio base para la importación de imágenes de categorías relativo a pub/media.
Por defecto:
import/categories
Ruta completa en Magento:
pub/media/import/categories
Si en el CSV indicas:
gear/bags.jpg
el módulo buscará el archivo:
pub/media/import/categories/gear/bags.jpg
Error Policy
Define el comportamiento de la importación ante errores.
Variantes disponibles:
skip_invalid_rows,stop_on_first_error,all_or_nothing.
skip_invalid_rows omite las filas incorrectas y continúa la importación.
stop_on_first_error detiene la importación tras el primer error.
all_or_nothing requiere que todo el archivo sea correcto; si se produce un error, la importación no debería guardar datos.
Variante recomendada para archivos grandes:
skip_invalid_rows
Batch Size
Número de filas procesadas en un lote.
Por defecto:
100
Un valor más bajo reduce el consumo de memoria. Un valor más alto puede acelerar la importación en entornos más potentes.
Attributes to Import
Lista de atributos que deben importarse.
La importación actualiza solo los atributos seleccionados. Si una columna existe en el CSV, pero el atributo no se marca en el formulario, el módulo no debería guardarlo.
Dry Run
Modo de validación sin guardar datos.
Se recomienda ejecutar dry-run antes de la importación real, especialmente para archivos grandes o cambios SEO.
Modo import/update
El modo update sirve para actualizar categorías existentes.
Datos requeridos
El CSV debe contener:
store_view_code,entity_id o category_path,- al menos una columna de un atributo seleccionado.
Cómo funciona la identificación de categorías
El módulo intenta encontrar la categoría por:
entity_id,category_path, si entity_id está vacío.
entity_id es el mejor identificador cuando la importación se realiza en el mismo entorno Magento.
category_path es más portable entre entornos, pero debe ser inequívoco.
Ejemplo de actualización de traducciones
store_view_code,entity_id,category_path,name,url_key,meta_title,meta_descriptionpl,13,Default Category/Gear/Bags,Torby,torby,Torby,Torby i akcesoriapl,14,Default Category/Gear/Gloves,Rekawiczki,rekawiczki,Rekawiczki,Rekawiczki sportowe
Configuración de importación:
Store View: store view polaco,Import Mode: update,Attributes to Import: name, url_key, meta_title, meta_description,URL Key Strategy: use_csv_value,Empty Values Policy: skip_empty,- primero
Dry Run, después la importación real.
Modo import/insert
El modo insert sirve para crear nuevas categorías.
Datos requeridos
El CSV debe contener:
store_view_code,category_path,parent_entity_id o parent_path,name,- al menos una columna de un atributo seleccionado.
entity_id no es obligatorio, porque Magento lo asigna automáticamente.
Ejemplo de creación de categorías
store_view_code,parent_entity_id,parent_path,category_path,name,url_key,is_active,include_in_menudefault,12,Default Category/Gear,Default Category/Gear/Helmets,Helmets,helmets,1,1default,12,Default Category/Gear,Default Category/Gear/Gloves,Gloves,gloves,1,1
Configuración de importación:
Store View: default store view,Import Mode: insert,Attributes to Import: name, url_key, is_active, include_in_menu,URL Key Strategy: use_csv_value o generate_from_name,Error Policy: skip_invalid_rows,- primero
Dry Run.
Trabajo con select y multiselect
El módulo admite select y multiselect por labels de opción.
No es necesario indicar los ID técnicos de opción.
Ejemplo:
store_view_code,entity_id,category_path,display_mode,available_sort_by,default_sort_bydefault,13,Default Category/Gear/Bags,Products only,Position|Product Name|Price,Position
Para multiselect, varios valores se separan con el separador:
|
Si el label no existe o es ambiguo, la importación mostrará un error.
Importación de imágenes de categorías
Antes de importar imágenes, coloca los archivos en el directorio:
pub/media/import/categories
Ejemplo de CSV:
store_view_code,entity_id,category_path,image,thumbnaildefault,13,Default Category/Gear/Bags,gear/bags.jpg,gear/bags-thumb.jpg
Configuración de importación:
Images Base Directory: import/categories,- atributos marcados:
image, thumbnail.
El módulo comprobará si los archivos existen y tienen extensiones admitidas.
Informe de importación
Después de la importación, el módulo genera un informe CSV.
El informe contiene:
- número de fila,
- identificador de categoría,
- estado,
- mensaje,
- atributos modificados.
Los estados pueden incluir:
success,error,skipped_no_change,skipped_existing.
Historial de importaciones
El historial de importaciones está disponible en:
System > Data Transfer > Export/Import Categories > Import History
El historial contiene:
- fecha de importación,
- usuario administrador,
- store view,
- modo de importación,
- nombre del archivo,
- número de filas,
- número de éxitos,
- número de errores,
- información sobre
dry-run, - enlace para descargar el informe.
Proceso de trabajo recomendado
Importación de actualización segura
- Realiza una exportación de las categorías actuales.
- Conserva el archivo original como backup.
- Prepara los cambios en una copia del CSV.
- Asegúrate de que
store_view_code corresponda al store view de destino. - Selecciona la importación
update. - Selecciona solo los atributos que quieras cambiar.
- Configura
Empty Values Policy en skip_empty. - Ejecuta
Dry Run. - Revisa el informe.
- Ejecuta la importación real.
- Limpia la caché si los cambios no son visibles de inmediato.
Importación segura de nuevas categorías
- Prepara un CSV con
category_path, parent_path o parent_entity_id. - Asegúrate de que los padres existan o aparezcan antes en el archivo.
- Selecciona la importación
insert. - Marca al menos
name y otros atributos requeridos. - Ejecuta
Dry Run. - Corrige los errores del informe.
- Ejecuta la importación real.
Caché e índices
Después de importar cambios en categorías, conviene actualizar la caché Magento:
bin/magento cache:clean
Si la tienda requiere reindexación manual después de cambios importantes en el catálogo:
bin/magento indexer:reindex
En instalaciones Magento habituales, el guardado de categorías mediante los mecanismos estándar de Magento debería ejecutar los procesos adecuados vinculados al modelo de categoría, pero tras importaciones grandes se recomienda comprobar la caché y los índices.
Problemas más frecuentes
La importación indica un store_view_code no coincidente
Comprueba si el código de la columna store_view_code corresponde al store view seleccionado en el formulario de importación.
La importación no cambia valores
Comprueba:
- si el atributo se ha marcado en
Attributes to Import, - si la celda CSV no está vacía,
- si
Empty Values Policy no está configurado como skip_empty, - si la importación no se ejecutó como
Dry Run.
Select o multiselect muestra un error
Comprueba si el label de la opción en el CSV corresponde exactamente al label de la opción en Magento para el store view seleccionado.
La imagen no se importa
Comprueba:
- si el archivo existe en
pub/media/import/categories, - si la ruta en el CSV es correcta,
- si la extensión del archivo está admitida,
- si el atributo de imagen se ha marcado para la importación.
Insert indica que falta el padre
Comprueba parent_entity_id o parent_path. El padre debe existir en Magento o encontrarse antes en el archivo de importación.
Desinstalación del módulo
Si el módulo se instaló mediante Composer:
composer remove kowal/module-export-import-categoriesbin/magento setup:upgradebin/magento cache:flush
Antes de desinstalarlo, asegúrate de si el historial de importaciones puede eliminarse. El módulo crea la tabla:
kowal_export_import_categories_history