Artículos

WhatsAppIntegration for Dolibarr Manual de instalación, configuración y uso

Envía presupuestos y facturas por WhatsApp directamente desde Dolibarr

La comunicación con los clientes ha cambiado. Hoy en día la mayoría de los clientes prefieren recibir sus presupuestos, facturas y documentación mediante WhatsApp antes que por correo electrónico.

WhatsAppIntegration for Dolibarr permite integrar WhatsApp directamente dentro de Dolibarr para enviar documentos con un solo clic, mantener conversaciones con los clientes y registrar automáticamente toda la actividad comercial dentro del ERP.

Entre sus principales ventajas destacan:

  • Envío individual de presupuestos y facturas.
  • Envíos masivos desde los listados de Dolibarr.
  • Chat integrado con los clientes.
  • Registro automático de las comunicaciones.
  • Compatible con WhatsApp Web y con proveedores API.
  • Integración completa con Dolibarr.

1. Instalación del módulo

Una vez descargado el módulo desde DoliStore o desde el proveedor correspondiente, acceda en Dolibarr a:

Inicio → Configuración → Módulos → Instalar módulo externo

Seleccione el fichero ZIP descargado y pulse Enviar archivo.

Cuando finalice la instalación, Dolibarr mostrará un mensaje indicando que el módulo ha sido instalado correctamente.

A continuación deberá activarlo desde el listado de módulos.


2. Activación del módulo

 Busque WhatsAppIntegration en el listado de módulos.

Pulse el interruptor para activarlo.

Una vez activado aparecerá el icono de configuración (⚙).

Pulse sobre él para acceder a la configuración del módulo.


3. Lea primero la documentación incluida

Todos los módulos de Dolibarr incluyen documentación en formato Markdown (.md).

En nuestro caso encontrará varios documentos importantes:

  • README.md
  • CONFIGURACION_CLIENTE.md
  • CONFIGURACION_SERVIDOR.md
  • changes.txt

Es recomendable leerlos antes de comenzar la configuración, ya que pueden contener información específica de la versión instalada.

Cada nueva versión puede incorporar nuevas funciones o modificar algunos parámetros.


4. Configuración previa de Dolibarr

Antes de comenzar a utilizar el módulo es necesario comprobar que Dolibarr permite descargar los documentos mediante enlaces públicos.

Acceda a:

Configuración → Otras configuraciones

Y compruebe que existen los siguientes parámetros:

MAIN_ENABLE_PUBLIC_PDF = 1
INVOICE_ALLOW_EXTERNAL_DOWNLOAD = 1
PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD = 1
ORDER_ALLOW_EXTERNAL_DOWNLOAD = 1

Estos parámetros permiten que el cliente pueda descargar el PDF mediante el enlace seguro enviado por WhatsApp.

No es necesario modificar otros parámetros del sistema.


5. Configuración del módulo

Una vez activado el módulo accederemos a su página de configuración.

Aquí encontraremos todos los parámetros necesarios.

Modo de funcionamiento

El módulo puede trabajar de dos formas:

WhatsApp Web

Ideal para pequeñas empresas.

No requiere contratar ninguna API.

El envío se realiza utilizando el navegador web y la sesión abierta de WhatsApp Web.


API Profesional

Recomendada para empresas que realizan muchos envíos.

Actualmente recomendamos Whapi.Cloud, por su excelente relación calidad/precio, estabilidad y facilidad de configuración.

Simplemente deberá introducir:

  • URL del servidor API
  • Token de autenticación
  • ID de la instancia

Todos estos datos son proporcionados por el proveedor de la API.


Webhook

El módulo genera automáticamente la URL del Webhook.

Esa dirección debe copiarse en el panel del proveedor API para que los mensajes recibidos puedan sincronizarse con Dolibarr.

No es necesario modificar dicha dirección.


Llave para chat multimedia

El módulo genera automáticamente una clave interna utilizada para validar el envío y recepción de archivos multimedia.

No suele ser necesario modificarla.


Plantillas de mensajes

Una de las funciones más útiles del módulo es la posibilidad de personalizar completamente los mensajes enviados.

Existen plantillas independientes para:

  • Facturas
  • Presupuestos
  • Acciones masivas

Dentro del mensaje pueden utilizarse variables como:

__CLIENTE__
__REF__
__TOTAL__
__USUARIO__
__EMPRESA__
__LINK__

Estas variables serán sustituidas automáticamente por los datos reales del documento en el momento del envío.

Por ejemplo:

Hola Javier.

Le enviamos la factura FA2607-00123 por importe de 245,00 €.

Puede descargarla desde el siguiente enlace:

https://...


Cola de envío

Si se realizan muchos envíos consecutivos, el módulo puede utilizar una cola asíncrona para evitar bloquear la interfaz de Dolibarr.

Esta opción es especialmente recomendable cuando se utilizan APIs profesionales.


6. Envío de una factura

Una vez configurado el módulo, enviar una factura resulta muy sencillo.

Abra cualquier factura validada.

En la parte inferior aparecerá un nuevo botón verde:

Enviar por WhatsApp

Al pulsarlo:

  • se genera automáticamente el PDF (si todavía no existe),
  • se crea el enlace seguro,
  • se prepara el mensaje,
  • se envía al cliente.

Todo el proceso se realiza en unos pocos segundos.


7. Envío masivo de facturas

Otra de las características más potentes del módulo es el envío masivo.

Desde el listado de facturas basta con:

  • seleccionar varias facturas,
  • elegir la acción Enviar por WhatsApp,
  • confirmar.

El sistema enviará todas las facturas seleccionadas utilizando la plantilla configurada.

Esta función resulta especialmente útil para empresas que generan un gran volumen de facturación.


8. Chat integrado con el cliente

Además del envío de documentos, el módulo incorpora un sistema de conversación integrado.

Desde la ficha del tercero aparecerá el botón:

WhatsApp con el cliente

Desde esta ventana podremos:

  • consultar conversaciones anteriores,
  • enviar nuevos mensajes,
  • adjuntar archivos,
  • mantener toda la comunicación centralizada.

De esta forma no será necesario utilizar WhatsApp Web en una ventana independiente.

Toda la conversación queda accesible desde Dolibarr.


9. Registro automático de toda la actividad

Cada envío realizado queda registrado automáticamente.

El módulo crea eventos dentro de Dolibarr para que cualquier usuario autorizado pueda consultar posteriormente:

  • fecha del envío,
  • usuario que realizó la operación,
  • documento enviado,
  • conversación mantenida.

Esto permite mantener un historial completo de las comunicaciones comerciales.


10. Ventajas del módulo

WhatsAppIntegration ha sido diseñado para integrarse completamente con Dolibarr sin modificar su funcionamiento habitual.

Entre sus principales ventajas destacan:

  • Integración 100 % nativa.
  • Instalación muy sencilla.
  • Compatible con varias versiones de Dolibarr.
  • Compatible con WhatsApp Web.
  • Compatible con APIs profesionales.
  • Registro automático de las comunicaciones.
  • Chat integrado.
  • Envío individual.
  • Envío masivo.
  • Plantillas personalizables.
  • Descarga segura de documentos mediante enlaces protegidos.
  • Preparado para seguir incorporando nuevas funcionalidades en futuras versiones.

Conclusión

WhatsAppIntegration for Dolibarr convierte a WhatsApp en un canal de comunicación completamente integrado dentro del ERP. En lugar de alternar entre Dolibarr y el teléfono móvil o WhatsApp Web, los usuarios pueden enviar presupuestos, facturas y mensajes directamente desde la aplicación, manteniendo un historial unificado de todas las interacciones con cada cliente.

Tanto si se trata de un pequeño negocio que utiliza WhatsApp Web como de una empresa que necesita automatizar miles de envíos mediante una API profesional, el módulo ofrece una solución flexible, rápida y sencilla de configurar. Su integración con el sistema documental, el registro automático de eventos y el soporte para envíos individuales y masivos lo convierten en una herramienta que ahorra tiempo, mejora la atención al cliente y profesionaliza las comunicaciones comerciales.

Más información

Integra WhatsApp con Dolibarr y acelera tus ventas: descubre WhatsAppIntegration

En la actualidad, WhatsApp se ha convertido en el principal canal de comunicación entre empresas y clientes. Cada día se envían millones de mensajes para solicitar presupuestos, confirmar pedidos, resolver incidencias o realizar el seguimiento de compras. Sin embargo, muchas empresas continúan gestionando estas conversaciones de forma manual, copiando documentos, buscando números de teléfono o descargando facturas para volver a enviarlas.

Este proceso no solo consume tiempo, sino que aumenta el riesgo de errores y dificulta el seguimiento de las comunicaciones.

En ExtreHost creemos que un ERP moderno debe facilitar el trabajo diario, no complicarlo. Por ello hemos desarrollado WhatsAppIntegration para Dolibarr, un módulo profesional que integra WhatsApp directamente en el flujo de trabajo del ERP, permitiendo enviar presupuestos y facturas sin abandonar Dolibarr.

¿Qué es WhatsAppIntegration?

WhatsAppIntegration es un módulo diseñado específicamente para Dolibarr ERP/CRM que permite enviar documentación comercial directamente desde la ficha del cliente o mediante acciones masivas desde los listados.

El objetivo es sencillo: reducir el tiempo necesario para comunicarse con los clientes y mejorar la trazabilidad de todas las comunicaciones comerciales.

El usuario ya no necesita descargar un PDF, abrir WhatsApp, buscar el contacto y adjuntar manualmente el documento. Todo el proceso puede realizarse desde el propio ERP.

Principales funcionalidades

El módulo incorpora una serie de funciones pensadas para adaptarse tanto a pequeñas empresas como a organizaciones con un elevado volumen de documentos.

Entre sus características destacan:

  • Envío de presupuestos directamente desde Dolibarr.
  • Envío de facturas en segundos.
  • Compatibilidad con WhatsApp Web y con proveedores API.
  • Acciones masivas para enviar múltiples documentos de una sola vez.
  • Registro automático de las comunicaciones en la agenda de Dolibarr.
  • Trazabilidad completa de los envíos.
  • Personalización de mensajes mediante plantillas.
  • Integración transparente con el flujo habitual de trabajo del ERP.

Menos tiempo en tareas repetitivas

Uno de los mayores beneficios de esta integración es la automatización.

En muchas empresas, el envío de un presupuesto implica varios pasos:

  1. Generar el PDF.
  2. Descargarlo al ordenador.
  3. Abrir WhatsApp.
  4. Buscar el cliente.
  5. Adjuntar el documento.
  6. Escribir un mensaje.
  7. Enviarlo.
  8. Registrar que se ha realizado el envío.

Con WhatsAppIntegration, este proceso se simplifica enormemente y puede completarse desde la propia interfaz de Dolibarr.

Cuando una empresa envía decenas o incluso cientos de documentos cada semana, el ahorro de tiempo es considerable.

Comunicación más profesional

El módulo también ayuda a mantener una imagen más profesional.

Los mensajes pueden personalizarse utilizando plantillas, incorporando automáticamente datos del cliente, referencias del documento o enlaces al PDF correspondiente.

De esta forma todas las comunicaciones mantienen un formato homogéneo y se reduce el riesgo de errores derivados de la edición manual de cada mensaje.

Acciones masivas para ahorrar tiempo

Una de las funciones más apreciadas por nuestros clientes es el envío masivo.

Desde los listados de presupuestos o facturas es posible seleccionar múltiples documentos y enviarlos consecutivamente sin necesidad de abrir cada uno de ellos.

Esta característica resulta especialmente útil para empresas que trabajan diariamente con un elevado volumen de clientes o realizan campañas periódicas de comunicación.

Compatible con distintos modos de envío

Cada empresa tiene necesidades diferentes.

Por ello WhatsAppIntegration ofrece compatibilidad tanto con WhatsApp Web como con distintos proveedores de API, permitiendo elegir la solución que mejor se adapte al volumen de envíos, al presupuesto disponible o a los requisitos técnicos de cada organización.

Integración completa con Dolibarr

 

A diferencia de soluciones externas que obligan a cambiar constantemente entre aplicaciones, WhatsAppIntegration se integra directamente en Dolibarr respetando la filosofía modular del ERP.

Esto permite mantener toda la información centralizada y facilita el seguimiento histórico de las comunicaciones realizadas con cada cliente.

¿Para quién está pensado?

El módulo resulta especialmente útil para:

  • Empresas de instalación y mantenimiento.
  • Asesorías y despachos profesionales.
  • Distribuidores y mayoristas.
  • Empresas de servicios.
  • Comercios B2B.
  • Autónomos que trabajan habitualmente con presupuestos y facturas.

Cualquier organización que utilice Dolibarr y mantenga una comunicación frecuente con sus clientes mediante WhatsApp puede beneficiarse de esta integración.

Desarrollado por ExtreHost

En ExtreHost no solo ofrecemos servicios de alojamiento y administración de servidores. También desarrollamos módulos profesionales para Dolibarr, integraciones a medida y soluciones orientadas a mejorar la productividad de las empresas.

WhatsAppIntegration es el resultado de esa experiencia, con un desarrollo centrado en la facilidad de uso, la estabilidad y la integración con los procesos habituales de trabajo.

Nuestro objetivo es sencillo: que puedas dedicar menos tiempo a tareas repetitivas y más tiempo a atender a tus clientes.

Si utilizas Dolibarr y quieres integrar WhatsApp en tu flujo de trabajo diario, WhatsAppIntegration puede convertirse en una de las herramientas más útiles para aumentar la productividad de tu empresa.

Más información sobre el módulo y sus características está disponible en DoliStore.

🏡 En Plasencia, Apartamentos Bambú: comodidad, tranquilidad y una ubicación perfecta para disfrutar de la estancia

Cuando buscamos alojamiento para unos días de descanso o una escapada, normalmente queremos algo más que un simple lugar donde dormir. Queremos un espacio donde sentirnos cómodos, donde todo esté cuidado y donde la estancia resulte agradable desde el primer momento. Precisamente esa es la sensación que transmiten los Apartamentos Bambú, un alojamiento que combina comodidad, buena ubicación y una relación calidad-precio realmente atractiva.

Desde que uno llega, se percibe que se trata de un lugar pensado para el descanso. Los apartamentos están diseñados para ofrecer una experiencia acogedora, con espacios bien organizados y un ambiente tranquilo que invita a desconectar del ritmo cotidiano. No es el típico alojamiento impersonal: aquí se nota que se ha puesto atención en los detalles para que el huésped se sienta cómodo durante toda la estancia.

Uno de los aspectos que más destacan quienes se alojan en Apartamentos Bambú es su excelente ubicación. Esto permite disfrutar de la zona con facilidad, moverse con comodidad y tener a mano servicios, lugares de interés y espacios donde pasear o relajarse. La localización es ideal tanto para quienes quieren explorar el entorno como para quienes simplemente buscan tranquilidad y descanso.

Guía de Migración Quirúrgica: Cómo Rescatar o Actualizar tu PrestaShop con Éxito

Cuando una actualización automática de PrestaShop falla o una instalación empieza a dar errores inexplicables (como el bucle de redirecciones 302 o errores de Symfony), la solución más robusta no es reparar, sino trasplantar.

Esta técnica, conocida como migración quirúrgica, consiste en instalar un PrestaShop limpio y mover únicamente el "corazón" de tu negocio (productos, categorías y clientes). Es el método definitivo tanto para reparar instalaciones dañadas como para realizar una actualización mayor sin arrastrar errores del pasado.


1. Preparación del Entorno

Antes de tocar la base de datos, prepara el nuevo destino:

  1. Instalación Limpia: Instala la versión de PrestaShop deseada en una carpeta o base de datos nueva.

  2. Verificación: Asegúrate de que el panel de administración (Backoffice) funciona perfectamente.

  3. Copia de archivos: Mueve las carpetas de imágenes y archivos de usuario desde la instalación antigua a la nueva:

En el caso de que sea una actualización NUEVA..

    • /img/ (Fotos de productos y categorías).

    • /download/ y /upload/.

 

En el caso de que sea una ACTUALIZACIÓN ENTRE IGUALES VERSIONES.

 

  • /img/: Contiene todas las fotos de productos, categorías, fabricantes y logos. Es vital.

  • /download/: Si vendes productos virtuales.

  • /upload/: Archivos que los clientes hayan subido.

  • /themes/tu-tema-actual/: La carpeta de tu plantilla.

  • /modules/: Aquí hay un matiz. Copia solo los módulos que hayas comprado o personalizado. No copies los módulos nativos (ps_...), deja que la instalación limpia de la 8.2 instale sus versiones actualizadas.

  • /mails/: Si personalizaste los correos de envío, pedidos, etc.

 


2. El Script de Extracción (Exportación)

Para evitar el "ruido" de configuraciones corruptas, utilizaremos mysqldump desde la terminal (SSH). Este comando extraerá solo las tablas vitales del catálogo, atributos, clientes y pedidos.

Ejecuta este comando en el servidor de la instalación antigua:

 (Servidor de Origen) 

mysqldump -u usuario -p base_de_datos \
ps_product ps_product_lang ps_product_shop ps_product_attribute \ 
ps_product_attribute_combination ps_product_attribute_lang ps_product_attribute_shop \
ps_category ps_category_lang ps_category_shop ps_category_product \
ps_attribute ps_attribute_group ps_attribute_group_lang ps_attribute_lang \
ps_feature ps_feature_lang ps_feature_product ps_feature_value ps_feature_value_lang \
ps_stock_available ps_manufacturer ps_manufacturer_lang ps_manufacturer_shop \
ps_image ps_image_lang ps_image_shop \
ps_customer ps_customer_group ps_address ps_group ps_group_lang \
ps_orders ps_order_detail ps_order_history \
ps_image_type ps_meta ps_shop ps_shop_url ps_shop_group ps_lang ps_lang_shop \
ps_currency ps_country ps_country_lang \
ps_cms ps_cms_lang ps_cms_shop \
ps_linksmenutop ps_linksmenutop_lang \
ps_homeslider ps_homeslider_slides ps_homeslider_slides_lang \
ps_configuration \
> migracion_esencial.sql
sed -i 's/viejo-dominio.com/nuevo-dominio.com/g' migracion_esencial.sql
 

Nota: Sustituye usuario y base_de_datos por tus credenciales reales. El archivo resultante migracion_esencial.sql contendrá toda la inteligencia de tu negocio.


3. El Script de Restauración (Importación)

Antes de importar, debemos preparar la base de datos de destino. La nueva instalación ya tiene tablas con datos de ejemplo; si importamos encima, los IDs chocarán.

Paso A: Limpiar tablas de destino

Crea un archivo llamado limpiar_destino.sql con el siguiente contenido y ejecútalo en la base de datos nueva:

 (Servidor de destino) 

-- Desactivar revisión de llaves foráneas para poder vaciar tablas
SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE TABLE ps_product; TRUNCATE TABLE ps_product_lang; TRUNCATE TABLE ps_product_shop;
TRUNCATE TABLE ps_product_attribute; TRUNCATE TABLE ps_product_attribute_combination;
TRUNCATE TABLE ps_product_attribute_lang; TRUNCATE TABLE ps_product_attribute_shop;
TRUNCATE TABLE ps_category; TRUNCATE TABLE ps_category_lang; TRUNCATE TABLE ps_category_shop;
TRUNCATE TABLE ps_category_product; TRUNCATE TABLE ps_attribute; TRUNCATE TABLE ps_attribute_group;
TRUNCATE TABLE ps_attribute_group_lang; TRUNCATE TABLE ps_attribute_lang;
TRUNCATE TABLE ps_feature; TRUNCATE TABLE ps_feature_lang; TRUNCATE TABLE ps_feature_product;
TRUNCATE TABLE ps_feature_value; TRUNCATE TABLE ps_feature_value_lang;
TRUNCATE TABLE ps_customer; TRUNCATE TABLE ps_address; TRUNCATE TABLE ps_orders;
TRUNCATE TABLE ps_order_detail;

SET FOREIGN_KEY_CHECKS = 1;

Paso B: Importar los datos

 (Servidor de destino) 

Ahora, inyecta el archivo que exportamos anteriormente en la base de datos nueva:

# Importar los datos esenciales a la nueva tienda
mysql -u usuario -p base_de_datos_nueva < migracion_esencial.sql

4. El "Ancla" de Seguridad: La Cookie Key

Para que las contraseñas de los clientes importados sigan funcionando, debes sincronizar la clave de cifrado.

  1. Busca en tu instalación antigua el archivo app/config/parameters.php.

  2. Localiza el valor de 'cookie_key'.

  3. Pégalo en el archivo app/config/parameters.php de la nueva instalación.


5. Pasos Post-Migración

Una vez completado el trasplante, realiza estas tres acciones en el nuevo panel de administración:

  1. Regenerar .htaccess: Ve a Parámetros de la Tienda > Tráfico & SEO y pulsa "Guardar".

  2. Limpiar Caché: En Parámetros Avanzados > Rendimiento, limpia la caché de Symfony.

  3. Indexar Productos: En Parámetros de la Tienda > Buscar, reconstruye el índice para que el buscador de la web encuentre los productos recién importados.


5. El Proceso de Integración (Post-Trasplante)

Una vez que hayas volcado tus carpetas antiguas (/img, /modules, /themes, /mails) sobre la instalación limpia, el sistema está en un estado "híbrido". Sigue este orden exacto para consolidar la migración:

  1. Sincronizar Identidad: Copia el cookie_key del archivo app/config/parameters.php antiguo al nuevo. Sin esto, las contraseñas importadas no funcionarán.

  2. Limpieza e Importación SQL: Ejecuta el script de TRUNCATE y luego importa tu migracion_esencial.sql.

  3. Regenerar el motor de rutas: Ve a Parámetros de la tienda > Tráfico & SEO, desactiva las "URLs amigables", guarda, y vuelve a activarlas. Esto reconstruye el archivo .htaccess.

  4. Reconstruir el índice de búsqueda: Ve a Parámetros de la tienda > Buscar y pulsa en "Añadir los productos que faltan al índice".


6. Script de Comprobación Final (Salud del Sistema)

Para asegurarte de que la migración ha sido exitosa y no quedan "cabos sueltos", hemos preparado este script de verificación. Puedes ejecutar estas consultas SQL para detectar posibles errores de integridad:

-- 1. Verificar si hay productos sin categorías (Productos huérfanos)
SELECT COUNT(*) FROM ps_product p 
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) 
WHERE cp.id_category IS NULL;

-- 2. Verificar si hay imágenes que no tienen asignado un producto físico
SELECT COUNT(*) FROM ps_image i 
LEFT JOIN ps_product p ON (i.id_product = p.id_product) 
WHERE p.id_product IS NULL;

-- 3. Comprobar que los clientes tienen su dirección asociada
SELECT c.email, a.alias FROM ps_customer c 
LEFT JOIN ps_address a ON (c.id_customer = a.id_customer) 
WHERE a.id_address IS NULL;

Verificación de Permisos (Terminal SSH)

Finalmente, ejecuta este comando para asegurar que PrestaShop tiene permisos de escritura en las carpetas que acabas de mover:

# Comprobar permisos de escritura en carpetas críticas
find img/ modules/ themes/ mails/ -type d -not -perm 755
find img/ modules/ themes/ mails/ -type f -not -perm 644

Consejo final de ExtreHost: Si tras la migración ves una pantalla en blanco, activa el Modo Depuración en config/defines.inc.php cambiando PS_MODE_DEV a true. Esto te dirá exactamente qué módulo está causando el conflicto en la nueva versión.


Resumen para el Administrador

  • Archivos movidos: OK.

  • Base de Datos inyectada: OK.

  • Cookie Key sincronizada: OK.

  • URLs e Índices regenerados: OK.

¡Tu tienda ahora es una instalación limpia, rápida y libre de errores heredados!


Este método es el más limpio y seguro para dejar atrás errores críticos de sistema. Al tratar los datos como piezas modulares, garantizas que la nueva instalación nazca sana y optimizada.

 


Situación inicial - Tras el primer paso.

La tienda original funcionaba correctamente. La tienda clonada también arrancaba, cargaba productos, tema, páginas y estructura general. Sin embargo, al abrir el menú “Productos”, la navegación no coincidía con la original.

A simple vista parecía un problema de categorías no clonadas, pero al revisar la base de datos se comprobó que las categorías sí existían. Es decir: el problema no era la ausencia de datos, sino la forma en la que PrestaShop los estaba utilizando en la tienda clonada.

Ese tipo de incidencia es muy habitual en migraciones reales. La información está en base de datos, pero faltan asociaciones internas o configuraciones complementarias que permiten que el front-end la represente correctamente.


Paso 1. Confirmar si las categorías existen realmente en destino

Lo primero fue comprobar si las categorías del menú estaban presentes en la base de datos de la tienda clonada.

Consulta usada:

SELECT c.id_category, cl.name, cs.id_shop
FROM ps_category c
JOIN ps_category_lang cl ON c.id_category = cl.id_category
LEFT JOIN ps_category_shop cs ON c.id_category = cs.id_category
WHERE cl.id_lang = 1
ORDER BY c.id_category;

Con esta verificación se confirmó que categorías como:

  • Productos
  • Productos Sanitarios
  • Cuidado Capilar
  • Complemento Alimenticio
  • Bebés Y Mamás
  • Accesorios del Bebé
  • Alimentación del Bebé

y muchas otras, ya existían en la base de datos destino.

Conclusión de este paso: las categorías estaban clonadas. El problema no era su ausencia.


Paso 2. Comprobar si el menú estaba siendo gestionado por el módulo correcto

Cuando una categoría existe pero no aparece correctamente en el menú, el siguiente paso es revisar el sistema que genera esa navegación.

En este caso se revisó si el módulo responsable era ps_mainmenu o algún sistema de menú propio del tema.

Primero se buscó la configuración del menú en ps_configuration, pero la consulta inicial no devolvió resultados:

SELECT *
FROM ps_configuration
WHERE name LIKE '%MAINMENU%';

Esto no significaba necesariamente que el menú no existiera, sino que el módulo podía guardar la configuración con otro nombre.

Después se comprobó directamente qué módulos de menú estaban instalados y en qué hook estaban cargados.

Consulta útil:

SELECT id_module, name, active
FROM ps_module
WHERE name LIKE '%menu%'
   OR name LIKE '%mega%'
   OR name LIKE '%nav%'
   OR name LIKE '%top%'
ORDER BY name;

En la tienda origen apareció ps_mainmenu, y además se confirmó que estaba asociado al hook correcto:

SELECT m.name AS modulo, h.name AS hook, hm.position
FROM ps_hook_module hm
JOIN ps_module m ON hm.id_module = m.id_module
JOIN ps_hook h ON hm.id_hook = h.id_hook
WHERE h.name IN ('displayTop', 'displayNav1', 'displayNav2', 'displayHeader', 'displayHome')
ORDER BY h.name, hm.position;

Resultado relevante:

  • ps_mainmenu en displayTop

En la tienda destino también existía ps_mainmenu, estaba activo y correctamente enganchado a displayTop.

Conclusión de este paso: el módulo del menú sí estaba presente y cargado correctamente.


Paso 3. Confirmar que el menú estaba apuntando a la categoría correcta

El siguiente paso fue revisar la configuración real del módulo. En PrestaShop, ps_mainmenu no siempre guarda sus valores con el nombre “MAINMENU”, sino frecuentemente con claves relacionadas con BLOCKTOPMENU.

Consulta usada:

SELECT id_configuration, id_shop_group, id_shop, name, value
FROM ps_configuration
WHERE name LIKE '%BLOCKTOPMENU%'
ORDER BY name, id_shop_group, id_shop;

Resultado clave:

MOD_BLOCKTOPMENU_ITEMS = CMS_CAT1,CAT2,LNK1,LNK2,LNK3

Esto significaba que el menú sí estaba configurado para incluir:

  • una categoría CMS,
  • la categoría CAT2 (Productos),
  • varios enlaces personalizados.

Por tanto, el problema no estaba en que ps_mainmenu apuntara a una categoría equivocada. El menú estaba bien configurado para cargar Productos.

Conclusión de este paso: el módulo sí sabía qué categoría debía mostrar.


Paso 4. Verificar la jerarquía real del árbol de categorías

Cuando el módulo, la categoría principal y la configuración son correctos, el siguiente punto a revisar es el árbol real de categorías: padres, hijos, niveles y profundidad.

Consulta usada:

SELECT c.id_category, c.id_parent, c.level_depth, c.nleft, c.nright, c.active, cl.name
FROM ps_category c
LEFT JOIN ps_category_lang cl 
  ON c.id_category = cl.id_category AND cl.id_lang = 1
ORDER BY c.id_category;

Después, para centrarse solo en las descendientes de Productos, se utilizó una consulta más precisa:

SELECT c.id_category, c.id_parent, c.level_depth, cl.name
FROM ps_category c
JOIN ps_category_lang cl 
  ON c.id_category = cl.id_category AND cl.id_lang = 1
WHERE c.nleft > (
    SELECT nleft FROM ps_category WHERE id_category = 2
)
AND c.nright < (
    SELECT nright FROM ps_category WHERE id_category = 2
)
ORDER BY c.nleft;

Esto permitió confirmar que la jerarquía existía y era coherente. Por ejemplo:

  • Productos Sanitarios colgaba de Productos
  • Bebés Y Mamás colgaba de Productos
  • Accesorios del Bebé colgaba de Bebés Y Mamás
  • Alimentación del Bebé colgaba de Bebés Y Mamás
  • Biberones, Tetinas y Vajillas colgaban de Accesorios Alimentación

Conclusión de este paso: el árbol de categorías estaba bien definido.


Paso 5. Revisar la categoría raíz y la categoría de inicio

En una clonación de PrestaShop es fundamental comprobar que la tienda mantiene correctamente sus referencias internas a la categoría raíz y a la categoría de inicio.

Consulta usada:

SELECT name, value
FROM ps_configuration
WHERE name IN (
  'PS_ROOT_CATEGORY',
  'PS_HOME_CATEGORY',
  'PS_SHOP_DEFAULT'
);

Resultado:

  • PS_HOME_CATEGORY = 2
  • PS_ROOT_CATEGORY = 1
  • PS_SHOP_DEFAULT = 1

Estos valores eran coherentes con la estructura existente. Por tanto, el problema tampoco estaba ahí.

Conclusión de este paso: la raíz de catálogo era correcta.


Paso 6. Localizar el fallo real: asociaciones faltantes en ps_category_group

Una vez descartados los problemas de menú, de árbol, de jerarquía y de configuración base, quedaba revisar una parte que a menudo se pasa por alto: la asociación de categorías con grupos de clientes.

En PrestaShop, una categoría puede existir, tener padre correcto y estar incluida en el menú, pero si no está asociada a los grupos adecuados, el front-end puede no mostrarla correctamente.

Consulta usada sobre las subcategorías:

SELECT cg.id_category, cg.id_group, cl.name
FROM ps_category_group cg
JOIN ps_category_lang cl
  ON cg.id_category = cl.id_category AND cl.id_lang = 1
WHERE cg.id_category IN (10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33)
ORDER BY cg.id_category, cg.id_group;

En destino, esta consulta no devolvió nada.

Eso fue el punto decisivo.

La categoría principal Productos sí tenía grupos asignados, pero todas sus hijas y descendientes carecían de asociaciones en ps_category_group. En consecuencia, el menú principal podía mostrar la categoría padre, pero no construir correctamente toda la navegación secundaria y profunda.

Conclusión de este paso: el fallo real no era el menú, sino la falta de asociaciones de las subcategorías con los grupos de clientes.


Paso 7. Aplicar la corrección mínima y segura

En una migración quirúrgica no se cambia todo. Se corrige únicamente lo que falta.

Como la categoría 2 = Productos ya tenía los grupos correctos, lo más limpio era hacer que todas sus descendientes heredaran esos mismos grupos.

Consulta aplicada en destino:

INSERT IGNORE INTO ps_category_group (id_category, id_group)
SELECT hijos.id_category, grupos.id_group
FROM ps_category AS hijos
JOIN ps_category AS padre ON padre.id_category = 2
JOIN ps_category_group AS grupos ON grupos.id_category = 2
WHERE hijos.nleft > padre.nleft
  AND hijos.nright < padre.nright;

Esta consulta hace exactamente lo necesario:

  • localiza todas las categorías descendientes de Productos,
  • toma los grupos ya asignados a la categoría padre,
  • y los replica solo donde faltan.

Sin sobreescribir nada. Sin tocar categorías ajenas. Sin romper lo que ya funciona.

Ese es el espíritu correcto de una migración quirúrgica.


Paso 8. Validar el resultado

Tras aplicar la corrección, se volvió a comprobar la relación entre categorías y grupos.

Consulta de validación:

SELECT c.id_category, c.id_parent, cl.name,
       GROUP_CONCAT(cg.id_group ORDER BY cg.id_group SEPARATOR ',') AS grupos
FROM ps_category c
JOIN ps_category_lang cl 
  ON c.id_category = cl.id_category AND cl.id_lang = 1
LEFT JOIN ps_category_group cg 
  ON c.id_category = cg.id_category
JOIN ps_category p ON p.id_category = 2
WHERE c.nleft > p.nleft
  AND c.nright < p.nright
GROUP BY c.id_category, c.id_parent, cl.name
ORDER BY c.nleft;

Después de la corrección, todas las categorías descendientes de Productos pasaron a quedar correctamente asociadas a los grupos requeridos, y el menú recuperó su comportamiento esperado.

En ese momento, tanto la tienda original como la clonada mostraban ya la misma estructura funcional en el menú de categorías.


Paso 9. Limpiar caché y comprobar el front-end

Como en cualquier intervención de PrestaShop, una vez ajustadas asociaciones o configuraciones internas, es imprescindible vaciar caché.

Dependiendo del entorno, esto puede hacerse desde el panel o directamente sobre el sistema de archivos.

En entornos gestionados por consola, suele ser recomendable limpiar:

rm -rf var/cache/prod/*
rm -rf var/cache/dev/*

Después de ello, se verificó el resultado directamente en el front-end comparando ambas tiendas.

El menú Productos de la tienda clonada volvió a mostrar correctamente toda la estructura de categorías y subcategorías, ya no solo las primeras visibles, sino también niveles más profundos como:

  • Bebés Y Mamás
  • Accesorios del Bebé
  • Accesorios Baño
  • Esponjas
  • Termómetro
  • Chupetes
  • Cadenitas
  • Látex
  • Silicona
  • Juguetes
  • Alimentación del Bebé
  • Biberones
  • Tetinas
  • Vajillas
  • 0-6 Meses
  • 6-12 Meses
  • 12-18 Meses
  • Carne

Resultado final: el menú quedó alineado con la tienda origen.


Qué enseña este caso real

Este caso demuestra una lección importante: en PrestaShop, clonar bien no significa únicamente copiar datos visibles.

Una migración profesional exige revisar también:

  • configuración de módulos,
  • hooks activos,
  • categorías raíz,
  • relaciones jerárquicas,
  • asociaciones a tienda,
  • asociaciones a grupos,
  • caché y comportamiento final en front-end.

Muchas incidencias no se deben a que falten productos o categorías, sino a que faltan relaciones internas que hacen posible que la tienda interprete esos datos correctamente.

En este caso, el catálogo existía. El menú también. La estructura jerárquica también. Lo que faltaba era una pieza menos visible, pero decisiva: la tabla ps_category_group.


Conclusión

La diferencia entre una clonación superficial y una migración quirúrgica está precisamente ahí.

Una clonación superficial deja una tienda que “parece funcionar”.
Una migración quirúrgica deja una tienda que funciona de verdad.

El proceso correcto no consiste en tocar módulos al azar ni en rehacer el menú desde cero sin entender qué pasa. Consiste en:

  1. comprobar si los datos existen,
  2. identificar qué elemento los consume,
  3. verificar si las relaciones internas son correctas,
  4. corregir solo lo que falta,
  5. validar el resultado final comparando origen y destino.

Cuando se trabaja así, incluso incidencias aparentemente complejas, como la pérdida parcial del menú de categorías tras un clonado, pueden resolverse de forma precisa, segura y sin romper nada de lo que ya estaba bien.


Si tu tienda PrestaShop ha sido clonada, migrada o actualizada y detectas fallos como menús incompletos, categorías invisibles, módulos que no cargan igual o comportamientos distintos entre origen y destino, no siempre hace falta rehacer toda la instalación. Ponte en contacto con nosotros.

En muchos casos, una revisión técnica precisa permite localizar el punto exacto del fallo y reconstruir únicamente lo necesario.

Ese es el objetivo de una migración quirúrgica: rescatar la tienda, conservar lo valioso y devolverle un funcionamiento estable, limpio y coherente.


¿Te ha servido esta guía? En ExtreHost recomendamos siempre realizar una copia de seguridad completa antes de ejecutar scripts SQL. ¡Suerte con tu migración!

Firefox Nightly se vuelve serio en entornos RPM: Mozilla apuesta por los administradores Linux

Durante años, Firefox Nightly ha sido terreno casi exclusivo de desarrolladores inquietos y testers avanzados. Instalaciones manuales, binarios descargados a mano, perfiles separados y actualizaciones poco integradas con el sistema. Todo muy nightly, sí… pero poco práctico en entornos profesionales.

Eso acaba de cambiar.

Mozilla ha dado un paso clave: repositorio RPM oficial para Firefox Nightly, pensado específicamente para distribuciones basadas en RPM como Fedora, RHEL, CentOS Stream u openSUSE. Y esto no es un simple detalle técnico: es una señal clara de hacia dónde quiere moverse Mozilla en Linux.


Nightly, pero con mentalidad de producción

Firefox Nightly sigue siendo lo que siempre ha sido:
la versión más avanzada del navegador, donde aterrizan primero las nuevas APIs, los cambios en el motor, las mejoras de rendimiento y las herramientas experimentales.

La diferencia ahora está en cómo se integra:

  • Instalación y actualizaciones nativas vía DNF o Zypper
  • Sin descargas manuales ni scripts externos
  • Integración limpia con el sistema
  • Convivencia sin conflictos con Firefox estable o ESR

En otras palabras: Nightly deja de ser un experimento aislado y empieza a comportarse como un paquete de sistema serio.

Para quienes administramos servidores, escritorios corporativos o entornos de desarrollo, esto importa (y mucho).

ExtreHost os desea una Feliz Navidad.

Con nuestro más sincero deseo, a clientes y amigos.

¿Necesitas una nueva web profesional en WordPress? En ExtreHost lo hacemos realidad

En ExtreHost ayudamos a empresas y organizaciones a renovar su presencia digital con páginas web modernas, accesibles y totalmente funcionales. Si estás pensando en lanzar una nueva web para tu negocio o modernizar la que ya tienes, esta propuesta es para ti.

🔗 Contácta con nosotros.

✔️ ¿Qué incluye nuestra propuesta?

En cada proyecto, nos comprometemos a ofrecerte un servicio completo y personalizado que te permita centrarte en tu negocio mientras nosotros nos encargamos de lo demás. Esto es lo que puedes esperar al trabajar con nosotros:

  • Diseño atractivo y moderno, adaptado a tu imagen de marca y fácil de usar para tus visitantes.

  • Maquetación profesional de todas las páginas necesarias para tu sitio, con especial cuidado en la jerarquía de la información.

  • Optimización para móviles y tablets, garantizando una experiencia fluida en cualquier dispositivo.

  • Accesibilidad real, cumpliendo los estándares necesarios para personas con discapacidad visual (WCAG 2.1 AA o superior).

  • Migración de contenido desde tu web actual o desde otros formatos si es necesario (textos, artículos, imágenes, etc.).

  • Multilingüe, si lo necesitas, gestionamos sitios en varios idiomas respetando URLs y estructura de navegación.

  • Velocidad y rendimiento optimizados, para que tu web cargue rápido y sin fallos.

  • Panel de administración claro y sencillo, para que puedas gestionar tu sitio de forma autónoma si lo deseas.

  • Asesoramiento continuo, desde el primer contacto hasta después de publicada la web.

🔧 Cómo depurar una web que va lenta usando las herramientas del navegador (Firefox, Chrome y Edge)

Depurar una web no requiere herramientas externas costosas. Los navegadores modernos como Firefox, Chrome y Edge ofrecen potentes suites de desarrollo integradas. Saber usarlas es imprescindible para detectar y solucionar errores de forma rápida, eficaz y profesional.

Cuando una página web no funciona como debería —ya sea por errores de estilo, JavaScript roto o tiempos de carga lentos—, una de las formas más rápidas y potentes de averiguar qué ocurre es usando las herramientas de desarrollo que ofrecen los navegadores modernos. En este artículo te explicamos cómo hacerlo en Firefox, Chrome y Microsoft Edge, comenzando por Firefox, nuestra opción preferida para desarrolladores exigentes.

🦊 Firefox: potencia y precisión para desarrolladores web

Firefox es uno de los navegadores más completos a nivel de herramientas de desarrollo. Para abrirlas, pulsa:

  • F12, o
  • Ctrl + Shift + I (Windows/Linux), o
  • Cmd + Option + I (macOS)

Una vez abiertas, verás distintas pestañas. Estas son las más importantes:

El Nuevo Stack Tecnológico: Cómo la IA, el Low-Code y la Soberanía Están Redefiniendo el Futuro del Software

Europa está construyendo su propio camino hacia una tecnología más responsable y descentralizada, apoyada por talento freelance de alto nivel. Esta evolución no solo permite innovar con velocidad, sino también con criterio y sostenibilidad. Si estás buscando nuevas oportunidades, el momento de actualizarte es ahora.

El ecosistema tecnológico europeo está cambiando más rápido que nunca. Ya no se trata solo de adoptar inteligencia artificial, sino de reorganizar completamente las bases sobre las que se construyen las soluciones tecnológicas. Así lo revela el reciente informe Tech Trends 2025 publicado por Malt, el mayor marketplace freelance de Europa. En este artículo, desglosamos lo que necesitas saber sobre las nuevas tendencias, herramientas, lenguajes, amenazas y oportunidades que están marcando el camino del desarrollo y la arquitectura de software en los próximos años.

6 Razones por las que tu web ha perdido posicionamiento y tráfico en Internet

Si tu web ha perdido posicionamiento en buscadores y has notado una drástica reducción de tráfico, es momento de analizar las posibles causas. A continuación, te explicamos algunos de los motivos más comunes y cómo solucionarlos.

1. Incompatibilidades con scripts heredados

Si tu sitio web utilizó anteriormente un CMS antiguo, como por ejemplo PHPNuke o cualquier otro sistema antiguo, es posible que tengas un script de compatibilidad, debes revisarlo por si este hubiera dejado de funcionar debido a actualizaciones en la versión de PHP. Esto puede generar errores en tu web y afectar el rastreo por parte de los motores de búsqueda.

Solución: Revisa los registros de errores de tu servidor y el funcionamiento del script y asegúrate de que todos los scripts sean compatibles con la versión actual de PHP. Si es necesario, actualiza o reescribe el código.

2. Mapa del sitio desactualizado o roto

El sitemap.xml es esencial para que los motores de búsqueda indexen correctamente tu sitio. Si ha dejado de funcionar debido a una actualización o cambio en tu plataforma, Google y otros buscadores pueden tener problemas para descubrir e indexar tus páginas.

Solución: Verifica si el mapa del sitio es accesible y válido utilizando herramientas como Google Search Console. Si no es válido, genera uno nuevo y actualiza la configuración en tu archivo robots.txt.

Información corporativa y medios

Horario Comercial

Lunes: 9am - 7:30pm

Martes: 9am - 7:30pm

Miércoles: 9am - 7:30pm

Jueves: 9am - 7:30pm

Viernes: 9am - 1:30pm

(Viernes tarde, cerrado)


Mañanas, 9am-1:30pm

Tardes, 4pm-7:30pm


Sáb y Dom: Cerrado