Buenos días.
Acudo a vosotros en busca de ayuda, ya que, estoy hecho un buen lio.
Tengo un prestashop 1.6.X.X desde hace muchos años y me he lanzado a actualizar a Prestashop 9 (la versión estable mas moderna).
He investigado mucho y estoy haciendo una instalación manual en un Subdominio de pruebas, ejemplo: dominio.es/presta9.
Ya tengo creado el prestashop 9 y funciona bien, pero ahora llega el problema.
Quiero importar los productos (con sus detalles y sus IMAGENES, no hace falta las categorias). He conseguido con consulta SQL exportar un CSV (porque no se puede importar bases de datos porque las estructuras son diferentes).
En el CSV he sacado nombres, descripción, precios, e imágenes (lo justo).
El problema está en las imágenes. He exportado la ruta de id de la imagen que es la que he podido sacar, pero NO la ruta donde se encuentra la imagen dentro del servidor, por lo que, el resultado es una importación de productos SIN IMAGENES (porque la ruta no es correcta, no apunta a la dirección exacta donde está la imagen físicamente).
Ejemplo1: Rutas en CSV producto con id 73 >>> /img/p/7/3/yyy.jpg
Ejemplo2: Rutas en CSV producto con id 752 >>> /img/p/7/5/2/zzz.jpg
Ejemplo1 ruta en servidor real: /img/p/1/7/3/yyy.jpg
Ejemplo2 ruta en servidor real: /img/p/8/0/1/1/2/yyy.jpg
Como se puede ver en los ejemplos que he puesto, la ruta del ID es totalmente diferente a la ruta real del archivo .jpg. No entiendo porque esto es así aunque imagino que es una forma que tiene prestashop para organizar carpetas. Por lo que, entiendo que necesito la ruta de imagen real, pero no se como se obtiene un CSV correcto con los datos necesarios desde el prestashop 1.6.X.X, con nombre, descripción, precios y rutas de imágenes reales.
¿Alguien tiene alguna solución para esto? ¿Alguien sabe como saber un CSV correcto para hacer importaciones masivas? Tengo conocimientos mínimos sobre estas cosas.
PD: Tengo unos 2000 productos activos y 4000 en total. Es una lista larga xD. Buscar cada imagen y modificar url manualmente lo tengo descartado.
Gracias por su ayuda.
Contenido solo visible a usuarios registrados
Hola.
PrestaShop 8 maneja las imágenes de forma diferente (usa un sistema más moderno con subcarpetas por defecto y no "legacy images" por defecto). La forma más limpia y compatible es exportar en CSV desde 1.6 con las URLs de las imágenes y luego importar en 8
Revisa esta consulta del foro donde tratamos el tema:
-> https://www.webempresa.com/foro/preguntas-sobre-prestashop/pasar-prestashop-16-a-17
Para la importación tienes que copiar la carpeta img/p e img/c en la nueva instalación
Una vez lo tengas copiado:
Regenera todas las miniaturas (muy importante):
Un saludo
Buenas tardes.
Al final he conseguido sacar las imagenes con un código SQL que me exporta las URL creando carpetas según el ID. EJ: ID_producto=8735.jpg > URL: /8/7/3/5/8735.jpg.
Ya he importado algunos productos de prueba, pero ahora tengo otro problema.
Ahora no puedo modificar el stock por ejemplo. Me salta error: ·[PrestaShop\PrestaShop\Core\Domain\Product\Exception\CannotUpdateProductException código 60]·
Para empeorar la cosa, he ido a Configuración de la tienda > Configuracion de Productos > Mostrar cantidades disponibles en la página del producto y lo he puesto en NO, para ver si mejoraba algo. Ahora la información de Stock a desaparecido y "Mostrar cantidades disponibles en la página del producto" no me permite volver a poner en SI.
¿Estoy haciendo algo mal? ¿saben si es un error comun o solo me paso a mi?
Gracias de antemano.
Hola Yongwei,
En este caso ese error suele aparecer cuando la importación dejó datos de stock incompletos/duplicados o cuando hay un fallo al guardar la configuración (caché/bug).
Accede a Parámetros avanzados → Rendimiento → Borrar caché de igual forma purbea acceder a tu webpanel y borra o rebombra las carpetas manualmente de var/cache/* que encuentra en el directorio donde tienes el sitio web
De igual forma revisa como esta la configuraci[on de la tienda, verifica que la opcion de Stock de productos esta activo
Si sigue igual, revisa el archivo var/logs/prod.log (o el error_log de tu cuenta de hosting) al intentar cambiar el stock, porque ahí saldrá la causa real del “código 60”.
Envianos que se muestra para revisarlo con mayor detalle.
Un Saludo
Buenos días.
En el logs solo he visto información de módulos obsoletos de prestashop (que he ignorado porque el prestashop es nuevo recién instalado desde 0) y algún otro de caches de cuando probé modo debug. Solo eran notificaciones.
Busque en internet y alguien dijo que actualizando mucho el navegador se podía activar lo de los productos y así lo hice. Ahora ya puedo poner stock y precio sin problemas, pero, ahora tengo otro problema.
No puedo crear categorias desde prestashop. Me da error: "Se ha producido un error inesperado. [PrestaShop\PrestaShop\Core\Domain\Category\Exception\CategoryConstraintException código 6]"
He revisado la estructura de (tabla)_category en base de datos y está correcta con el id_parent (raid e inicio). Si hago una consulta SQL me deja agregar categorías sin problemas y en el prestashop si se muestran como si estuviera bien, pero si intento agregar una desde el prestashop me da dicho error.
¿Puede ser que prestashop 9.0.3 aun no esté muy fino y tengo muchas bugs? ¿Debería borrarlo y crearlo de nuevo?
¿Debería irme a 8.2.4?
Si me pueden aconsejar se lo agradecería gracias.
Saludos.
Hola.
El error CategoryConstraintException code 6 en PrestaShop casi siempre está relacionado con problemas en la estructura de categorías raíz (Root category) o la categoría por defecto (Home/default).
.- Accede a phpMyAdmin
Ejecuta esta consulta:
SELECT id_category, id_parent, is_root_category, active, name
FROM ps_category
WHERE is_root_category = 1
OR id_category = 1
OR id_category = 2;
Lo normal debería ser:
.- id_category = 1 → Root category (is_root_category = 1, id_parent = 0)
.- id_category = 2 → Home (id_parent = 1, is_root_category = 0)
Si ves:
.- 0 filas con is_root_category = 1 -> ese es el problema principal
.- 2 o más filas con is_root_category = 1 -> también es problema
Crea manualmente la categoría raíz si no existe (o corrige la existente):
INSERT INTO ps_category (id_parent, is_root_category, active, date_add, date_upd)
VALUES (0, 1, 1, NOW(), NOW());
SET @new_root_id = LAST_INSERT_ID();
INSERT INTO ps_category_lang (id_category, id_shop, id_lang, name, link_rewrite, meta_title)
VALUES (@new_root_id, 1, 1, 'Root', 'root', 'Root'); -- ajusta id_shop e id_lang según tu tienda
Luego asigna como padre a la categoría Home (normalmente id 2):
UPDATE ps_category
SET id_parent = @new_root_id
WHERE id_category = 2; -- o el ID de tu Home
Una vez lo tengas, Vacía la Cache y lo pruebas.
Un Saludo
Buenos días.
La consulta no funciona y da error:
consulta SQL: Copiar 
SELECT id_category, id_parent, is_root_category, active, name
FROM ps_category
WHERE is_root_category = 1
OR id_category = 1
OR id_category = 2 LIMIT 0, 25
#1054 - No se reconoce la columna 'name' en SELECT
Creo que en prestashop 9 no existe columna Name en esa tabla.
He cambiado su consulta por esta otra:
SELECT c.id_category, c.id_parent, c.is_root_category, c.active, cl.name
FROM ps_category c
INNER JOIN ps_category_lang cl
ON c.id_category = cl.id_category
WHERE (c.is_root_category = 1 OR c.id_category IN (1,2))
AND cl.id_lang = 1
LIMIT 0, 25;
Y me ha dado el siguiente resultado:
| id_category | id_parent | is_root_category | active | name | |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | Raíz | |
| 2 | 1 | 1 | 1 | Inicio |
¿ve algo raro?
No se si en ligar de Raíz debería aparecer ROOT y ese es el problema o si hay algún dato distinto.
Puedo ver que is_root_category está al contrario de lo que me ha indicado, creo.
Gracias.
Hola.
El problema principal aquí es que la categoría raíz (is_root_category = 1) tiene ID 10, pero la categoría "Inicio" (Home, la que debería estar directamente debajo de la raíz) tiene id_parent = 1.
En una instalación estándar de PrestaShop:
Pero en tu caso:
Corrige el id_parent de la categoría "Inicio" (ID 2) para que apunte a la raíz real (ID 10):
UPDATE ps_category
SET id_parent = 10
WHERE id_category = 2;
Asegúrate de que no haya otra categoría con is_root_category = 1
SELECT * FROM ps_category WHERE is_root_category = 1;
Debería salir solo la ID 10. Si hay más de una, pon las demás a 0
Limpia la cache y lo revisas.
Si ves que sigues con el problema:
Haz la misma corrección también en ps_category_shop
UPDATE ps_category_shop
SET id_category = id_category -- dummy para forzar
WHERE id_category IN (2, 10);
Un Saludo
Al final he creado un prestashop nuevo y parece que ya funciona bien. No se que habrá pasado, quizás tocando algo de base de datos se había corrompido de alguna manera.
Para no volver a liarla con la nueva web. ¿Como puedo importar productos desde csv de prestashop 1.6?
¿Puedo importar solo algunos datos como nombre, descripción, cantidad, precio e imagenes? o ¿Tendría que hacerlo desde otro sitio?
Hola Yongwei.
¿Como puedo importar productos desde csv de prestashop 1.6?
Si no te quieres complicar la vida lo mejor es utilizar un Modulo:
Lo único que tienes que tener en cuenta son las imágenes, lo más común es que fallen. Sube primero todas las imágenes a la nueva tienda y luego pon las URLs en el CSV o usa el ID de imagen nuevo.
Cuando impartes el archivo revisa que todas las columnas estén relacionadas.
¿Puedo importar solo algunos datos como nombre, descripción, cantidad, precio e imagenes? o ¿Tendría que hacerlo desde otro sitio?
Si puedes importar las columnas que quieras, simplemente elimina las columnas que no quieres importar en el archivo CSV
Un saludo
Buenas tardes.
Una pregunta que no me ha quedado claro.
Si subo un CSV solo con Nombre, Descripción, Precio, cantidad e imagen.....¿que pasa con los campos que no subo en la base de datos?
No se si al subir solo algunos campos e "ignorar" otros campos, puedan quedar con problemas en la base de datos (por campos vacíos o nulos), no se si me explico.
Hola Yongwei
¿que pasa con los campos que no subo en la base de datos?
Nada grave, PrestaShop los trata así:
En resumen:
Un Saludo