Module UltimateMarketPlace FR
Module UltimateMarketPlace
Présentation
Le module UltimateMarketPlace est une extension pour Dolibarr ERP/CRM éditée par Atoo-Net.
Il fournit toutes les fonctionnalités nécessaires pour publier une place de marché en ligne mono-vendeur : un modèle de site Web prêt à l'emploi (catalogue produits, panier, tunnel de commande, comptes clients, espace de téléchargement), utilisable avec le module Site Web de Dolibarr, pour vendre vos propres produits et services directement en ligne.
Il s'agit d'un fork simplifié du module Dolibarr « Marketplace » (utilisé pour dolistore.com), duquel tout ce qui est spécifique à l'association Dolibarr ainsi que le circuit multi-vendeurs / soumission et revue de modules par des développeurs tiers a été retiré.
| Propriété | Valeur |
|---|---|
| Auteur | Philippe Grand — Atoo-Net |
| Version | 24.0.1 |
| Licence | GNU GPL v3+ |
| Dolibarr minimum | v24.0 |
| PHP minimum | v8.2 |
Pourquoi utiliser UltimateMarketPlace ?
UltimateMarketPlace transforme votre installation Dolibarr en boutique en ligne autonome, sans dépendre d'un CMS ou d'une plateforme e-commerce tierce (type PrestaShop, WooCommerce…). Le catalogue, les commandes, les factures et les clients restent nativement dans Dolibarr.
Cas d'utilisation
Vente de produits physiques ou dématérialisés
Publiez votre catalogue de produits ou de services directement depuis les fiches produits Dolibarr : il suffit de les placer sous la catégorie racine de la boutique. Les fichiers joints au produit peuvent être livrés au client dans son espace de téléchargement après paiement.
Abonnements et licences à durée limitée
Avec la durée de validité des produits et les niveaux de prix de Dolibarr (« Multiprix »), vendez un même produit en plusieurs durées d'abonnement : les liens de téléchargement expirent automatiquement à la fin de la période achetée.
Tarifs préférentiels pour vos meilleurs clients
Les remises par catégorie associent une catégorie de clients à une catégorie de produits : le prix remisé s'affiche automatiquement dès que le client est connecté, sans code à saisir.
Opérations commerciales et codes promo
Créez des codes de réduction (pourcentage ou montant fixe), limités dans le temps ou en nombre d'utilisations, chacun réservé à un produit précis, pour animer vos ventes en ligne.
Paiement en ligne
Connectez le tunnel d'achat aux modules de paiement en ligne déjà configurés dans Dolibarr (Stripe, PayPal…), soit en redirection classique vers les pages publiques de paiement, soit intégré dans un cadre de la boutique.
Référencement et suivi d'audience
URLs simplifiées, sitemap.xml, robots.txt et llms.txt générés automatiquement, balisage Schema.org, vérification Google Search Console et intégration de Matomo Analytics pour suivre la fréquentation sans dépendre de Google Analytics.
Installation
Prérequis :
- Dolibarr 24.0 ou supérieur et PHP 8.2 ou supérieur ;
- les pages de la boutique contiennent du code PHP dynamique : avant d'activer le module, ajoutez la ligne
$dolibarr_website_allow_custom_php = '1';danshtdocs/conf/conf.php(valeur2si les fonctions système de PHPexec,passthru,shell_exec,system,popenetproc_openne sont pas désactivées dansphp.ini). Sans cette ligne, Dolibarr refuse d'importer le modèle de site et la boutique reste vide ; - les modules Dolibarr Tiers, Produits, Services, Catégories, Commandes, Factures, Banques, Emailings et Site Web sont nécessaires : ils sont activés automatiquement avec le module.
- Télécharger le module depuis DoliStore ou cloner le dépôt Git dans
htdocs/custom/ultimatemarketplace - Aller dans Accueil → Configuration → Modules/Applications
- Localiser Ultimate Market Place dans la famille Sites web et autres applications frontales
- Activer le module en cliquant sur le bouton de la colonne Activé
À l'activation, le module effectue automatiquement plusieurs actions :
- Activation de la gestion multilingue (
MAIN_MULTILANGS), car les fiches produits peuvent être traduites - Création d'une catégorie produit racine et d'une catégorie tiers « prospect/client » si aucune n'est encore configurée
- Enregistrement du modèle de PDF de facture propre au module
- Création (ou réactivation) d'un site Web dédié dans lequel est importé le modèle de site fourni par le module
Mise à jour : après le remplacement des fichiers, désactivez puis réactivez le module (vos réglages sont conservés). Pour remettre les pages du site en cohérence avec la nouvelle version, utilisez ensuite le bouton Réinitialiser le template du site (voir Mode maintenance).
Le module ne déclare aucun droit propre : les pages d'administration sont réservées aux administrateurs Dolibarr, et les pages de la boutique utilisent leur propre session client.
Domaine et hôte virtuel
La boutique doit être servie par son propre domaine (par exemple https://shop.example.com), au moyen d'un hôte virtuel du serveur web (Apache, Nginx…). L'adresse d'aperçu de Dolibarr, …/public/website/index.php?website=…, ne sert qu'aux tests : sans domaine, la boutique ne fonctionne pas entièrement.
- Le panier et les téléchargements appellent
/_service_page_ajax.phpet/_service_download.phpà la racine du domaine. Sans hôte virtuel, ces appels aboutissent à une erreur 404 et le panier ne se met plus à jour. - En aperçu, Dolibarr imprime un commentaire HTML avant la page. Si
output_bufferingest désactivé dans PHP, la session de l'acheteur ne démarre pas (« session expirée » à la connexion). - Le
sitemap.xmlet lerobots.txtsont construits à partir de l'hôte virtuel déclaré sur le site : s'il n'est pas renseigné, ils ne sont pas générés, et les liens de désinscription des e-mailings pointent vers Dolibarr au lieu de la boutique.
Mise en place :
- Créez un hôte virtuel dont la racine (
DocumentRoot) est le répertoire du site :<documents>/website/<ref>(<documents>/<entité>/website/<ref>pour une entité autre que la première).<documents>est le répertoire des documents de Dolibarr, et<ref>la référence du site créé à l'activation (ultimatemarketplacepar défaut, voir le paramètre « Site Web à utiliser pour la place de marché »). - PHP doit y être actif. L'utilisateur du serveur web doit pouvoir lire les fichiers de Dolibarr (
htdocs) et écrire dans<documents>/websiteet<documents>/medias; siopen_basedirest utilisé, il doit inclure ces répertoires. Autorisez les liens symboliques sur le répertoire du site : son dossiermediasest un lien vers<documents>/medias. - Activez HTTPS sur ce domaine : les passerelles de paiement l'exigent.
- Dans Dolibarr, menu Sites web, ouvrez les Propriétés du site web et saisissez le domaine complet,
https://compris, dans le champ Hôte virtuel ou nom de domaine.
Exemple pour Apache, à adapter (chemins d'un paquet Debian ou 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>
Configuration
La configuration du module se fait dans Accueil → Configuration → Modules/Applications → Ultimate Market Place, répartie en plusieurs onglets : Paramètres, Configuration des paiements, Codes promo, Remises par catégorie, Sécurité, Configuration du serveur API (affiché seulement si le module API REST est activé), Matomo Analytics, Carrousel, Guide utilisateur et À propos.
Avant d'ouvrir le site au public, parcourez les onglets dans cet ordre : Paramètres (sections Divers, Produits, Tiers, Site web et Modèles des courriels), Configuration des paiements, Sécurité, puis désactivez le mode maintenance.
Paramètres
Divers
| Paramètre | Constante | Description |
|---|---|---|
| Nom de la place de marché | ULTIMATEMARKETPLACE_NAME |
Nom de la boutique : titre de la page d'accueil, titre du llms.txt, nom de l'expéditeur sur la facture PDF
|
| Description / Mots-clés de la place de marché | ULTIMATEMARKETPLACE_DESCRIPTION / _KEYWORDS |
Méta-description et mots-clés de la page d'accueil, traduisibles par langue |
| Email de la place de marché | ULTIMATEMARKETPLACE_EMAIL |
Email de contact public affiché sur le site |
| Mode maintenance | ULTIMATEMARKETPLACE_MAINTENANCE_MODE |
Ferme la boutique au public et bloque les ventes |
| Bloquer les nouvelles inscriptions | ULTIMATEMARKETPLACE_BLOCK_REGISTRATION |
Ferme la création de nouveaux comptes clients |
| Adresses IP autorisées à bypasser le mode maintenance et le blocage des inscriptions | ULTIMATEMARKETPLACE_MAINTENANCE_MODE_ALLOWED_IPS |
Liste blanche d'adresses IP (par exemple celle du bureau) |
| Durée du cache du bloc latéral | ULTIMATEMARKETPLACE_SIDEBAR_CACHE_ENABLED / _SIDEBAR_CACHE_DURATION |
Cache du bloc latéral en minutes (5 par défaut), avec un bouton pour vider le cache du site |
Produits
| Paramètre | Constante | Description |
|---|---|---|
| Catégorie racine des produits à vendre sur la place de marché | ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID |
Les produits/services de cette catégorie et de ses sous-catégories forment le catalogue (obligatoire) |
| Catégorie mise en avant dans le bloc central de la page d'accueil | ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID_BIS |
Optionnelle, la catégorie racine à défaut |
| Catégorie pour le widget « Version » | ULTIMATEMARKETPLACE_VERSIONS_CATEGORY_ID |
Produits portant des numéros de version (logiciels téléchargeables) |
| Catégorie pour le widget « Promotions » | ULTIMATEMARKETPLACE_SPECIAL_CATEGORY_ID |
Produits affichés avec un badge de promotion |
| Prix minimum du produit | ULTIMATEMARKETPLACE_MIN_PRODUCT_PRICE |
Les produits payants moins chers sont exclus du catalogue |
| Âge maximum (en jours) pour qu'un produit soit visible dans la section « Nouveaux produits » | ULTIMATEMARKETPLACE_DELAY_FOR_NEW |
30 jours par défaut |
| Catégorie pour forcer le statut « Nouveau produit » | ULTIMATEMARKETPLACE_NEW_CATEGORY_ID / _NEW_CATEGORY_MAX_AGE |
Force le badge « Nouveau » ; une tâche planifiée quotidienne en retire les produits après le délai indiqué |
| Activer la durée de validité du produit | ULTIMATEMARKETPLACE_ENABLE_PRODUCT_VALIDITY_DURATION |
Dates de début et de fin de validité sur les lignes de commande, qui pilotent l'expiration des téléchargements ; durées par niveau de prix si les « Multiprix » sont activés |
Tiers
| Paramètre | Constante | Description |
|---|---|---|
| Catégorie pour tous les prospects ou clients créés depuis le site de la place de marché | ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_ID |
Catégorie assignée à chaque tiers créé par le formulaire d'inscription |
| Activer les adresses multiples | ULTIMATEMARKETPLACE_ENABLE_MULTI_ADDRESS |
Section « Mes adresses » du compte client (adresses de facturation et de livraison) |
| Convertir le prospect en client dès son premier paiement | ULTIMATEMARKETPLACE_CONVERT_PROSPECT_TO_CUSTOMER_ON_FIRST_PAYMENT |
Le prospect devient client dès sa première facture payée |
Site Web
| Paramètre | Constante | Description |
|---|---|---|
| URL du logo de la place de marché | ULTIMATEMARKETPLACE_URL_FOR_LOGO |
Logo de l'en-tête du site ; à défaut celui de la société, puis un logo fourni avec le module |
| URL de l'image de bienvenue / Masquer l'image de bienvenue | ULTIMATEMARKETPLACE_WELCOME_IMAGE_URL / _WELCOME_IMAGE_HIDE |
Bannière de la page d'accueil |
| Couleur principale / secondaire du site | ULTIMATEMARKETPLACE_THEME_COLOR / _SECONDARY_COLOR |
Couleurs du thème (#a45931 et #333333 par défaut)
|
| Activer les URLs simplifiées | ULTIMATEMARKETPLACE_FRIENDLY_URLS |
URLs du type /fr/123-nom-du-produit.html
|
| Jeton de vérification Google Search Console | ULTIMATEMARKETPLACE_GOOGLE_SITE_VERIFICATION |
Balise meta de vérification |
| Description pour llms.txt | ULTIMATEMARKETPLACE_LLMS_DESCRIPTION |
Phrase de présentation du site dans le llms.txt
|
| Utilisateur disposant des autorisations nécessaires pour effectuer des opérations sur le site Web | ULTIMATEMARKETPLACE_USER_MANAGE_WEBSITE |
Utilisateur technique utilisé par la boutique (création des tiers, des commandes…) |
| Site Web à utiliser pour la place de marché | ULTIMATEMARKETPLACE_WEBSITE_ID |
Site Web Dolibarr géré par le module, défini à l'activation |
| Toujours supprimer la commande provisoire à la déconnexion | ULTIMATEMARKETPLACE_DELETE_ORDER_ON_LOGOUT |
Vide le panier en cours à la déconnexion du client |
| Afficher une bannière de consentement aux cookies | ULTIMATEMARKETPLACE_ENABLE_COOKIE_BANNER |
Bannière de consentement sur le site |
Important : si vous changez le site Web associé (ULTIMATEMARKETPLACE_WEBSITE_ID), les utilisateurs, tiers et commandes déjà créés restent liés à l'ancien site et ne sont pas migrés automatiquement.
Modèles des courriels
Trois listes déroulantes permettent de choisir, parmi les modèles d'emails de Dolibarr (Configuration → Emails → Modèles), celui de l'email de bienvenue envoyé à la création du compte (ULTIMATEMARKETPLACE_WELCOME_EMAIL_TEMPLATE), celui de l'email « Mot de passe oublié » (ULTIMATEMARKETPLACE_FORGOT_PASSWORD_EMAIL_TEMPLATE) et celui de la confirmation de commande de l'acheteur (ULTIMATEMARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE).
Configuration des paiements
| Paramètre | Constante | Description |
|---|---|---|
| Bloquer les ventes sur la place de marché | ULTIMATEMARKETPLACE_BLOCK_SALES |
Le catalogue reste consultable mais la commande est désactivée ; forcé tant que le mode maintenance est actif |
| Fermeture automatique des commandes en cas de paiement réussi | ULTIMATEMARKETPLACE_CLOSE_ORDER_AFTER_PAYMENT |
Clôture la commande Dolibarr une fois le paiement confirmé |
| Sélectionner le mode de paiement à utiliser | ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD |
Module de paiement en ligne de Dolibarr utilisé à la validation de la commande |
| Inclure les pages de paiement fournies par Dolibarr à l'intérieur d'un cadre de la boutique marketplace (utilisateurs avancés) | ULTIMATEMARKETPLACE_PAYMENT_IN_FRAME |
Paiement affiché dans un cadre sous le domaine de la boutique |
Deux modes d'intégration du paiement sont possibles :
- Page séparée (par défaut) : aucune configuration particulière, le client est redirigé vers les pages de paiement publiques de votre Dolibarr. Inconvénient : le domaine du back-office est visible du client.
- Cadre (utilisateurs avancés, Stripe et Stancer) : la page de paiement est appelée via une URL de la boutique elle-même. Une règle de proxy inverse est nécessaire sur le serveur Web de la boutique ; un exemple de configuration est affiché sur la page une fois l'option activée.
Codes promo
Chaque code promo est lié à un produit précis et comporte un type de réduction (pourcentage ou montant fixe), une valeur, des dates de validité et un nombre d'utilisations maximum optionnels, ainsi qu'un indicateur actif/inactif. L'acheteur saisit le code dans le panier : il n'est accepté que s'il est actif, dans ses dates de validité, sous son plafond d'utilisation et si le produit concerné est dans le panier. Le compteur d'utilisations n'est incrémenté qu'à la validation de la commande.
Remises par catégorie
Une remise par catégorie associe une catégorie de clients à une catégorie de produits avec un pourcentage de remise. Pour un client connecté appartenant à cette catégorie, le prix remisé s'affiche directement sur la fiche produit et dans le panier, sans code à saisir. Si plusieurs règles s'appliquent, le pourcentage le plus élevé l'emporte.
Sécurité
| Paramètre | Constante | Description |
|---|---|---|
| Fournisseur de captcha | ULTIMATEMARKETPLACE_CAPTCHA_PROVIDER |
Aucun, Google reCAPTCHA ou Cloudflare Turnstile, avec leurs clés de site et clés secrètes |
| Activer cette protection | ULTIMATEMARKETPLACE_LOGIN_PROTECTION_ENABLED |
Limitation des tentatives de connexion à la boutique |
| Nombre d'échecs avant blocage / Durée avant déblocage (minutes) | ULTIMATEMARKETPLACE_LOGIN_MAX_ATTEMPTS / _LOGIN_BLOCK_DURATION |
5 échecs et 15 minutes par défaut |
| Adresses IP autorisées à bypasser cette protection | ULTIMATEMARKETPLACE_LOGIN_BYPASS_IPS |
Liste blanche (tests automatisés, réseau de confiance) |
Le captcha et la protection de connexion sont désactivés par défaut : configurez-les avant d'ouvrir l'inscription au public.
Configuration du serveur API
Cet onglet n'apparaît que si le module API REST de Dolibarr est activé. Il contient la Clé API publique (ULTIMATEMARKETPLACE_PUBLIC_API_KEY, avec un bouton pour en générer une), passée en paramètre apikey aux deux points d'accès publics en lecture seule ajoutés par le module : /api/index.php/ultimatemarketplace/categories et /api/index.php/ultimatemarketplace/products.
Matomo Analytics
| Constante | Description |
|---|---|
ULTIMATEMARKETPLACE_ENABLE_MATOMO |
Active Matomo sur le site : le code de suivi est injecté dans chaque page |
ULTIMATEMARKETPLACE_MATOMO_SITE_KEY |
Identifiant de site Matomo |
ULTIMATEMARKETPLACE_MATOMO_SERVER_URL |
URL complète du serveur Matomo |
ULTIMATEMARKETPLACE_MATOMO_AUTH_TOKEN |
Jeton d'authentification optionnel, nécessaire pour afficher les statistiques Matomo dans Dolibarr |
Carrousel
Réglages du carrousel de la page d'accueil : type de transition (aucune, fondu enchaîné, glissement), vitesse en millisecondes, pause au survol de la souris et répétition en boucle. Chaque diapositive comporte une image, un lien optionnel et un titre ; l'ordre se change par glisser-déposer et les images se choisissent ou s'envoient par un sélecteur d'images.
Guide utilisateur
L'onglet Guide utilisateur affiche, dans la langue de l'utilisateur, un guide complet de la configuration et de l'exploitation du module, en texte seul : les copies d'écran se trouvent sur cette page.
Utilisation
Boutique en ligne
Le site généré par le module reprend le logo et les couleurs définis dans la configuration et propose :
- un catalogue organisé par catégories, avec les badges « Nouveau » et « Promotions » et un carrousel en page d'accueil ;
- une fiche produit avec le prix (remise par catégorie déjà appliquée) et, pour les produits à niveaux de prix, le choix de la durée ;
- un panier, conservé en session jusqu'à la validation, avec la saisie d'un code promo ;
- un tunnel de commande relié au module de paiement en ligne choisi ;
- un espace client : informations personnelles, « Mes adresses », historique des commandes et espace de téléchargement.
La validation du panier crée une commande Dolibarr standard ; le paiement produit une facture Dolibarr standard.
Fichiers livrés au client
L'onglet Fichiers boutique de la fiche produit indique, pour chaque fichier joint, s'il est affiché sur la fiche produit publique. Un fichier coché « Fichier principal » ou « Visible par le client » est téléchargeable par le client une fois sa commande payée ; un avertissement s'affiche si aucun fichier du produit ne l'est. Si la durée de validité des produits est activée, le lien de téléchargement expire à la fin de la période achetée ; sinon, il n'expire jamais.
Menu UltimateMarketPlace
Le menu principal Place de marché donne accès à :
- Statistiques : statistiques des factures, statistiques clients, statistiques sur les produits, liste des ventes et, si Matomo est configuré, statistiques Matomo ;
- Produits sans tag : produits du catalogue sans mots-clés, pour contrôler la qualité du catalogue ;
- Paniers et Factures : listes standard des commandes et des factures de Dolibarr, filtrées sur celles qui proviennent de la boutique.
Mode maintenance et réinitialisation du modèle
Le mode maintenance ferme le site au public (sauf pour les adresses IP autorisées) et bloque les ventes. Tant qu'il est actif, l'onglet Paramètres propose deux boutons :
- Générer le sitemap.xml : régénère immédiatement
sitemap.xml; - Réinitialiser le template du site : réimporte le modèle de site du module dans le site existant, en écrasant les modifications faites à la main dans l'éditeur de pages. À utiliser après une mise à jour du module.
Pensez à désactiver le mode maintenance une fois les vérifications faites : il ne se désactive pas de lui-même.
Référencement
robots.txt, sitemap.xml et llms.txt sont régénérés automatiquement à l'activation, à l'ouverture de l'onglet Paramètres et après une réinitialisation du modèle. Une fois les URLs simplifiées activées, les anciennes URLs restent valides pendant la transition.
Nouveautés de la version 24.0.1
- Documentation : le guide utilisateur et cette page expliquent comment servir la boutique sur son propre domaine, par un hôte virtuel dont la racine est le répertoire du site (voir Domaine et hôte virtuel). Le code du module est inchangé.
Nouveautés de la version 24.0.0
Compatibilité
- Dolibarr 24 et PHP 8.2 minimum : le module requiert désormais Dolibarr 24.0.0 et PHP 8.2 ; il est testé jusqu'à PHP 8.5. La vérification de mise à jour lit
versionmodules/ultimatemarketplace/v24/ultimatemarketplace.txt. - Numérotation alignée sur Dolibarr : après la 1.0.8, le module passe directement en 24.0.0, comme les autres modules Atoo-Net.
Traductions
- Le bloc panier de la boutique affichait des clés brutes (
quantity,total,shipping,FreeShipping) : il charge désormais les traductions du module. Réinitialisez le template du site pour en profiter. - Ajout des libellés manquants des pages de la boutique (références, TVA, articles, ajout et suppression d'adresses, contrôles du formulaire d'inscription…) et des messages d'administration, dans les cinq langues.
- Traduction en français, allemand, espagnol et italien des libellés qui n'existaient qu'en anglais.
Documentation et diffusion
- Guide utilisateur : section de prérequis et de compatibilité ; le guide anglais devient
GUIDE_UTILISATEUR-EN.md. - Page wiki réécrite d'après les écrans actuels, avec des copies d'écran dans les cinq langues.
- Script de construction du paquet DoliStore et intégration continue (installation des dépendances et contrôle de syntaxe sous PHP 8.4 et 8.5).
Versions précédentes
Le détail des versions 1.0.0 à 1.0.8 (codes promo, remises par catégorie, carrousel, protection de connexion, URLs simplifiées, llms.txt, guide utilisateur…) figure dans le fichier ChangeLog.md livré avec le module.