Inhaltsverzeichnis

  1. Einführung

  2. Was sind Hooks in Dolibarr?

  3. Arten von Hooks: Schnittstelle vs. Geschäftsereignisse

  4. Wann sollten Sie einen Haken verwenden?

  5. Die Hook-Systemarchitektur von Dolibarr verstehen

  6. Einrichten eines Hooks in einem benutzerdefinierten Modul

  7. Registrieren von Hook-Kontexten im Moduldeskriptor

  8. Namenskonventionen für Hook-Methoden

  9. UI-Hooks: Benutzeroberflächen verbessern

  10. Daten-Hooks: Erfassen von Ereignissen der Kerngeschäftslogik

  11. Praktische Beispiele für nützliche Hooks

  12. Erstellen einer Hook-Datei und Strukturieren Ihrer Logik

  13. Zugriff auf Dolibarr-Objekte von einem Hook aus

  14. Verketten von Hooks über mehrere Module hinweg

  15. Leistungsüberlegungen und Best Practices

  16. Debugging-Hooks: Tools und Tipps

  17. Sicherheitsimplikationen der Hook-Logik

  18. Integration von Drittsystemen über Hooks

  19. Hook-Kompatibilität während Dolibarr-Upgrades

  20. Abschließende Gedanken


1. Einleitung

Dolibarr ist flexibel, modular und hochgradig erweiterbar. Eines der leistungsstärksten Werkzeuge seiner Architektur ist die HakensystemMit Hooks können Entwickler ihre eigene Logik in die Anwendung einbringen, ohne den Kerncode zu ändern. Ob Sie Anzeigen anpassen, Daten validieren oder mit externen Systemen synchronisieren – Hooks bieten eine saubere und effiziente Methode für eine umfassende Integration.

 


2. Was sind Hooks in Dolibarr?

Hooks sind im Dolibarr-Kern definierte Einstiegspunkte, die es externen Modulen ermöglichen, sich in die Anwendung einzuklinken und Verhalten hinzuzufügen oder zu ändern. Es handelt sich um Funktionsaufrufe, die bei bestimmten Ereignissen dynamisch ausgelöst werden.

Es gibt zwei Hauptkategorien:

  • Schnittstellen-Hooks: Beeinflussen, was der Benutzer sieht (Menüs, Schaltflächen, Seiten).

  • Geschäfts-/Event-Hooks: Logik während Datenänderungen ausführen (Erstellen, Aktualisieren, Löschen).


3. Arten von Hooks: Schnittstelle vs. Geschäftsereignisse

Typ Zweck Beispiel
UI-Hook Benutzeroberfläche ändern oder erweitern Registerkarte zur Rechnungsseite hinzufügen
Geschäft Triggerlogik bei Ereignis Protokollieren Sie jedes Produktupdate

Einige Hooks sind rein visuell, andere ermöglichen die Ausführung einer Betriebslogik für Dolibarr-Ereignisse.


4. Wann sollten Sie einen Haken verwenden?

Verwenden Sie einen Hook, wenn Sie Folgendes tun müssen:

  • Fügen Sie vorhandenen Dolibarr-Seiten eine benutzerdefinierte Registerkarte oder Schaltfläche hinzu.

  • Fügen Sie beim Speichern von Datensätzen eine zusätzliche Validierung ein.

  • Protokollieren, synchronisieren oder reagieren Sie auf Änderungen an Geschäftsobjekten.

  • Erweitern Sie das Verhalten eines Kernprozesses, ohne den Kerncode zu ändern.

Vermeiden Sie die Verwendung von Hooks für Logik, die nichts mit Dolibarr-Kernereignissen zu tun hat, oder wenn die Leistung kritisch ist und eine direkte Überschreibung besser geeignet ist.


5. Dolibarrs Hook-Systemarchitektur verstehen

Der Hook-Mechanismus von Dolibarr ist objektorientiert. Module können Hook-Klassen definieren, die erweitern DolibarrHooks und implementieren Sie Methoden, die den Zielkontexten entsprechen.

Jedes Modul kann eine Klasse im hook/ Verzeichnis:

/custom/mymodule/hook/interface_99_modmymodule_common.php

6. Einrichten eines Hooks in einem benutzerdefinierten Modul

  1. Erstellen Sie eine neue PHP-Datei in Ihrem Modul hook/ Verzeichnis.

  2. Definieren Sie eine Klasse, die der Namenskonvention entspricht.

  3. In Ihrem Moduldeskriptor (modMymodule.class.php), registrieren Sie die Hook-Kontexte:

$this->hooks = array('invoicecard', 'thirdpartycard');

7. Registrieren von Hook-Kontexten im Moduldeskriptor

Hook-Kontexte teilen Dolibarr mit, wo Ihr Hook angewendet werden soll. Gängige Kontexte sind:

  • invoicecard

  • ordercard

  • thirdpartycard

  • propalcard

Diese entsprechen Schnittstellenbildschirmen oder Objekttypen.


8. Namenskonventionen für Hook-Methoden

Hooks folgen bestimmten Methodenbenennungsmustern. Beispiel:

function formObjectOptions($parameters, &$object, &$action, $hookmanager) {
    // Custom logic here
}

Der Methodenname muss mit dem Kern-Hook-Trigger übereinstimmen. Dolibarr ruft Ihre Methode auf, falls vorhanden.


9. UI-Hooks: Benutzeroberflächen verbessern

Anwendungen:

  • addMoreActionsButtons: Schaltflächen zum Formular hinzufügen

  • printObjectLine: HTML in eine Zeilenansicht einfügen

  • formObjectOptions: Neue Felder zu Formularen hinzufügen

Auf diese Weise können Sie die Benutzeroberfläche erweitern, ohne Vorlagen zu überschreiben.


10. Daten-Hooks: Erfassen von Ereignissen der Kerngeschäftslogik

Sie können auf Ereignisse im Lebenszyklus eines Objekts reagieren:

  • doActions: Benutzerdefinierte Aktionsverarbeitung

  • addMoreTabs: Neue Registerkarten zu einer Karte hinzufügen

  • beforeObjectSave, afterObjectSave

Verwenden Sie diese zur Validierung, Protokollierung oder Benachrichtigung.


11. Praktische Beispiele für nützliche Hooks

  1. Protokollieren Sie jede neue Rechnungserstellung in einer benutzerdefinierten Tabelle

  2. Bei überfälligen Vorschlägen ein Warnbanner anzeigen

  3. Fügen Sie der Rechnungsseite eine benutzerdefinierte PDF-Exportoption hinzu

  4. Senden Sie einen Webhook an ein anderes System, wenn ein Drittanbieter aktualisiert wird


12. Erstellen einer Hook-Datei und Strukturieren Ihrer Logik

Struktur:

class InterfaceModmymoduleCommon {
    function formObjectOptions($parameters, &$object, &$action, $hookmanager) {
        echo '<tr><td>Custom Field</td><td><input type="text" name="customfield"></td></tr>';
        return 1;
    }
}

Immer zurückkehren 0 or 1 um anzugeben, ob Dolibarr das Standardverhalten fortsetzen soll.


13. Zugriff auf Dolibarr-Objekte von einem Hook aus

Dolibarr übergibt das aktive Objekt (Rechnung, Drittpartei usw.) über die $object Parameter. Sie können:

  • Daten lesen: $object->ref, $object->id

  • Ändern Sie: $object->note_private = 'new note'

  • Überprüfen Sie die Logik vor dem Speichern


14. Verketten von Hooks über mehrere Module hinweg

Mehrere Module können denselben Hook-Kontext registrieren. Dolibarr führt jedes Modul nacheinander aus:

  1. mymodule

  2. customaddon

  3. thirdmodule

Vermeiden Sie Nebenwirkungen, die den gemeinsamen Status beeinträchtigen (z. B. nicht festgelegte globale Variablen).


15. Leistungsüberlegungen und Best Practices

  • Halten Sie die Hook-Logik effizient

  • Minimieren Sie Datenbankabfragen

  • Cache-Werte bei mehrmaliger Wiederverwendung

  • Vermeiden Sie die Ausgabe großer HTML-Blöcke, sofern nicht erforderlich

Schwere Hooks können die Seitenladezeit beeinträchtigen.


16. Debugging-Hooks: Tools und Tipps

  • Nutzen Sie dol_syslog() um die Ausführung des Hooks zu protokollieren

  • Überprüfen Sie Dolibarrs Debug-Protokolle in /documents/admin/system.log

  • Variablen vorübergehend ausgeben mit var_dump() or print_r()


17. Sicherheitsimplikationen der Hook-Logik

  • Validieren Sie alle Benutzereingaben innerhalb von Hooks

  • Bereinigen Sie die Ausgabe, bevor Sie HTML wiederholen

  • Vertrauen Sie niemals Werten von $_POST/$_GET ohne GETPOST()

  • Überprüfen Sie die Berechtigungen, bevor Sie Aktionen ausführen

Hooks können ausgenutzt werden, wenn sie sensible Aktionen offenlegen.


18. Integration von Drittsystemen über Hooks

Häufige Muster:

  • Senden Sie API-Anfragen an afterObjectCreate

  • Speichern Sie Daten in externen Systemen auf afterObjectUpdate

  • Push-Nachrichten an Warteschlangen (z. B. RabbitMQ)

Verwenden Sie Hooks, um Dolibarr in Microservice-Architekturen oder SaaS-Plattformen zu integrieren.


19. Hook-Kompatibilität während Dolibarr-Upgrades

Beim Upgrade von Dolibarr:

  • Überprüfen Sie die Änderungsprotokolle auf Änderungen an der Hook-Methode

  • Testen Sie Ihre Module in Staging-Umgebungen

  • Vermeiden Sie es, sich auf undokumentierte Hooks oder interne Objekte zu verlassen

Dolibarr gewährleistet die Abwärtskompatibilität, kann jedoch keine Garantie für interne Änderungen geben.


20. Letzte Gedanken

Hooks bilden die Grundlage der Erweiterbarkeit von Dolibarr. Sie ermöglichen Entwicklern leistungsstarke Anpassungen, ohne den Kern zu verändern. Ihre Beherrschung ist unerlässlich für die Entwicklung fortgeschrittener Module, die Integration von Drittanbietern und eine saubere, skalierbare Geschäftslogik.

Nutzen Sie die Hooks, um Dolibarr genau an Ihre Bedürfnisse anzupassen – und zwar auf die richtige Art und Weise.