Module UltimateMarketPlace DE: Difference between revisions

Jump to navigation Jump to search
no edit summary
Tag: 2017 source edit
No edit summary
Tag: 2017 source edit
Line 1: Line 1:
[[Category:Modules]]
[[Category:Modules]]
[[Category:AtooNet]]
[[Category:AtooNet]]
{{TemplateDocDev}}
{{TemplateDocUtil}}


=Modul UltimateMarketPlace=
=UltimateMarketPlace module=


==Übersicht==
==Overview==


Das Modul '''UltimateMarketPlace''' ist eine Erweiterung für Dolibarr ERP/CRM, veröffentlicht von [https://www.atoo-net.com Atoo-Net].
The '''UltimateMarketPlace''' module is an extension for Dolibarr ERP/CRM published by [https://www.atoo-net.com Atoo-Net].


Es stellt alle Funktionen bereit, um einen '''Online-Marktplatz mit einem einzigen Verkäufer''' zu betreiben: eine einsatzbereite Website-Vorlage (Produktkatalog, Warenkorb, Bestellstrecke, Kundenkonten), nutzbar mit dem Website-Modul von Dolibarr, um Ihre eigenen Produkte und Dienstleistungen direkt online zu verkaufen.
It provides everything needed to publish a '''single-vendor online marketplace''': a ready-to-use website template (product catalogue, cart, checkout, customer accounts, download area), used with the Dolibarr Website module, to sell your own products and services directly online.


Es handelt sich um einen vereinfachten Fork des Dolibarr-Moduls „Marketplace" (verwendet für dolistore.com), aus dem alles entfernt wurde, was spezifisch für die Dolibarr-Vereinigung ist, sowie der Multi-Verkäufer-Ablauf mit Einreichung und Prüfung von Modulen durch Drittentwickler.
It is a simplified fork of the Dolibarr "Marketplace" module (used for dolistore.com), from which everything specific to the Dolibarr association, as well as the multi-vendor circuit / module submission and review by third-party developers, has been removed.


{| class="wikitable"
{| class="wikitable"
|-
|-
!Eigenschaft!!Wert
!Property!!Value
|-
|-
|Autor||Philippe Grand — Atoo-Net
|Author||Philippe Grand — Atoo-Net
|-
|-
|Version||1.0
|Version||24.0.0
|-
|-
|Lizenz||GNU GPL v3+
|License||GNU GPL v3+
|-
|-
|Dolibarr minimum||v24.0
|Minimum Dolibarr||v24.0
|-
|-
|PHP minimum||v8.0
|Minimum PHP||v8.2
|}
|}


==Warum UltimateMarketPlace verwenden?==
==Why use UltimateMarketPlace?==


UltimateMarketPlace verwandelt Ihre Dolibarr-Installation in einen eigenständigen Online-Shop, ohne von einem CMS oder einer Drittanbieter-E-Commerce-Plattform (wie PrestaShop, WooCommerce …) abhängig zu sein. Katalog, Bestellungen, Rechnungen und Kunden bleiben nativ in Dolibarr.
UltimateMarketPlace turns your Dolibarr installation into a standalone online shop, without relying on a CMS or a third-party e-commerce platform (PrestaShop, WooCommerce…). Catalogue, orders, invoices and customers stay natively in Dolibarr.


===Anwendungsfälle===
===Use cases===


====Verkauf physischer oder dematerialisierter Produkte====
====Selling physical or digital products====
Veröffentlichen Sie Ihren Produkt- oder Dienstleistungskatalog direkt aus den Dolibarr-Produktdatenblättern. Das Modul verwaltet sowohl physische Güter (mit Versandkosten) als auch dematerialisierte Artikel (Downloads, Lizenzen, Dienstleistungen).
Publish your catalogue of products or services directly from the Dolibarr product cards: just place them under the root category of the shop. Files attached to the product can be delivered to the customer in their download area after payment.


====Kundenbindung für Geschäftskunden====
====Subscriptions and time-limited licences====
Dank automatischer Rabatte für „bevorzugte Kunden" (dedizierte Drittkategorie) bieten Sie Ihren besten Kunden einen ausgehandelten Vorzugspreis, mit der Möglichkeit, bestimmte Produkte vom Rabatt auszuschließen.
With the product validity duration and the Dolibarr price levels ("Multiprices"), sell the same product with several subscription durations: download links expire automatically at the end of the purchased period.


====Verkaufsaktionen und Gutscheincodes====
====Preferential prices for your best customers====
Erstellen Sie Rabattcodes (Prozentsatz oder Festbetrag), zeitlich oder in der Anzahl der Verwendungen begrenzt, gegebenenfalls auf ein bestimmtes Produkt beschränkt, um Ihre Online-Verkäufe zu beleben.
'''Category discounts''' link a customer category to a product category: the discounted price is displayed automatically as soon as the customer is logged in, with no code to enter.


====Zusatzverkauf (Upselling) im Warenkorb====
====Sales campaigns and coupon codes====
Bieten Sie automatisch ein ergänzendes Produkt im Warenkorb an (z. B. Versicherung, Garantie, Umweltabgabe), berechnet als Prozentsatz der Gesamtsumme und auf ausgewählte Länder beschränkt.
Create discount codes (percentage or fixed amount), limited in time or in number of uses, each one reserved for a given product, to boost your online sales.


====Online-Zahlung====
====Online payment====
Verbinden Sie die Bestellstrecke mit den bereits in Dolibarr konfigurierten Zahlungsarten (Stripe, PayPal, Überweisung …), entweder über eine klassische Weiterleitung zu Ihrem Backoffice oder als integrierten Frame im Shop.
Connect the checkout to the online payment modules already configured in Dolibarr (Stripe, PayPal…), either with a classic redirection to the public payment pages, or embedded in a frame of the shop.


====Besucherstatistik====
====SEO and audience tracking====
Integrieren Sie Matomo Analytics, um Besucherverkehr und Kaufverhalten in Ihrem Shop zu verfolgen, ohne von Google Analytics abhängig zu sein.
Simplified URLs, automatically generated <code>sitemap.xml</code>, <code>robots.txt</code> and <code>llms.txt</code>, Schema.org markup, Google Search Console verification and Matomo Analytics integration to track traffic without relying on Google Analytics.


==Installation==
==Installation==


'''Voraussetzungen''': Das Modul benötigt folgende aktivierte Dolibarr-Module (sie werden bei Bedarf automatisch aktiviert): Kunden/Lieferanten, Produkte, Dienstleistungen, Kategorien, Bestellungen, Rechnungen, Bank, Mailing und Website.
'''Requirements''':
*Dolibarr 24.0 or later and PHP 8.2 or later;
*the shop pages contain dynamic PHP code: before enabling the module, add the line <code>$dolibarr_website_allow_custom_php = '1';</code> to <code>htdocs/conf/conf.php</code> (value <code>2</code> if the PHP system functions <code>exec</code>, <code>passthru</code>, <code>shell_exec</code>, <code>system</code>, <code>popen</code> and <code>proc_open</code> are not disabled in <code>php.ini</code>). Without this line, Dolibarr refuses to import the website template and the shop remains empty;
*the Dolibarr modules Third parties, Products, Services, Categories, Orders, Invoices, Banks, Emailings and Website are required: they are enabled automatically with the module.


#Das Modul von [https://www.dolistore.com DoliStore] herunterladen oder das Git-Repository nach <code>htdocs/custom/ultimatemarketplace</code> klonen
#Download the module from [https://www.dolistore.com DoliStore] or clone the Git repository into <code>htdocs/custom/ultimatemarketplace</code>
#Zu '''Home → Konfiguration → Module/Anwendungen''' gehen
#Go to '''Home → Setup → Modules/Applications'''
#'''UltimateMarketPlace''' im Bereich '''AtooNet''' suchen
#Find '''Ultimate Market Place''' in the '''Websites and other frontal application''' family
#Das Modul über die Schaltfläche in der Spalte ''Aktiviert'' aktivieren
#Enable the module by clicking the button in the ''Enabled'' column


[[File:ultimatemarketplace_activation.png|center|thumb|800px|Aktivierung des Moduls UltimateMarketPlace im Bereich AtooNet]]
[[File:Ultimatemarketplace-v25-activation-en.png|center|thumb|800px|Enabling the UltimateMarketPlace module]]


Bei der Aktivierung führt das Modul automatisch mehrere Aktionen aus:
When enabled, the module automatically performs several actions:


*Erstellung einer '''eigenen Website''' (Referenz <code>ultimatemarketplace</code>) mit der importierten Website-Vorlage "website_template-ultimatemarketplace"
*Enables multilingual management (<code>MAIN_MULTILANGS</code>), since product cards can be translated
*Erstellung einer '''Produkt-Stammkategorie''' für die auf dem Marktplatz sichtbaren Artikel
*Creates a '''root product category''' and a "prospect/customer" '''third-party category''' if none is configured yet
*Erstellung einer '''Kundenkategorie''' für Kunden/Interessenten, die über die Shop-Website angelegt werden
*Registers the module's own invoice PDF template
*Hinzufügen von 3 '''Produkt-Zusatzfeldern''': Trenner "Marketplace", Kommentar nach dem Preis (<code>PriceComment</code>) und öffentlicher Warnhinweis (<code>DisclaimerMessage</code>)
*Creates (or re-enables) a '''dedicated website''' into which the website template provided by the module is imported


==Konfiguration==
'''Update''': after replacing the files, disable then enable the module again (your settings are kept). To bring the website pages in line with the new version, then use the '''Reset website template''' button (see [[#Maintenance mode and template reset|Maintenance mode]]).


Die Konfiguration des Moduls erfolgt unter '''Home → Konfiguration → Module/Anwendungen → UltimateMarketPlace''', aufgeteilt auf mehrere Reiter.
The module declares no permission of its own: the administration pages are reserved for Dolibarr administrators, and the shop pages use their own customer session.


===Allgemein: Produkte und Kunden===
==Configuration==
 
The module is configured in '''Home → Setup → Modules/Applications → Ultimate Market Place''', spread over several tabs: '''Settings''', '''Setup of payments''', '''Coupon codes''', '''Category discounts''', '''Security''', '''Setup of API server''' (shown only if the REST API module is enabled), '''Matomo Analytics''', '''Carousel''', '''User guide''' and '''About'''.
 
Before opening the website to the public, go through the tabs in this order: Settings (Miscellaneous, Products, Third parties, Website and Email templates sections), Setup of payments, Security, then disable maintenance mode.
 
===Settings===
 
[[File:Ultimatemarketplace-v25-setup-en.png|center|thumb|800px|Settings tab of the module setup]]
 
====Miscellaneous====


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Setting!!Constant!!Description
|-
|Market place name||<code>ULTIMATEMARKETPLACE_NAME</code>||Name of the shop: title of the home page, title of <code>llms.txt</code>, sender name on the PDF invoice
|-
|Market place description / Market place keywords||<code>ULTIMATEMARKETPLACE_DESCRIPTION</code> / <code>_KEYWORDS</code>||Meta description and keywords of the home page, translatable per language
|-
|Market place email||<code>ULTIMATEMARKETPLACE_EMAIL</code>||Public contact email displayed on the website
|-
|Maintenance mode||<code>ULTIMATEMARKETPLACE_MAINTENANCE_MODE</code>||Closes the shop to the public and blocks sales
|-
|Block new registrations||<code>ULTIMATEMARKETPLACE_BLOCK_REGISTRATION</code>||Closes the creation of new customer accounts
|-
|IP addresses allowed to bypass maintenance mode and the registration block||<code>ULTIMATEMARKETPLACE_MAINTENANCE_MODE_ALLOWED_IPS</code>||Whitelist of IP addresses (for example the office one)
|-
|Sidebar cache duration||<code>ULTIMATEMARKETPLACE_SIDEBAR_CACHE_ENABLED</code> / <code>_SIDEBAR_CACHE_DURATION</code>||Sidebar cache in minutes (5 by default), with a button to clear the website cache
|}
 
====Products====
 
{| class="wikitable"
|-
|-
|<code>ULTIMATEMARKETPLACE_NAME</code>||Name des Marktplatzes
!Setting!!Constant!!Description
|-
|-
|<code>ULTIMATEMARKETPLACE_EMAIL</code>||Kontakt-E-Mail des Marktplatzes
|Root category for products to sell on the marketplace||<code>ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID</code>||Products/services of this category and its subcategories make up the catalogue (mandatory)
|-
|-
|<code>ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID</code>||Stammkategorie der auf dem Marktplatz verkauften Produkte
|Category featured in the central block of the home page||<code>ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID_BIS</code>||Optional, the root category otherwise
|-
|-
|<code>ULTIMATEMARKETPLACE_ROOT_CATEGORY_ID_BIS</code>||Kategorie, die im zentralen Block der Startseite hervorgehoben wird
|Category for the widget "Version"||<code>ULTIMATEMARKETPLACE_VERSIONS_CATEGORY_ID</code>||Products carrying version numbers (downloadable software)
|-
|-
|<code>ULTIMATEMARKETPLACE_VERSIONS_CATEGORY_ID</code>||Kategorie, die vom Widget "Version" der Startseite verwendet wird
|Category for the widget "Promotions"||<code>ULTIMATEMARKETPLACE_SPECIAL_CATEGORY_ID</code>||Products displayed with a promotion badge
|-
|-
|<code>ULTIMATEMARKETPLACE_SPECIAL_CATEGORY_ID</code>||Kategorie, die vom Widget "Aktionen" der Startseite verwendet wird
|Minimum product price||<code>ULTIMATEMARKETPLACE_MIN_PRODUCT_PRICE</code>||Paid products below this price are excluded from the catalogue
|-
|-
|<code>ULTIMATEMARKETPLACE_MIN_PRODUCT_PRICE</code>||Mindestpreis eines Produkts (falls dieses nicht kostenlos ist)
|Maximum age (in days) for a product to be visible into the "New products" section||<code>ULTIMATEMARKETPLACE_DELAY_FOR_NEW</code>||30 days by default
|-
|-
|<code>ULTIMATEMARKETPLACE_DELAY_FOR_NEW</code>||Maximales Alter (in Tagen), damit ein Produkt im Bereich "Neuheiten" erscheint
|Category to force the "New product" status||<code>ULTIMATEMARKETPLACE_NEW_CATEGORY_ID</code> / <code>_NEW_CATEGORY_MAX_AGE</code>||Forces the "New" badge; a daily scheduled job removes products from it after the given delay
|-
|-
|<code>ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_ID</code>||Kategorie, die allen über die Shop-Website angelegten Interessenten/Kunden zugewiesen wird
|Enable product validity duration||<code>ULTIMATEMARKETPLACE_ENABLE_PRODUCT_VALIDITY_DURATION</code>||Validity start and end dates on order lines, which drive the expiry of downloads; durations per price level if "Multiprices" are enabled
|}
|}


===Rabatte für bevorzugte Kunden===
====Third parties====


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Setting!!Constant!!Description
|-
|-
|<code>ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_PREFERRED_ID</code>||Kategorie der als "bevorzugt" gekennzeichneten Kunden, die für den Rabatt berechtigt sind
|Category for all prospects or customers created from the marketplace website||<code>ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_ID</code>||Category assigned to every third party created by the registration form
|-
|-
|<code>ULTIMATEMARKETPLACE_PROSPECTCUSTOMER_PREFERRED_DISCOUNT</code>||Rabattprozentsatz, der diesen Kunden gewährt wird
|Enable multiple addresses||<code>ULTIMATEMARKETPLACE_ENABLE_MULTI_ADDRESS</code>||"My addresses" section of the customer account (billing and shipping addresses)
|-
|-
|<code>ULTIMATEMARKETPLACE_DISCOUNT_EXCLUDE_PRODUCTS_CATEGORY_ID</code>||Kategorie der von diesem Rabatt ausgeschlossenen Produkte
|Convert prospect to customer on their first payment||<code>ULTIMATEMARKETPLACE_CONVERT_PROSPECT_TO_CUSTOMER_ON_FIRST_PAYMENT</code>||The prospect becomes a customer as soon as their first invoice is paid
|}
|}


===Website===
====Website====


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Setting!!Constant!!Description
|-
|URL for the logo of the marketplace||<code>ULTIMATEMARKETPLACE_URL_FOR_LOGO</code>||Logo of the website header; otherwise the company logo, then a logo provided with the module
|-
|URL of the welcome image / Hide the welcome image||<code>ULTIMATEMARKETPLACE_WELCOME_IMAGE_URL</code> / <code>_WELCOME_IMAGE_HIDE</code>||Banner of the home page
|-
|Main theme color / Secondary theme color||<code>ULTIMATEMARKETPLACE_THEME_COLOR</code> / <code>_SECONDARY_COLOR</code>||Theme colors (<code>#a45931</code> and <code>#333333</code> by default)
|-
|Enable simplified URLs||<code>ULTIMATEMARKETPLACE_FRIENDLY_URLS</code>||URLs such as <code>/en/123-product-name.html</code>
|-
|Google Search Console verification token||<code>ULTIMATEMARKETPLACE_GOOGLE_SITE_VERIFICATION</code>||Verification meta tag
|-
|llms.txt description||<code>ULTIMATEMARKETPLACE_LLMS_DESCRIPTION</code>||Presentation sentence of the website in <code>llms.txt</code>
|-
|-
|<code>ULTIMATEMARKETPLACE_URL_FOR_LOGO</code>||URL des Marktplatz-Logos
|User with permissions to perform website operations||<code>ULTIMATEMARKETPLACE_USER_MANAGE_WEBSITE</code>||Technical user used by the shop (creation of third parties, orders…)
|-
|-
|<code>ULTIMATEMARKETPLACE_THEME_COLOR</code>||Hauptfarbe des Themes (Schaltflächen, Banner, hervorgehobene Elemente)
|Website to use for the marketplace||<code>ULTIMATEMARKETPLACE_WEBSITE_ID</code>||Dolibarr website managed by the module, set when the module is enabled
|-
|-
|<code>ULTIMATEMARKETPLACE_WEBSITE_ID</code>||Von Dolibarr für den Marktplatz verwendete Website
|Always delete the draft order on logout||<code>ULTIMATEMARKETPLACE_DELETE_ORDER_ON_LOGOUT</code>||Empties the current cart when the customer logs out
|-
|-
|<code>ULTIMATEMARKETPLACE_USER_MANAGE_WEBSITE</code>||Technischer Benutzer, der berechtigt ist, die Aktionen der Website auszuführen (Produkte hinzufügen, Kunden verwalten, Bestellungen anlegen)
|Show a cookie consent banner||<code>ULTIMATEMARKETPLACE_ENABLE_COOKIE_BANNER</code>||Consent banner on the website
|}
|}


'''Wichtig''': Wenn Sie die zugeordnete Website ändern (<code>ULTIMATEMARKETPLACE_WEBSITE_ID</code>), bleiben bereits angelegte Benutzer, Kunden und Bestellungen mit der alten Website verknüpft und werden nicht automatisch migriert.
'''Important''': if you change the associated website (<code>ULTIMATEMARKETPLACE_WEBSITE_ID</code>), the users, third parties and orders already created stay linked to the former website and are not migrated automatically.


===E-Mail-Vorlagen===
====Email templates====


Drei Dolibarr-E-Mail-Vorlagen können angepasst werden:
Three drop-down lists let you choose, among the Dolibarr email templates ('''Setup → Emails → Templates'''), the one of the welcome email sent when the account is created (<code>ULTIMATEMARKETPLACE_WELCOME_EMAIL_TEMPLATE</code>), the one of the "Forgotten password" email (<code>ULTIMATEMARKETPLACE_FORGOT_PASSWORD_EMAIL_TEMPLATE</code>) and the one of the buyer's order confirmation (<code>ULTIMATEMARKETPLACE_BUYER_ORDER_CONFIRMATION_TEMPLATE</code>).


*'''Willkommens-E-Mail''', die bei der Erstellung des Kundenkontos gesendet wird
===Setup of payments===
*'''"Passwort vergessen"-E-Mail'''
*'''Bestellbestätigungs-E-Mail''', die an den Käufer gesendet wird


===Zusatzprodukt im Warenkorb===
[[File:Ultimatemarketplace-v25-payment-en.png|center|thumb|800px|Setup of payments tab]]
 
Ermöglicht das automatische Hinzufügen eines ergänzenden Produkts (Versicherung, Garantie, Umweltabgabe …) zum Warenkorb:


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Setting!!Constant!!Description
|-
|-
|<code>ULTIMATEMARKETPLACE_ADDITIONAL_PRODUCT_IN_CART_ID</code>||Hinzuzufügendes Zusatzprodukt
|Block sales on the marketplace||<code>ULTIMATEMARKETPLACE_BLOCK_SALES</code>||The catalogue can still be browsed but ordering is disabled; forced while maintenance mode is active
|-
|-
|<code>ULTIMATEMARKETPLACE_ADDITIONAL_PRODUCT_TOTAL_PERCENT</code>||Preis des Zusatzprodukts, ausgedrückt in % der Warenkorbsumme
|Auto close orders on successful payment||<code>ULTIMATEMARKETPLACE_CLOSE_ORDER_AFTER_PAYMENT</code>||Closes the Dolibarr order once the payment is confirmed
|-
|-
|<code>ULTIMATEMARKETPLACE_ADDITIONAL_PRODUCT_APPLICABLE_COUNTRIES</code>||Ländercodes, für die dieses Zusatzprodukt gilt
|Select the payment method to use||<code>ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD</code>||Dolibarr online payment module used when the order is validated
|-
|Include the payment pages provided by Dolibarr inside a frame of the market place shop (advanced users)||<code>ULTIMATEMARKETPLACE_PAYMENT_IN_FRAME</code>||Payment displayed in a frame under the shop domain
|}
|}


===Versandkosten===
Two payment integration modes are available:
 
*'''Separate page''' (default): no particular setup, the customer is redirected to the public payment pages of your Dolibarr. Drawback: the back-office domain is visible to the customer.
*'''Frame''' (advanced users, Stripe and Stancer): the payment page is called through a URL of the shop itself. A reverse proxy rule is required on the shop web server; a configuration example is displayed on the page once the option is enabled.
 
===Coupon codes===
 
[[File:Ultimatemarketplace-v25-coupons-en.png|center|thumb|800px|Coupon codes tab]]
 
Each coupon code is linked to '''one given product''' and has a discount type (percentage or fixed amount), a value, optional validity dates and maximum number of uses, and an active/inactive flag. The buyer enters the code in the cart: it is accepted only if it is active, within its validity dates, under its usage limit and if the product concerned is in the cart. The usage counter is only incremented when the order is validated.
 
===Category discounts===
 
[[File:Ultimatemarketplace-v25-discounts-en.png|center|thumb|800px|Category discounts tab]]
 
A category discount links a '''customer category''' to a '''product category''' with a discount percentage. For a logged-in customer belonging to this category, the discounted price is displayed directly on the product page and in the cart, with no code to enter. If several rules apply, the highest percentage wins.


{| class="wikitable"
===Security===
|-
!Konstante!!Beschreibung
|-
|<code>ULTIMATEMARKETPLACE_SHIPPING_FEES_PRODUCT</code> / <code>ULTIMATEMARKETPLACE_SHIPPING_FEES_PRODUCT_ID</code>||Dolibarr-Produkt, das zur Abrechnung der Versandkosten verwendet wird
|}


===Registrierung: Google reCAPTCHA===
[[File:Ultimatemarketplace-v25-security-en.png|center|thumb|800px|Security tab]]


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Setting!!Constant!!Description
|-
|Captcha provider||<code>ULTIMATEMARKETPLACE_CAPTCHA_PROVIDER</code>||None, Google reCAPTCHA or Cloudflare Turnstile, with their site keys and secret keys
|-
|-
|<code>ULTIMATEMARKETPLACE_GOOGLE_RECAPTCHA_REGISTER_FORM</code>||Aktiviert Google Captcha im Registrierungsformular
|Enable this protection||<code>ULTIMATEMARKETPLACE_LOGIN_PROTECTION_ENABLED</code>||Limits the login attempts on the shop
|-
|-
|<code>ULTIMATEMARKETPLACE_GOOGLE_RECAPTCHA_SITE_KEY</code>||Von Google bereitgestellter öffentlicher reCAPTCHA-Schlüssel
|Number of failures before blocking / Duration before unblocking (minutes)||<code>ULTIMATEMARKETPLACE_LOGIN_MAX_ATTEMPTS</code> / <code>_LOGIN_BLOCK_DURATION</code>||5 failures and 15 minutes by default
|-
|-
|<code>ULTIMATEMARKETPLACE_GOOGLE_RECAPTCHA_SECRET_KEY</code>||Privater reCAPTCHA-Schlüssel (vertraulich zu behandeln)
|IP addresses allowed to bypass this protection||<code>ULTIMATEMARKETPLACE_LOGIN_BYPASS_IPS</code>||Whitelist (automated tests, trusted network)
|}
|}


===Zahlung===
The captcha and the login protection are disabled by default: configure them before opening registration to the public.
 
===Setup of API server===
 
This tab only appears if the Dolibarr '''REST API''' module is enabled. It contains the '''Public API key''' (<code>ULTIMATEMARKETPLACE_PUBLIC_API_KEY</code>, with a button to generate one), passed as the <code>apikey</code> parameter to the two read-only public endpoints added by the module: <code>/api/index.php/ultimatemarketplace/categories</code> and <code>/api/index.php/ultimatemarketplace/products</code>.
 
===Matomo Analytics===
 
[[File:Ultimatemarketplace-v25-matomo-en.png|center|thumb|800px|Matomo Analytics tab]]


{| class="wikitable"
{| class="wikitable"
|-
|-
!Konstante!!Beschreibung
!Constant!!Description
|-
|<code>ULTIMATEMARKETPLACE_ENABLE_MATOMO</code>||Enables Matomo on the website: the tracking code is injected into every page
|-
|-
|<code>ULTIMATEMARKETPLACE_BLOCK_SALES</code>||Blockiert vorübergehend die Verkäufe auf dem Marktplatz
|<code>ULTIMATEMARKETPLACE_MATOMO_SITE_KEY</code>||Matomo site ID
|-
|-
|<code>ULTIMATEMARKETPLACE_CLOSE_ORDER_AFTER_PAYMENT</code>||Schließt die Bestellung automatisch nach erfolgreicher Zahlung ab
|<code>ULTIMATEMARKETPLACE_MATOMO_SERVER_URL</code>||Full URL of the Matomo server
|-
|-
|<code>ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD</code>||Zu verwendende Zahlungsart
|<code>ULTIMATEMARKETPLACE_MATOMO_AUTH_TOKEN</code>||Optional authentication token, needed to display Matomo statistics in Dolibarr
|}
|}


Es gibt zwei mögliche Arten der Zahlungsintegration:
===Carousel===
 
[[File:Ultimatemarketplace-v25-carousel-en.png|center|thumb|800px|Carousel tab]]
 
Settings of the home page carousel: transition type (none, fade, slide), speed in milliseconds, pause on mouse hover and loop. Each slide has an image, an optional link and a title; the order is changed by drag and drop and images are chosen or uploaded through an image selector.
 
===User guide===
 
[[File:Ultimatemarketplace-v25-guide-en.png|center|thumb|800px|User guide tab]]
 
The '''User guide''' tab displays, in the user's language, a complete guide to configuring and running the module, as text only: the screenshots are on this page.
 
==Usage==
 
===Online shop===


*'''Separate Seite''' (Standard): keine besondere Konfiguration nötig, der Kunde wird zu den öffentlichen Zahlungsseiten Ihres Dolibarr-Backoffice weitergeleitet. Nachteil: Die Domain des Backoffice ist für den Kunden sichtbar.
[[File:Ultimatemarketplace-v25-shop-home-en.png|center|thumb|800px|Home page of the shop]]
*'''Frame''' (für fortgeschrittene Benutzer): Die Zahlungsseite des Backoffice wird über eine URL des Marktplatz-Shops selbst aufgerufen. Erfordert eine Proxy-Konfiguration auf dem Webserver des Marktplatzes, um Anfragen an das Dolibarr-Backoffice weiterzuleiten. Vorteil: Die Domain des Backoffice bleibt verborgen.


===API===
The website generated by the module uses the logo and colors defined in the setup and offers:


{| class="wikitable"
#a catalogue organised by categories, with the "New" and "Promotions" badges and a carousel on the home page;
|-
#a product page with the price (category discount already applied) and, for products with price levels, the choice of the duration;
!Konstante!!Beschreibung
#a cart, kept in session until validation, with a coupon code field;
|-
#a checkout linked to the chosen online payment module;
|<code>ULTIMATEMARKETPLACE_PUBLIC_API_KEY</code>||Öffentlicher Schlüssel für den Zugriff auf die Produkt-/Kategorien-API
#a customer area: personal information, "My addresses", order history and download area.
|}


Die API liefert einen XML-Feed der Produkte und Kategorien, mit den Parametern <code>categorieid</code>, <code>limit</code>, <code>page</code>, <code>search</code> und <code>lang</code>. Ein Proxy-Routing kann eingerichtet werden, um die tatsächliche API-URL hinter der Domain des Shops zu verbergen.
[[File:Ultimatemarketplace-v25-shop-product-en.png|center|thumb|800px|Product page of the shop]]


===Matomo===
Validating the cart creates a standard Dolibarr order; the payment produces a standard Dolibarr invoice.


{| class="wikitable"
===Files delivered to the customer===
|-
!Konstante!!Beschreibung
|-
|<code>ULTIMATEMARKETPLACE_ENABLE_MATOMO</code>||Aktiviert Matomo Analytics auf der Marktplatz-Website
|-
|<code>ULTIMATEMARKETPLACE_MATOMO_SITE_KEY</code>||Matomo Site-ID
|-
|<code>ULTIMATEMARKETPLACE_MATOMO_SERVER_URL</code>||Vollständige URL des Matomo-Servers
|}


===Gutscheincodes (Coupons)===
The '''Shop files''' tab of the product card shows, for each attached file, whether it is displayed on the public product page. A file ticked "'''Main file'''" or "'''Visible to customer'''" can be downloaded by the customer once their order is paid; a warning is displayed if no file of the product is. If the product validity duration is enabled, the download link expires at the end of the purchased period; otherwise it never expires.


Ein eigener Reiter '''Gutscheincodes''' ermöglicht das Erstellen von Rabattcodes:
===UltimateMarketPlace menu===


*'''Rabattart''': Prozentsatz oder fester Nettobetrag
[[File:Ultimatemarketplace-v25-statistics-en.png|center|thumb|800px|Marketplace statistics]]
*'''Maximale Anzahl von Verwendungen''' (leer lassen für unbegrenzte Nutzung)
*Mögliche Beschränkung auf ein '''bestimmtes Produkt'''
*Verfolgung der bereits erfolgten Verwendungen


[[File:ultimatemarketplace_coupons.png|center|thumb|800px|Verwaltungsreiter für Gutscheincodes]]
The '''Marketplace''' main menu gives access to:


Der Code wird bei seiner Anwendung im Warenkorb geprüft: Ein nicht vorhandener, abgelaufener oder bereits vollständig verwendeter Code wird abgelehnt (Meldung "Dieser Gutscheincode ist ungültig, abgelaufen oder bereits verwendet").
*'''Statistics''': invoice statistics, customer statistics, product statistics, list of sales and, if Matomo is configured, Matomo statistics;
*'''Products without tags''': catalogue products without keywords, to check the quality of the catalogue;
*'''Shopping carts''' and '''Invoices''': standard Dolibarr order and invoice lists, filtered on those coming from the shop.


==Verwendung==
===Maintenance mode and template reset===


===Online-Shop (Frontend)===
'''Maintenance mode''' closes the website to the public (except for the allowed IP addresses) and blocks sales. While it is active, the Settings tab offers two buttons:


Die vom Modul generierte Website übernimmt das in der Konfiguration festgelegte Erscheinungsbild (Logo, Hauptfarbe) und bietet:
*'''Generate sitemap.xml''': immediately regenerates <code>sitemap.xml</code>;
*'''Reset website template''': re-imports the module's website template into the existing website, '''overwriting the changes made by hand in the page editor'''. To be used after a module update.


#Einen nach Kategorien gegliederten Produktkatalog, mit Hervorhebung von '''Neuheiten''' und '''Aktionen'''
Remember to disable maintenance mode once the checks are done: it does not turn itself off.
#Ein Produktdatenblatt mit Preis, freiem Kommentar nach dem Preis und öffentlichem Warnhinweis, sofern konfiguriert
#Einen Warenkorb mit Anwendung von Gutscheincodes, automatischer Berechnung der Rabatte für "bevorzugte Kunden" und Hinzufügen des eventuellen Zusatzprodukts
#Eine mit den in Dolibarr konfigurierten Zahlungsarten verbundene Bestellstrecke
#Einen Kundenbereich (Registrierung, Anmeldung, Bestellhistorie), geschützt durch Google reCAPTCHA, sofern aktiviert


[[File:ultimatemarketplace_home.png|center|thumb|800px|Startseite des von UltimateMarketPlace generierten Shops]]
===SEO===


===Verwaltung der Produkt-Tags===
<code>robots.txt</code>, <code>sitemap.xml</code> and <code>llms.txt</code> are regenerated automatically when the module is enabled, when the Settings tab is opened and after a template reset. Once simplified URLs are enabled, the old URLs remain valid during the transition.


Das Menü '''UltimateMarketPlace → Produkte ohne Tags''' listet die Produkte/Dienstleistungen des Marktplatzes auf, die noch keiner Kategorie/keinem Tag zugeordnet wurden, um ihnen im Batch einen oder mehrere Tags (Kategorien) zuzuweisen.
==What's new in version 24.0.0==


===Statistiken===
===Compatibility===
*'''Dolibarr 24 and PHP 8.2 minimum''': the module now requires Dolibarr 24.0.0 and PHP 8.2; it is tested up to PHP 8.5. The update check reads <code>versionmodules/ultimatemarketplace/v24/ultimatemarketplace.txt</code>.
*'''Numbering aligned with Dolibarr''': after 1.0.8, the module moves straight to 24.0.0, like the other Atoo-Net modules.


Das Modul fügt dem Marktplatz gewidmete Statistikseiten hinzu:
===Translations===
*The shop cart block displayed raw keys (<code>quantity</code>, <code>total</code>, <code>shipping</code>, <code>FreeShipping</code>): it now loads the module translations. Reset the website template to benefit from it.
*Added the missing labels of the shop pages (references, VAT, items, adding and removing addresses, registration form checks…) and of the administration messages, in the five languages.
*Translated into French, German, Spanish and Italian the labels that only existed in English.


*Statistiken zu '''Rechnungen''' und '''Verkäufen''' (Gruppierung nach Land/MwSt.-Satz oder nach Zone/MwSt.-Satz)
===Documentation and distribution===
*'''Kunden'''-Statistiken (zuletzt angelegte Kunden, zuletzt angelegte "bevorzugte" Kunden)
*User guide: requirements and compatibility section; the English guide becomes <code>GUIDE_UTILISATEUR-EN.md</code>.
*'''Produkt-/Dienstleistungs'''-Statistiken (Rangliste nach Beliebtheit)
*Wiki page rewritten from the current screens, with screenshots in the five languages.
*DoliStore package build script and continuous integration (dependency installation and syntax check under PHP 8.4 and 8.5).


===Nachverfolgung von Bestellungen und Rechnungen===
==Previous versions==


Zwei Menüeinträge ermöglichen es, schnell die vom Marktplatz stammenden Bestellungen und Rechnungen wiederzufinden (gefiltert nach <code>module_source = ultimatemarketplace</code>).
The details of versions 1.0.0 to 1.0.8 (coupon codes, category discounts, carousel, login protection, simplified URLs, <code>llms.txt</code>, user guide…) are in the <code>ChangeLog.md</code> file shipped with the module.


==FAQ==
==FAQ==


===Die Marktplatz-Website wurde nicht automatisch erstellt===
===The marketplace website was not created or the shop is empty===
Prüfen Sie, ob das Website-Modul von Dolibarr aktiviert ist. Existiert die Website nach der Aktivierung des Moduls immer noch nicht, deaktivieren und reaktivieren Sie UltimateMarketPlace.
Check that the line <code>$dolibarr_website_allow_custom_php</code> is present in <code>conf.php</code>, then disable and enable the module again. Without this line, Dolibarr refuses to import the template pages, which contain PHP code.
 
===The cart block displays "quantity" or "FreeShipping"===
The website still uses the pages of an earlier version of the module. Switch to maintenance mode and click '''Reset website template''' in the Settings tab.
 
===How do I change the website used without losing the existing orders?===
It is not recommended: changing <code>ULTIMATEMARKETPLACE_WEBSITE_ID</code> does not migrate the users, third parties and orders already created to the new website. They remain associated with the former website.


===Wie ändere ich die verwendete Website, ohne die bestehenden Bestellungen zu verlieren?===
===What is the difference between a coupon code and a category discount?===
Das wird nicht empfohlen: Das Ändern von <code>ULTIMATEMARKETPLACE_WEBSITE_ID</code> migriert bereits angelegte Benutzer, Kunden und Bestellungen nicht zur neuen Website. Sie bleiben mit der alten Website verknüpft.
The coupon code is entered by the buyer and only applies to one given product. The category discount is automatic: it applies to all the products of a category for the customers of a given category, as soon as they are logged in.


===Kann ich den Rabatt für "bevorzugte Kunden" auf bestimmte Produkte beschränken?===
===The customer cannot download the purchased product===
Ja, indem Sie <code>ULTIMATEMARKETPLACE_DISCOUNT_EXCLUDE_PRODUCTS_CATEGORY_ID</code> mit einer Kategorie konfigurieren, die die vom Rabatt auszuschließenden Produkte zusammenfasst.
Check, in the '''Shop files''' tab of the product, that a file is ticked "Main file" or "Visible to customer". The home page of the '''Marketplace''' menu reports products already sold that no longer have a deliverable file.


===Ist die Zahlung per Frame verpflichtend?===
===Is payment in a frame mandatory?===
Nein, das ist eine Option für fortgeschrittene Benutzer. Standardmäßig leitet die Zahlung einfach zu den öffentlichen Zahlungsseiten Ihres Dolibarr-Backoffice weiter, ohne besondere Serverkonfiguration.
No, it is an option for advanced users. By default, payment simply redirects to the public payment pages of your Dolibarr, with no particular server setup.


===Welche Zahlungsmittel werden unterstützt?===
===Which languages are supported?===
Alle bereits nativ von Dolibarr unterstützten Zahlungsarten (Stripe, PayPal, Überweisung usw.), ausgewählt über <code>ULTIMATEMARKETPLACE_MAIN_PAYMENT_METHOD</code>.
The module and the website template are available in '''French''', '''English''', '''German''', '''Spanish''' and '''Italian'''.


==Siehe auch==
==See also==


*[https://www.atoo-net.com Atoo-Net — Modul-Herausgeber]
*[https://www.atoo-net.com Atoo-Net — Module publisher]
*[https://framagit.org/grandoc/ultimatemarketplace Modul-Repository]
*[https://framagit.org/grandoc/ultimatemarketplace Module repository]
*[https://wiki.dolibarr.org/index.php/Module_Website Dokumentation des Dolibarr-Website-Moduls]
*[https://wiki.dolibarr.org/index.php/Module_Website Documentation of the Dolibarr Website module]


==Andere Sprachen==
==Other languages==


* [[Module_UltimateMarketPlace_FR|Documentation en français du module UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_FR|Documentation en français du module UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_EN|English documentation for the UltimateMarketPlace module]]
* [[Module_UltimateMarketPlace_DE|Deutsche Dokumentation für das Modul UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_ES|Documentación en español del módulo UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_ES|Documentación en español del módulo UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_IT|Documentazione in italiano del modulo UltimateMarketPlace]]
* [[Module_UltimateMarketPlace_IT|Documentazione in italiano del modulo UltimateMarketPlace]]


[[fr:Module_UltimateMarketPlace_FR]]
[[fr:Module_UltimateMarketPlace_FR]]
[[en:Module_UltimateMarketPlace_EN]]
[[de:Module_UltimateMarketPlace_DE]]
[[es:Module_UltimateMarketPlace_ES]]
[[es:Module_UltimateMarketPlace_ES]]
[[it:Module_UltimateMarketPlace_IT]]
[[it:Module_UltimateMarketPlace_IT]]

Navigation menu