Inhaltsverzeichnis
-
Einführung
-
Die modulare Architektur von Dolibarr verstehen
-
Warum ein benutzerdefiniertes Modul erstellen?
-
Voraussetzungen und Einrichtung der Entwicklungsumgebung
-
Struktur eines Dolibarr-Moduls
-
Erstellen der Moduldeskriptordatei
-
Erstellen der Hauptmodulklasse
-
Hinzufügen von Sprachunterstützung
-
Erstellen von Datenbanktabellen für Ihr Modul
-
Gestaltung der Benutzeroberfläche
-
Implementieren von Berechtigungen und Zugriffskontrolle
-
Hinzufügen von Geschäftslogik mit Klassen
-
Verwenden von Triggern und Hooks
-
Verwalten von Konfigurationsparametern
-
Integration mit vorhandenen Dolibarr-Modulen
-
Erstellen von Listen, Filtern und Exportfunktionen
-
PDFs oder Dokumente generieren
-
Best Practices für Sicherheit und Leistung
-
Testen und Debuggen Ihres Moduls
-
Verpacken und Verteilen des Moduls
-
Aktualisieren und Warten Ihres Moduls
-
Fazit
1. Einleitung
Dolibarr ERP/CRM ist eine leistungsstarke Open-Source-Plattform, die flexibel und erweiterbar ist. Eine ihrer größten Stärken ist der modulare Aufbau, der es Entwicklern ermöglicht, eigenständige Komponenten, sogenannte Module, zu erstellen. Diese können die Funktionalität von Dolibarr erweitern oder komplett verändern. In diesem Artikel begleiten wir Sie durch den gesamten Prozess der Entwicklung eines individuellen Dolibarr-Moduls – vom Konzept bis zur Distribution.
2. Die modulare Architektur von Dolibarr verstehen
Jede Funktion in Dolibarr ist als Modul gekapselt. Ein Modul kann:
-
Neue Menüs einführen
-
Datenbanktabellen hinzufügen
-
Erweitern Sie die Benutzeroberfläche mit benutzerdefinierten Seiten oder Registerkarten
-
Einbindung in Geschäftsprozesse
Module können Kernmodule (im Lieferumfang von Dolibarr enthalten) oder benutzerdefinierte Module (in /custom/). Diese Trennung ermöglicht eine saubere Entwicklung ohne Eingriff in die Kerndateien und gewährleistet so einfachere Upgrades und Wartung.
3. Warum ein benutzerdefiniertes Modul erstellen?
Gründe für die Entwicklung eines eigenen Moduls sind unter anderem:
-
Branchenspezifische Funktionen hinzufügen
-
Ersetzen Sie manuelle Prozesse durch Automatisierung
-
Integrieren Sie externe APIs oder Systeme
-
Passen Sie die Benutzeroberfläche und Geschäftsregeln an Ihr Unternehmen an
Benutzerdefinierte Module können auf Dolistore geteilt oder intern behalten werden.
4. Voraussetzungen und Einrichtung der Entwicklungsumgebung
So beginnen Sie mit der Entwicklung:
-
Installieren Sie eine lokale Dolibarr-Instanz
-
Aktivieren Sie den Entwicklermodus:
$dolibarr_main_prod = 0; -
Installieren Sie einen Code-Editor (VSCode, PhpStorm)
-
Machen Sie sich mit PHP, MySQL, HTML/CSS vertraut
Stellen Sie sicher, dass PHP-Erweiterungen (pdo, gd, intl usw.) installiert sind.
5. Struktur eines Dolibarr-Moduls
Ein typisches Modul hat dieses Layout:
/custom/mymodule/
├── class/
├── core/
├── lang/
├── modulebuilder.txt
├── modMymodule.class.php
├── mymodule.php
-
modMymodule.class.php: die Deskriptordatei -
class/: Geschäftslogikklassen -
core/: Auslöser und Haken -
lang/: Übersetzungsdateien -
mymodule.php: Einstiegspunkt oder Controller
6. Erstellen der Moduldeskriptordatei
Diese Datei teilt Dolibarr mit, wie Ihr Modul registriert wird:
class modMymodule extends DolibarrModules {
public function __construct($db) {
$this->numero = 123456; // Unique ID
$this->rights_class = 'mymodule';
$this->family = "custom";
$this->name = preg_replace('/^mod/', '', get_class($this));
$this->description = "My custom module";
$this->version = '1.0.0';
$this->const_name = 'MAIN_MODULE_MYMODULE';
$this->config_page_url = array("mymodule_setup.php@mymodule");
$this->dictionaries = array();
$this->langfiles = array("mymodule");
$this->parts = array();
$this->modules = array();
$this->rights = array();
}
}
Aktivieren Sie das Modul von Setup > Module/Anwendungen.
7. Erstellen der Hauptmodulklasse
Platzieren Sie die Hauptklassendatei in class/mymodule.class.php. Beispiel:
class Mymodule extends CommonObject {
public $element = 'mymodule';
public $table_element = 'my_table';
public $ismultientitymanaged = 1;
public $fields = array(
'title' => array('type' => 'varchar', 'label' => 'Title'),
'amount' => array('type' => 'double', 'label' => 'Amount')
);
}
Verwenden Sie dies, um Datenstruktur und Interaktionen zu definieren.
8. Sprachunterstützung hinzufügen
Sprachdateien erstellen unter:
/custom/mymodule/langs/en_US/mymodule.lang
Fügen Sie Zeichenfolgen wie die folgenden hinzu:
MyLabel=My Custom Label
Laden Sie sie mit $langs->load('mymodule');
9. Erstellen von Datenbanktabellen für Ihr Modul
Verwenden Sie SQL-Skripte, die in folgenden Verzeichnissen platziert sind:
/install/mysql/tables/llx_my_table.key.sql
Dolibarr führt diese aus, sobald das Modul aktiviert ist. Beachten Sie die Namenskonventionen (llx_ Präfix).
10. Gestaltung der Benutzeroberfläche
Erstellen Sie PHP-Seiten in Ihrem Modulstamm (z. B. card.php, list.php). Verwenden Sie Dolibarr-UI-Helfer:
llxHeader();
print load_fiche_titre($langs->trans("My Page"));
Tabellen, Formulare und Menüs sollten aus Konsistenzgründen die integrierten Funktionen von Dolibarr verwenden.
11. Implementieren von Berechtigungen und Zugriffskontrolle
In der Deskriptordatei:
$this->rights[] = array('id'=>1, 'label'=>'Read', 'default'=>1, 'level'=>'read');
$this->rights[] = array('id'=>2, 'label'=>'Write', 'default'=>0, 'level'=>'write');
Überprüfen Sie die Berechtigungen mit:
if ($user->rights->mymodule->read) { ... }
12. Hinzufügen von Geschäftslogik mit Klassen
Die Geschäftslogik sollte in Klassen zentralisiert werden:
class MymoduleManager {
public function calculateSomething($input) {
return $input * 2;
}
}
Halten Sie die Controller-Logik minimal und sauber.
13. Trigger und Hooks verwenden
Erstellen Sie Trigger in:
/core/triggers/interface_99_modmymodule_Mytrigger.class.php
Ejemplo:
function run_trigger($action, $object, $user, $langs, $conf) {
if ($action == 'BILL_CREATE') {
// custom logic
}
return 0;
}
Hooks ermöglichen die UI- oder Logikeinfügung an bestimmten Punkten.
14. Verwalten von Konfigurationsparametern
Speichern Sie benutzerdefinierte Einstellungen mit dolibarr_set_const() und abrufen über $conf->global->MYMODULE_SETTING.
Erstellen Sie mymodule_setup.php Datei für die Einstellungsseite mit einem Formular.
15. Integration mit vorhandenen Dolibarr-Modulen
Verwenden Sie gemeinsame Klassen wie Facture, Product oder Societe:
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$invoice = new Facture($db);
$invoice->fetch($id);
Sie können sich auch in ihre Schnittstellen einklinken.
16. Erstellen von Listen, Filtern und Exportfunktionen
Nutzen Sie list.php Format:
$sql = "SELECT rowid, title FROM llx_my_table";
$table = new Listview($db);
$table->render($sql);
Fügen Sie Exportunterstützung mithilfe des Exportframeworks von Dolibarr hinzu.
17. Erstellen von PDFs oder Dokumenten
Verwenden Sie TCPDF oder bauen Sie darauf auf pdf_common.modules.php:
$pdf = new PDF_MyModule($db);
$pdf->write_file($object, $langs);
PDF-Dateien werden gespeichert in /documents/mymodule/.
18. Best Practices für Sicherheit und Leistung
-
Bereinigen Sie alle Eingaben mit
GETPOST() -
Token für Formulare verwenden
-
Überprüfen Sie die Berechtigungen vor jeder kritischen Aktion
-
Minimieren Sie DB-Abfragen; verwenden Sie bei Bedarf Caching
Vermeiden Sie die Offenlegung der internen Logik in URLs oder Antworten.
19. Testen und Debuggen Ihres Moduls
Protokollierung aktivieren:
$conf->global->MAIN_DISABLE_ALL_LOGS = 0;
Nutzen Sie dol_syslog() um Ereignisse zu protokollieren. Testen Sie Benutzeroberfläche und Logik in verschiedenen Benutzerrollen.
20. Verpacken und Verteilen des Moduls
-
Zippen Sie Ihren Modulordner
-
Umfassen
README.md,CHANGELOG.txtund Lizenz -
Auf Dolistore hochladen oder privat teilen
-
Verwenden Sie die semantische Versionierung (
1.0.1,1.1.0)
21. Aktualisieren und Warten Ihres Moduls
-
Bewahren Sie die Abwärtskompatibilität, wenn möglich
-
Verwenden Sie das Versionsfeld des Moduls für kontrollierte Updates
-
Testen Sie mit neuen Dolibarr-Versionen, bevor Sie Updates veröffentlichen
Berücksichtigen Sie Benutzerfeedback bei der Planung von Änderungen.
22. Fazit
Die Entwicklung eines benutzerdefinierten Moduls für Dolibarr kann zunächst entmutigend erscheinen, aber mit einem fundierten Verständnis der Architektur und bewährten Methoden wird der Prozess sowohl überschaubar als auch lohnend. Egal, ob Sie einen Workflow anpassen oder eine Erweiterung für die öffentliche Nutzung erstellen – mit dieser umfassenden Anleitung erstellen Sie sichere, effiziente und wartungsfreundliche Module.
