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'; dans htdocs/conf/conf.php (valeur 2 si les fonctions système de PHP exec, passthru, shell_exec, system, popen et proc_open ne sont pas désactivées dans php.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.
  1. Télécharger le module depuis DoliStore ou cloner le dépôt Git dans htdocs/custom/ultimatemarketplace
  2. Aller dans Accueil → Configuration → Modules/Applications
  3. Localiser Ultimate Market Place dans la famille Sites web et autres applications frontales
  4. Activer le module en cliquant sur le bouton de la colonne Activé
 
Activation du module UltimateMarketPlace

À 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.php et /_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_buffering est désactivé dans PHP, la session de l'acheteur ne démarre pas (« session expirée » à la connexion).
  • Le sitemap.xml et le robots.txt sont 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 :

  1. 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 (ultimatemarketplace par défaut, voir le paramètre « Site Web à utiliser pour la place de marché »).
  2. PHP doit y être actif. L'utilisateur du serveur web doit pouvoir lire les fichiers de Dolibarr (htdocs) et écrire dans <documents>/website et <documents>/medias ; si open_basedir est utilisé, il doit inclure ces répertoires. Autorisez les liens symboliques sur le répertoire du site : son dossier medias est un lien vers <documents>/medias.
  3. Activez HTTPS sur ce domaine : les passerelles de paiement l'exigent.
  4. 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

 
Onglet Paramètres de la configuration du module

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

 
Onglet 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

 
Onglet 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

 
Onglet 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é

 
Onglet 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

 
Onglet 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

 
Onglet 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

 
Onglet 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

 
Page d'accueil de la boutique

Le site généré par le module reprend le logo et les couleurs définis dans la configuration et propose :

  1. un catalogue organisé par catégories, avec les badges « Nouveau » et « Promotions » et un carrousel en page d'accueil ;
  2. 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 ;
  3. un panier, conservé en session jusqu'à la validation, avec la saisie d'un code promo ;
  4. un tunnel de commande relié au module de paiement en ligne choisi ;
  5. un espace client : informations personnelles, « Mes adresses », historique des commandes et espace de téléchargement.
 
Fiche produit de la boutique

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

 
Statistiques de la place de marché

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.

FAQ