Inhaltsverzeichnis

  1. Einführung

  2. Die modulare Architektur von Dolibarr verstehen

  3. Warum ein benutzerdefiniertes Modul erstellen?

  4. Voraussetzungen und Einrichtung der Entwicklungsumgebung

  5. Struktur eines Dolibarr-Moduls

  6. Erstellen der Moduldeskriptordatei

  7. Erstellen der Hauptmodulklasse

  8. Hinzufügen von Sprachunterstützung

  9. Erstellen von Datenbanktabellen für Ihr Modul

  10. Gestaltung der Benutzeroberfläche

  11. Implementieren von Berechtigungen und Zugriffskontrolle

  12. Hinzufügen von Geschäftslogik mit Klassen

  13. Verwenden von Triggern und Hooks

  14. Verwalten von Konfigurationsparametern

  15. Integration mit vorhandenen Dolibarr-Modulen

  16. Erstellen von Listen, Filtern und Exportfunktionen

  17. PDFs oder Dokumente generieren

  18. Best Practices für Sicherheit und Leistung

  19. Testen und Debuggen Ihres Moduls

  20. Verpacken und Verteilen des Moduls

  21. Aktualisieren und Warten Ihres Moduls

  22. 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.