Module UltimateMarketPlace ES
Módulo UltimateMarketPlace
Presentación
El módulo UltimateMarketPlace es una extensión para Dolibarr ERP/CRM publicada por Atoo-Net.
Proporciona todo lo necesario para publicar un marketplace en línea de un solo vendedor: una plantilla de sitio web lista para usar (catálogo de productos, carrito, proceso de pedido, cuentas de cliente, zona de descargas), utilizable con el módulo Sitio web de Dolibarr, para vender sus propios productos y servicios directamente en línea.
Se trata de un fork simplificado del módulo Dolibarr «Marketplace» (utilizado para dolistore.com), del que se ha retirado todo lo específico de la asociación Dolibarr, así como el circuito multivendedor / envío y revisión de módulos por desarrolladores externos.
| Propiedad | Valor |
|---|---|
| Autor | Philippe Grand — Atoo-Net |
| Versión | 24.0.1 |
| Licencia | GNU GPL v3+ |
| Dolibarr mínimo | v24.0 |
| PHP mínimo | v8.2 |
¿Por qué utilizar UltimateMarketPlace?
UltimateMarketPlace convierte su instalación de Dolibarr en una tienda en línea autónoma, sin depender de un CMS o de una plataforma de comercio electrónico externa (PrestaShop, WooCommerce…). El catálogo, los pedidos, las facturas y los clientes permanecen de forma nativa en Dolibarr.
Casos de uso
Venta de productos físicos o digitales
Publique su catálogo de productos o servicios directamente desde las fichas de producto de Dolibarr: basta con colocarlos bajo la categoría raíz de la tienda. Los archivos adjuntos al producto pueden entregarse al cliente en su zona de descargas tras el pago.
Suscripciones y licencias de duración limitada
Con la duración de validez de los productos y los niveles de precio de Dolibarr («Multiprecios»), venda un mismo producto con varias duraciones de suscripción: los enlaces de descarga caducan automáticamente al final del periodo comprado.
Precios preferentes para sus mejores clientes
Los descuentos por categoría asocian una categoría de clientes con una categoría de productos: el precio con descuento se muestra automáticamente en cuanto el cliente inicia sesión, sin código que introducir.
Campañas comerciales y códigos promocionales
Cree códigos de descuento (porcentaje o importe fijo), limitados en el tiempo o en número de usos, cada uno reservado a un producto concreto, para dinamizar sus ventas en línea.
Pago en línea
Conecte el proceso de compra a los módulos de pago en línea ya configurados en Dolibarr (Stripe, PayPal…), bien con una redirección clásica a las páginas públicas de pago, bien integrado en un marco de la tienda.
Posicionamiento y seguimiento de audiencia
URLs simplificadas, sitemap.xml, robots.txt y llms.txt generados automáticamente, marcado Schema.org, verificación de Google Search Console e integración de Matomo Analytics para seguir las visitas sin depender de Google Analytics.
Instalación
Requisitos:
- Dolibarr 24.0 o superior y PHP 8.2 o superior;
- las páginas de la tienda contienen código PHP dinámico: antes de activar el módulo, añada la línea
$dolibarr_website_allow_custom_php = '1';enhtdocs/conf/conf.php(valor2si las funciones de sistema de PHPexec,passthru,shell_exec,system,popenyproc_openno están desactivadas enphp.ini). Sin esta línea, Dolibarr se niega a importar la plantilla del sitio y la tienda queda vacía; - los módulos de Dolibarr Terceros, Productos, Servicios, Categorías, Pedidos, Facturas, Bancos, E-Mailings y Sitio web son necesarios: se activan automáticamente con el módulo.
- Descargue el módulo desde DoliStore o clone el repositorio Git en
htdocs/custom/ultimatemarketplace - Vaya a Inicio → Configuración → Módulos/Aplicaciones
- Localice Ultimate Market Place en la familia Sitios Web y otras aplicaciones frontales
- Active el módulo con el botón de la columna Activado
Al activarse, el módulo realiza automáticamente varias acciones:
- Activación de la gestión multilingüe (
MAIN_MULTILANGS), ya que las fichas de producto pueden traducirse - Creación de una categoría raíz de productos y de una categoría de terceros «prospecto/cliente» si aún no hay ninguna configurada
- Registro de la plantilla PDF de factura propia del módulo
- Creación (o reactivación) de un sitio web dedicado en el que se importa la plantilla de sitio suministrada con el módulo
Actualización: tras sustituir los archivos, desactive y vuelva a activar el módulo (sus ajustes se conservan). Para poner las páginas del sitio en consonancia con la nueva versión, utilice después el botón Restablecer la plantilla del sitio (véase Modo mantenimiento).
El módulo no declara ningún permiso propio: las páginas de administración están reservadas a los administradores de Dolibarr, y las páginas de la tienda utilizan su propia sesión de cliente.
Dominio y host virtual
La tienda debe servirse desde su propio dominio (por ejemplo https://shop.example.com), mediante un host virtual del servidor web (Apache, Nginx…). La dirección de vista previa de Dolibarr, …/public/website/index.php?website=…, solo sirve para pruebas: sin dominio, la tienda no funciona por completo.
- El carrito y las descargas llaman a
/_service_page_ajax.phpy/_service_download.phpen la raíz del dominio. Sin host virtual, estas llamadas terminan en un error 404 y el carrito deja de actualizarse. - En vista previa, Dolibarr imprime un comentario HTML antes de la página. Si
output_bufferingestá desactivado en PHP, la sesión del comprador no se inicia («sesión caducada» al conectarse). - El
sitemap.xmly elrobots.txtse construyen a partir del host virtual definido en el sitio: si está vacío, no se generan, y los enlaces de baja de los e-mailings apuntan a Dolibarr en lugar de a la tienda.
Puesta en marcha:
- Cree un host virtual cuya raíz (
DocumentRoot) sea el directorio del sitio:<documents>/website/<ref>(<documents>/<entidad>/website/<ref>para una entidad distinta de la primera).<documents>es el directorio de documentos de Dolibarr, y<ref>la referencia del sitio creado en la activación (ultimatemarketplacepor defecto, vea el parámetro «Sitio web a utilizar para el marketplace»). - PHP debe estar activo en él. El usuario del servidor web debe poder leer los archivos de Dolibarr (
htdocs) y escribir en<documents>/websitey<documents>/medias; si se utilizaopen_basedir, debe incluir estos directorios. Autorice los enlaces simbólicos en el directorio del sitio: su carpetamediases un enlace a<documents>/medias. - Active HTTPS en este dominio: las pasarelas de pago lo exigen.
- En Dolibarr, menú Sitios web, abra Editar propiedades y escriba el dominio completo,
https://incluido, en el campo Host virtual o nombre de dominio.
Ejemplo para Apache, a adaptar (rutas de un paquete Debian o Ubuntu):
<VirtualHost *:443>
ServerName shop.example.com
DocumentRoot "/var/lib/dolibarr/documents/website/ultimatemarketplace"
<Directory "/var/lib/dolibarr/documents/website/ultimatemarketplace">
AllowOverride FileInfo Options
Options -Indexes -MultiViews +FollowSymLinks -ExecCGI
Require all granted
</Directory>
<Directory "/var/lib/dolibarr/documents/medias">
Options -Indexes -MultiViews -FollowSymLinks -ExecCGI
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/shop.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/shop.example.com/privkey.pem
</VirtualHost>
Configuración
El módulo se configura en Inicio → Configuración → Módulos/Aplicaciones → Ultimate Market Place, repartido en varias pestañas: Configuraciones, Configuración de pagos, Códigos promocionales, Descuentos por categoría, Seguridad, Configuración del servidor API (solo se muestra si el módulo API REST está activado), Matomo Analytics, Carrusel, Guía del usuario y Acerca de.
Antes de abrir el sitio al público, recorra las pestañas en este orden: Configuraciones (secciones Miscelánea, Productos, Terceros, Sitio web y Plantillas Email), Configuración de pagos, Seguridad, y después desactive el modo mantenimiento.
Configuraciones
Miscelánea
| Parámetro | Constante | Descripción |
|---|---|---|
| Nombre del marketplace | ULTIMATEMARKETPLACE_NAME |
Nombre de la tienda: título de la página de inicio, título del llms.txt, nombre del remitente en la factura PDF
|
| Descripción del marketplace / Palabras clave del marketplace | ULTIMATEMARKETPLACE_DESCRIPTION / _KEYWORDS |
Metadescripción y palabras clave de la página de inicio, traducibles por idioma |
| Email del marketplace | ULTIMATEMARKETPLACE_EMAIL |
Email de contacto público mostrado en el sitio |
| Modo mantenimiento | ULTIMATEMARKETPLACE_MAINTENANCE_MODE |
Cierra la tienda al público y bloquea las ventas |
| Bloquear nuevos registros | ULTIMATEMARKETPLACE_BLOCK_REGISTRATION |
Cierra la creación de nuevas cuentas de cliente |
| Direcciones IP autorizadas a omitir el modo mantenimiento y el bloqueo de registros | ULTIMATEMARKETPLACE_MAINTENANCE_MODE_ALLOWED_IPS |
Lista blanca de direcciones IP (por ejemplo la de la oficina) |
| Duración de la caché del bloque lateral | ULTIMATEMARKETPLACE_SIDEBAR_CACHE_ENABLED / _SIDEBAR_CACHE_DURATION |
Caché del bloque lateral en minutos (5 por defecto), con un botón para vaciar la caché del sitio |
Productos
| Parámetro | Constante | Descripción |
|---|---|---|
| Categoría raíz de los productos a vender en el marketplace | ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID |
Los productos/servicios de esta categoría y de sus subcategorías forman el catálogo (obligatorio) |
| Categoría destacada en el bloque central de la página de inicio | ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID_BIS |
Opcional, la categoría raíz en su defecto |
| Categoría para el widget «Versión» | ULTIMATEMARKETPLACE_VERSIONS_CATEGORY_ID |
Productos con números de versión (software descargable) |
| Categoría para el widget «Promociones» | ULTIMATEMARKETPLACE_SPECIAL_CATEGORY_ID |
Productos mostrados con una insignia de promoción |
| Precio mínimo del producto | ULTIMATEMARKETPLACE_MIN_PRODUCT_PRICE |
Los productos de pago más baratos quedan excluidos del catálogo |
| Antigüedad máxima (en días) para que un producto sea visible en la sección «Nuevos productos» | ULTIMATEMARKETPLACE_DELAY_FOR_NEW |
30 días por defecto |
| Categoría para forzar el estado «Nuevo producto» | ULTIMATEMARKETPLACE_NEW_CATEGORY_ID / _NEW_CATEGORY_MAX_AGE |
Fuerza la insignia «Nuevo»; una tarea programada diaria retira de ella los productos tras el plazo indicado |
| Activar la duración de validez del producto | ULTIMATEMARKETPLACE_ENABLE_PRODUCT_VALIDITY_DURATION |
Fechas de inicio y fin de validez en las líneas de pedido, que controlan la caducidad de las descargas; duraciones por nivel de precio si los «Multiprecios» están activados |
Terceros
| Parámetro | Constante | Descripción |
|---|---|---|
| Categoría para todos los prospectos o clientes creados desde el sitio del marketplace | ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_ID |
Categoría asignada a cada tercero creado por el formulario de registro |
| Activar direcciones múltiples | ULTIMATEMARKETPLACE_ENABLE_MULTI_ADDRESS |
Sección «Mis direcciones» de la cuenta de cliente (direcciones de facturación y de envío) |
| Convertir el prospecto en cliente en su primer pago | ULTIMATEMARKETPLACE_CONVERT_PROSPECT_TO_CUSTOMER_ON_FIRST_PAYMENT |
El prospecto pasa a ser cliente en cuanto se paga su primera factura |
Sitio web
| Parámetro | Constante | Descripción |
|---|---|---|
| URL del logotipo del marketplace | ULTIMATEMARKETPLACE_URL_FOR_LOGO |
Logotipo de la cabecera del sitio; en su defecto el de la empresa, y después un logotipo suministrado con el módulo |
| URL de la imagen de bienvenida / Ocultar la imagen de bienvenida | ULTIMATEMARKETPLACE_WELCOME_IMAGE_URL / _WELCOME_IMAGE_HIDE |
Banner de la página de inicio |
| Color principal del tema / Color secundario del tema | ULTIMATEMARKETPLACE_THEME_COLOR / _SECONDARY_COLOR |
Colores del tema (#a45931 y #333333 por defecto)
|
| Activar URLs simplificadas | ULTIMATEMARKETPLACE_FRIENDLY_URLS |
URLs del tipo /es/123-nombre-del-producto.html
|
| Token de verificación de Google Search Console | ULTIMATEMARKETPLACE_GOOGLE_SITE_VERIFICATION |
Etiqueta meta de verificación |
| Descripción para llms.txt | ULTIMATEMARKETPLACE_LLMS_DESCRIPTION |
Frase de presentación del sitio en el llms.txt
|
| Usuario con permisos para realizar operaciones en el sitio web | ULTIMATEMARKETPLACE_USER_MANAGE_WEBSITE |
Usuario técnico utilizado por la tienda (creación de terceros, de pedidos…) |
| Sitio web a utilizar para el marketplace | ULTIMATEMARKETPLACE_WEBSITE_ID |
Sitio web de Dolibarr gestionado por el módulo, definido en la activación |
| Eliminar siempre el pedido provisional al cerrar sesión | ULTIMATEMARKETPLACE_DELETE_ORDER_ON_LOGOUT |
Vacía el carrito en curso cuando el cliente cierra la sesión |
| Mostrar un aviso de consentimiento de cookies | ULTIMATEMARKETPLACE_ENABLE_COOKIE_BANNER |
Banner de consentimiento en el sitio |
Importante: si cambia el sitio web asociado (ULTIMATEMARKETPLACE_WEBSITE_ID), los usuarios, terceros y pedidos ya creados siguen vinculados al sitio anterior y no se migran automáticamente.
Plantillas Email
Tres listas desplegables permiten elegir, entre las plantillas de email de Dolibarr (Configuración → Emails → Plantillas), la del email de bienvenida enviado al crear la cuenta (ULTIMATEMARKETPLACE_WELCOME_EMAIL_TEMPLATE), la del email «Contraseña olvidada» (ULTIMATEMARKETPLACE_FORGOT_PASSWORD_EMAIL_TEMPLATE) y la de la confirmación de pedido del comprador (ULTIMATEMARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE).
Configuración de pagos
| Parámetro | Constante | Descripción |
|---|---|---|
| Bloquear las ventas en el marketplace | ULTIMATEMARKETPLACE_BLOCK_SALES |
El catálogo sigue siendo consultable pero los pedidos quedan desactivados; forzado mientras el modo mantenimiento está activo |
| Cerrar automáticamente los pedidos tras un pago exitoso | ULTIMATEMARKETPLACE_CLOSE_ORDER_AFTER_PAYMENT |
Cierra el pedido de Dolibarr una vez confirmado el pago |
| Seleccionar el método de pago a utilizar | ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD |
Módulo de pago en línea de Dolibarr utilizado al validar el pedido |
| Incluir las páginas de pago proporcionadas por Dolibarr dentro de un marco (frame) de la tienda marketplace (usuarios avanzados) | ULTIMATEMARKETPLACE_PAYMENT_IN_FRAME |
Pago mostrado en un marco bajo el dominio de la tienda |
Son posibles dos modos de integración del pago:
- Página separada (por defecto): sin configuración particular, el cliente es redirigido a las páginas públicas de pago de su Dolibarr. Inconveniente: el dominio del back-office es visible para el cliente.
- Marco (usuarios avanzados, Stripe y Stancer): la página de pago se llama a través de una URL de la propia tienda. Se necesita una regla de proxy inverso en el servidor web de la tienda; se muestra un ejemplo de configuración en la página una vez activada la opción.
Códigos promocionales
Cada código promocional está vinculado a un producto concreto y tiene un tipo de descuento (porcentaje o importe fijo), un valor, unas fechas de validez y un número máximo de usos opcionales, así como un indicador activo/inactivo. El comprador introduce el código en el carrito: solo se acepta si está activo, dentro de sus fechas de validez, por debajo de su límite de uso y si el producto en cuestión está en el carrito. El contador de usos solo se incrementa al validar el pedido.
Descuentos por categoría
Un descuento por categoría asocia una categoría de clientes con una categoría de productos y un porcentaje de descuento. Para un cliente conectado que pertenece a esta categoría, el precio con descuento se muestra directamente en la ficha del producto y en el carrito, sin código que introducir. Si se aplican varias reglas, prevalece el porcentaje más alto.
Seguridad
| Parámetro | Constante | Descripción |
|---|---|---|
| Proveedor de captcha | ULTIMATEMARKETPLACE_CAPTCHA_PROVIDER |
Ninguno, Google reCAPTCHA o Cloudflare Turnstile, con sus claves de sitio y claves secretas |
| Activar esta protección | ULTIMATEMARKETPLACE_LOGIN_PROTECTION_ENABLED |
Limitación de los intentos de inicio de sesión en la tienda |
| Número de fallos antes del bloqueo / Duración antes de desbloquear (minutos) | ULTIMATEMARKETPLACE_LOGIN_MAX_ATTEMPTS / _LOGIN_BLOCK_DURATION |
5 fallos y 15 minutos por defecto |
| Direcciones IP autorizadas a omitir esta protección | ULTIMATEMARKETPLACE_LOGIN_BYPASS_IPS |
Lista blanca (pruebas automatizadas, red de confianza) |
El captcha y la protección de inicio de sesión están desactivados por defecto: configúrelos antes de abrir el registro al público.
Configuración del servidor API
Esta pestaña solo aparece si el módulo API REST de Dolibarr está activado. Contiene la Clave pública de API (ULTIMATEMARKETPLACE_PUBLIC_API_KEY, con un botón para generarla), que se pasa como parámetro apikey a los dos puntos de acceso públicos de solo lectura añadidos por el módulo: /api/index.php/ultimatemarketplace/categories y /api/index.php/ultimatemarketplace/products.
Matomo Analytics
| Constante | Descripción |
|---|---|
ULTIMATEMARKETPLACE_ENABLE_MATOMO |
Activa Matomo en el sitio: el código de seguimiento se inserta en cada página |
ULTIMATEMARKETPLACE_MATOMO_SITE_KEY |
Identificador de sitio de Matomo |
ULTIMATEMARKETPLACE_MATOMO_SERVER_URL |
URL completa del servidor Matomo |
ULTIMATEMARKETPLACE_MATOMO_AUTH_TOKEN |
Token de autenticación opcional, necesario para mostrar las estadísticas de Matomo en Dolibarr |
Carrusel
Ajustes del carrusel de la página de inicio: tipo de transición (ninguna, fundido, deslizamiento), velocidad en milisegundos, pausa al pasar el ratón y repetición en bucle. Cada diapositiva tiene una imagen, un enlace opcional y un título; el orden se cambia arrastrando y soltando, y las imágenes se eligen o se suben mediante un selector de imágenes.
Guía del usuario
La pestaña Guía del usuario muestra, en el idioma del usuario, una guía completa de la configuración y la explotación del módulo, solo en texto: las capturas de pantalla están en esta página.
Uso
Tienda en línea
El sitio generado por el módulo utiliza el logotipo y los colores definidos en la configuración y ofrece:
- un catálogo organizado por categorías, con las insignias «Nuevo» y «Promociones» y un carrusel en la página de inicio;
- una ficha de producto con el precio (descuento por categoría ya aplicado) y, para los productos con niveles de precio, la elección de la duración;
- un carrito, conservado en sesión hasta la validación, con la introducción de un código promocional;
- un proceso de pedido conectado al módulo de pago en línea elegido;
- una zona de cliente: datos personales, «Mis direcciones», historial de pedidos y zona de descargas.
La validación del carrito crea un pedido estándar de Dolibarr; el pago genera una factura estándar de Dolibarr.
Archivos entregados al cliente
La pestaña Archivos de la tienda de la ficha del producto indica, para cada archivo adjunto, si se muestra en la ficha pública del producto. Un archivo marcado como «Archivo principal» o «Visible por el cliente» puede ser descargado por el cliente una vez pagado su pedido; se muestra un aviso si ningún archivo del producto lo está. Si la duración de validez de los productos está activada, el enlace de descarga caduca al final del periodo comprado; de lo contrario, no caduca nunca.
Menú UltimateMarketPlace
El menú principal Mercado da acceso a:
- Estadísticas: estadísticas de facturas, estadísticas de clientes, estadísticas de productos, lista de ventas y, si Matomo está configurado, estadísticas de Matomo;
- Productos sin etiqueta: productos del catálogo sin palabras clave, para controlar la calidad del catálogo;
- Carritos y Facturas: listas estándar de pedidos y facturas de Dolibarr, filtradas en las que proceden de la tienda.
Modo mantenimiento y restablecimiento de la plantilla
El modo mantenimiento cierra el sitio al público (salvo para las direcciones IP autorizadas) y bloquea las ventas. Mientras está activo, la pestaña Configuraciones ofrece dos botones:
- Generar sitemap.xml: regenera inmediatamente
sitemap.xml; - Restablecer la plantilla del sitio: vuelve a importar la plantilla de sitio del módulo en el sitio existente, sobrescribiendo las modificaciones hechas a mano en el editor de páginas. Debe utilizarse tras una actualización del módulo.
Recuerde desactivar el modo mantenimiento una vez hechas las comprobaciones: no se desactiva por sí solo.
Posicionamiento
robots.txt, sitemap.xml y llms.txt se regeneran automáticamente al activar el módulo, al abrir la pestaña Configuraciones y tras un restablecimiento de la plantilla. Una vez activadas las URLs simplificadas, las antiguas URLs siguen siendo válidas durante la transición.
Novedades de la versión 24.0.1
- Documentación: la guía de usuario y esta página explican cómo servir la tienda en su propio dominio, mediante un host virtual cuya raíz es el directorio del sitio (véase Dominio y host virtual). El código del módulo no cambia.
Novedades de la versión 24.0.0
Compatibilidad
- Dolibarr 24 y PHP 8.2 como mínimo: el módulo requiere ahora Dolibarr 24.0.0 y PHP 8.2; está probado hasta PHP 8.5. La comprobación de actualizaciones lee
versionmodules/ultimatemarketplace/v24/ultimatemarketplace.txt. - Numeración alineada con Dolibarr: tras la 1.0.8, el módulo pasa directamente a la 24.0.0, como los demás módulos de Atoo-Net.
Traducciones
- El bloque del carrito de la tienda mostraba claves sin traducir (
quantity,total,shipping,FreeShipping): ahora carga las traducciones del módulo. Restablezca la plantilla del sitio para aprovecharlo. - Añadidas las etiquetas que faltaban en las páginas de la tienda (referencias, IVA, artículos, alta y baja de direcciones, controles del formulario de registro…) y en los mensajes de administración, en los cinco idiomas.
- Traducción al francés, alemán, español e italiano de las etiquetas que solo existían en inglés.
Documentación y distribución
- Guía del usuario: sección de requisitos y compatibilidad; la guía en inglés pasa a ser
GUIDE_UTILISATEUR-EN.md. - Página wiki reescrita a partir de las pantallas actuales, con capturas de pantalla en los cinco idiomas.
- Script de construcción del paquete DoliStore e integración continua (instalación de dependencias y control de sintaxis con PHP 8.4 y 8.5).
Versiones anteriores
El detalle de las versiones 1.0.0 a 1.0.8 (códigos promocionales, descuentos por categoría, carrusel, protección de inicio de sesión, URLs simplificadas, llms.txt, guía del usuario…) figura en el archivo ChangeLog.md incluido con el módulo.