Inhaltsverzeichnis
-
Einführung
-
Was ist ein Dolibarr-Modul?
-
Die Kernarchitektur von Dolibarr
-
Wie Module in die Architektur von Dolibarr passen
-
Verzeichnis- und Dateistruktur eines typischen Moduls
-
Die Rolle des Moduldeskriptors
-
Hooks, Trigger und Events: Erweiterung der Kernfunktionalität
-
Verwalten von Datenbanktabellen in Modulen
-
Erstellen von Schnittstellen: Seiten, Formulare, Vorlagen
-
Integration mit Kernfunktionen (Menüs, Berechtigungen, PDFs)
-
Best Practices für die Anpassung ohne Kernmodifikation
-
Häufige Fehler und wie man sie vermeidet
-
Erweiterte Anpassungsszenarien
-
Aufrechterhaltung der Kompatibilität zwischen Dolibarr-Versionen
-
Fazit
-
Ressourcen und Referenzen für Entwickler
1. Einleitung
Dolibarr ERP & CRM hat sich aufgrund seiner Flexibilität, Skalierbarkeit und Benutzerfreundlichkeit zu einer weit verbreiteten Open-Source-Business-Management-Plattform entwickelt. Was Dolibarr besonders leistungsstark macht, ist seine Modulare architekturDieses Design ermöglicht Entwicklern und Unternehmen, anpassen und erweitern die Software, ohne die Kerndateien zu ändern – und so eine stabile, Upgrade-sichere Umgebung zu gewährleisten.
Dieser Artikel enthält eine tiefer Einblick in die Architektur der Dolibarr-Module, hilft Entwicklern und IT-Experten, die Funktionsweise von Modulen zu verstehen. Egal, ob Sie ein neues Modul von Grund auf neu erstellen oder vorhandene anpassen möchten – dieser Leitfaden vermittelt Ihnen detaillierte Informationen dazu, wie Sie dies effektiv, professionell und gemäß bewährter Methoden tun.
2. Was ist ein Dolibarr-Modul?
A Modulen Dolibarr ist ein eigenständiges Paket, das dem ERP-System neue Funktionen hinzufügt. Dies kann Folgendes umfassen:
-
Erstellen neuer Geschäftsobjekte (z. B. Verträge, Tickets, Zertifizierungen)
-
Hinzufügen neuer Berichte oder Dashboards
-
Integration mit APIs von Drittanbietern
-
Ändern vorhandener Arbeitsabläufe oder Benutzeroberflächen
Module ermöglichen sowohl Front-End (UI) kombiniert mit einem nachhaltigen Materialprofil. Backend (Logik, DB) Änderungen unter Beibehaltung der Kompatibilität mit dem Upgrade-Zyklus von Dolibarr.
Module können sein:
-
Kern Module: Standardmäßig mit Dolibarr geliefert
-
Module von Drittanbietern: Installiert von Dolistore oder individuell entwickelte
-
Benutzerdefinierte/private Module: Für den internen Gebrauch konzipiert, ansässig in
/htdocs/custom/
3. Die Kernarchitektur von Dolibarr
Dolibarr basiert hauptsächlich auf PHP und läuft auf einem LAMP- oder LEMP-Stack. Seine Architektur basiert auf:
-
Single-Entry-Architektur: Alle Anfragen werden durch
main.inc.php -
MVC-ähnliche Struktur: Lose modelliert mit Objekten, Controllern, Vorlagen
-
Modulare Ebene: Module werden dynamisch geladen und fügen zur Laufzeit Funktionalität hinzu
-
Berechtigungsbasiertes Sicherheitsmodell
-
Globale Konfiguration über
$confkombiniert mit einem nachhaltigen Materialprofil.$userObjekte -
Datenbankabstraktionsschicht basiert auf reinem SQL mit Hilfsfunktionen
Jede Komponente von Dolibarr – ob Rechnungen, Kunden oder Produkte – wird mithilfe eines Basisobjektmodell die über Module erweiterbar sind.
4. Wie Module in die Architektur von Dolibarr passen
Module sitzen auf der Kernanwendung und interagieren mit ihr über:
-
Ereignis-Listener (Trigger)
-
Hooks (Plugins auf Schnittstellenebene)
-
Benutzerdefinierte Seiten und Formulare
-
Berechtigungen und Menüergänzungen
-
Datenbanktabellenerweiterungen
-
REST-API-Endpunkte (optional)
Wenn ein Modul aktiviert wird, lädt Dolibarr dynamisch:
-
Seine Menüs
-
Berechtigungen
-
Benutzerdefinierte Konfigurationen
-
Auslöser und Haken
-
Benutzerdefinierte Objekte (Klassen, Vorlagen, Formulare)
Diese Trennung gewährleistet saubere modulare Entwicklung kombiniert mit einem nachhaltigen Materialprofil. Upgrade-sichere Anpassung.
5. Verzeichnis- und Dateistruktur eines typischen Moduls
das Verständnis der Struktur eines Moduls ist für eine ordnungsgemäße Anpassung unerlässlich.
Hier ist eine Aufschlüsselung eines Standardmodulordners in /htdocs/custom/mymodule/:
Jeder Ordner spielt eine bestimmte Rolle bei der Aktivierung der Funktionalität und sorgt gleichzeitig für die Organisation und Wartung des Moduls.
6. Die Rolle des Moduldeskriptors
Das Herzstück jedes Dolibarr-Moduls ist sein Deskriptorklasse, typischerweise benannt modMyModule.class.php.
Diese Datei enthält:
-
Grundlegende Metadaten (Name, Nummer, Version, Beschreibung)
-
Logik aktivieren/deaktivieren
-
Menüdefinitionen
-
Erlaubniserklärungen
-
URLs der Konfigurationsseite
-
Datenbankschemadefinitionen
-
Hooks, Trigger und Cron-Jobs
Beispielausschnitt:
Diese Datei wird ausgeführt, wenn das Modul im Admin-Panel aktiviert wird.
7. Hooks, Trigger und Events: Erweiterung der Kernfunktionalität
Dolibarr bietet zwei Schlüsselmechanismen zur Erweiterung der Kernfunktionalität ohne es zu verändern:
7.1-Trigger
Trigger sind Ereignis-Listener, die während Systemaktionen ausgeführt werden, wie zum Beispiel:
-
Rechnungen erstellen
-
Produkte löschen
-
Bestellungen validieren
Triggerklassen werden platziert in /core/triggers/ und benannt wie interface_99_modMyModule_MyTriggers.class.php.
Sie implementieren die DolibarrTriggers Schnittstelle und a runTrigger() Methode.
Ejemplo:
7.2-Haken
Hooks fügen Logik- oder Schnittstellenelemente in vorhandene Dolibarr-Seiten ein.
-
UI-Hooks: Fügen Sie Schaltflächen, Text oder HTML in Vorlagen ein
-
Logik-Hooks: Erweitern Sie die Logik zum Erstellen, Löschen und Validieren von Objekten
Hook-Klassen implementieren HookInterface und reagieren auf Bereiche wie formObjectOptions, doActions, usw.
Die Initialisierung erfolgt über:
8. Verwalten von Datenbanktabellen in Modulen
Die meisten Module benötigen eine eigene Datenstruktur. Dolibarr ermöglicht Ihnen die Definition und Verwaltung Ihrer eigenen benutzerdefinierte Datenbanktabellen auf saubere, wartungsfreundliche Weise.
8.1 SQL-Installations- und Upgrade-Skripte
Sie definieren Ihr Schema mithilfe von SQL-Dateien in /sql/.
Ejemplo: /sql/mymodule.sql
Dolibarr verwendet den Moduldeskriptor, um diese Skripte während der Installation auszuführen.
8.2 Objektorientierte Tabellenzuordnung
Benutzerdefinierte Objekte werden als PHP-Klassen definiert in /class/, typischerweise verlängert CommonObject.
Ejemplo: /class/certification.class.php
Diese Struktur ermöglicht es Dolibarr, Formulare, Listen und Detailansichten mit minimalem Codierungsaufwand automatisch zu generieren.
9. Schnittstellen erstellen: Seiten, Formulare, Vorlagen
Module beinhalten oft benutzerdefinierte Seiten– entweder Admin-Seiten oder Geschäftsschnittstellen.
9.1 Auslagerungsdateien
Benutzerdefinierte Seiten werden in /page/ und folgen Sie dieser Struktur:
9.2 Formularverarbeitung
Verarbeiten Sie Benutzereingaben mit GETPOST() kombiniert mit einem nachhaltigen Materialprofil. checkToken():
9.3 Vorlagen (TPL)
Vorlagen werden gespeichert in /tpl/ und verwendet mit include DOL_DOCUMENT_ROOT.'/custom/mymodule/tpl/mypage.tpl.php';.
Dies trennt Logik vom Layout und unterstützt die HTML-Struktur, Klassen und Übersetzungen von Dolibarr.
10. Integration mit Kernfunktionen (Menüs, Berechtigungen, PDFs)
Module können tief in das Ökosystem von Dolibarr integriert werden.
10.1 Menüs hinzufügen
Definiert im Moduldeskriptor mit $this->menu[] Arrays. Jedes Menü kann ein Hauptmenü, ein linkes Menü oder ein Untermenü sein.
10.2 Berechtigungen
Definieren Sie im Moduldeskriptor:
Der Zugriff wird dann validiert mit:
10.3 PDF- und Nummerierungsmodule
PDF-Generatoren und Nummerierungsformate können durch die Platzierung benutzerdefinierter Klassen in /core/modules/.
-
PDF-Dokumente: Erweitern
ModelePDFXXX -
Nummerierungsmodule: Erweitern
ModelNumXXX
Deklarieren Sie sie im Deskriptor, damit sie im Konfigurationsfenster angezeigt werden.
11. Best Practices für die Anpassung ohne Kernmodifikation
So bleibt Dolibarr wartbar:
-
✅ Verwendung Haken anstatt Vorlagen zu ändern
-
✅ Verwendung löst anstatt Objektklassen zu bearbeiten
-
✅ Platzieren Sie Ihr Modul in
/custom/um das Überschreiben bei Upgrades zu vermeiden -
✅ Hinzufügen Versionsprüfung in Ihrem Deskriptor
-
✅ Verwendung Sprachdateien für alle Schnittstellenzeichenfolgen
-
✅ Alle Eingaben validieren und alle Ausgaben escapen
-
✅ Behalten Sie die Geschäftslogik im
class/nichtpage/
Diese Gewohnheiten gewährleisten Upgrade-Kompatibilität und langfristige Stabilität.
12. Häufige Fehler und wie man sie vermeidet
❌ Bearbeiten von Kerndateien
Die Lösung : Verwenden Sie Overrides, Hooks und Erweiterungen.
❌ Verwenden von direktem SQL anstelle von Objektklassen
Die Lösung
: Benutzen fetch(), create(), update() Methoden in Ihren Objektklassen.
❌ Keine Verwaltung von Berechtigungen
Die Lösung
: Immer prüfen $user->rights->mymodule->action.
❌ Überspringen der Eingabevalidierung
Die Lösung
: Verwenden Sie immer GETPOST() und Escape-SQL-Eingaben.
❌ Hardcoding-Pfade
Die Lösung
: Benutzen DOL_URL_ROOT, dol_buildpath() und Konstanten.
13. Erweiterte Anpassungsszenarien
13.1 Unternehmensübergreifende Unterstützung
Wenn Sie das MultiCompany-Modul verwenden, stellen Sie sicher, dass Ihr Modul:
-
Verwendung
entityFeld in allen benutzerdefinierten Tabellen -
Respekt
$conf->entitybeim Abfragen von Daten
13.2 Geplante Aufgaben mit Cron-Jobs
Fügen Sie Cron-Jobs hinzu, um Hintergrundaufgaben auszuführen:
13.3 Benutzerdefinierte REST-Endpunkte
Erstellen Sie benutzerdefinierte APIs, indem Sie Skripte in /custom/mymodule/script/api_*.php und registrieren Sie sie in Ihrem Moduldeskriptor.
14. Aufrechterhaltung der Kompatibilität zwischen Dolibarr-Versionen
-
Testen Sie Ihr Modul mit jeder Dolibarr-Version
-
Nutzen Sie
dol_version_compare()um Versionsunterschiede zu handhaben -
Vermeiden Sie die Verwendung veralteter Funktionen oder globaler Variablen
-
Führen Sie ein Änderungsprotokoll (
changelog.txt) und pflegen Sie die semantische Versionierung
15. Fazit
Das Verständnis der Architektur von Dolibarr-Modulen ist für die Erstellung von leistungsstarke, zuverlässige und Upgrade-sichere Anpassungen. Unabhängig davon, ob Sie interne Tools oder kommerzielle Add-Ons erstellen, ist die Beherrschung der folgenden Elemente hilfreich:
-
Modulstruktur und Deskriptordateien
-
Hooks, Trigger und Berechtigungen
-
Benutzerdefinierte Objektklassen und Datenbankschema
-
Admin-Panels und Benutzeroberflächen
-
Integration mit PDF-Generierung, Cron-Jobs und APIs
Dolibarr ist erweiterbar. Je besser Sie die Architektur verstehen, desto mehr Mehrwert können Sie mit Ihren benutzerdefinierten Modulen schaffen – ohne den Kerncode zu verändern.
