Changes

Line 13: Line 13:  
Hooks sind eine Funktion für Entwickler, mit der sie benutzerdefinierten Code zu den Standardseiten von Dolibarr hinzufügen können, ohne die Kerndateien von Dolibarr ändern zu müssen. Im Gegensatz zum Trigger-System (eine andere Möglichkeit, mit dem Code von Dolibarr zu interagieren), das an Ereignisse in Dolibarr gebunden ist, können Hooks überall und jederzeit ausgeführt werden, wenn sie im Kern von Dolibarr vorgesehen sind. Sie sind Einfügungsstellen im Programm.  
 
Hooks sind eine Funktion für Entwickler, mit der sie benutzerdefinierten Code zu den Standardseiten von Dolibarr hinzufügen können, ohne die Kerndateien von Dolibarr ändern zu müssen. Im Gegensatz zum Trigger-System (eine andere Möglichkeit, mit dem Code von Dolibarr zu interagieren), das an Ereignisse in Dolibarr gebunden ist, können Hooks überall und jederzeit ausgeführt werden, wenn sie im Kern von Dolibarr vorgesehen sind. Sie sind Einfügungsstellen im Programm.  
   −
*Hooks sind abhängig von einem Kontext aktiv oder nicht (häufig ein Kontext pro Modul: zum Beispiel „productcard“ für Produkte, „invoicecard“ für Rechnungen...). Um vorhandene Hooks zu finden, suchen Sie nach " initHooks( "
+
*Hooks sind abhängig von einem Kontext aktiv oder nicht (häufig ein Kontext pro Modul: zum Beispiel „productcard“ für Produkte, „invoicecard“ für Rechnungen...). Um vorhandene Hooks zu finden, suchen Sie nach '''" initHooks( "'''
 +
*Hooks sind Funktionen, die Standardcode einfügen oder ersetzen. Um Code zu finden, der überschrieben werden kann, suchen Sie nach '''" executeHooks("'''
 +
 
 +
==Einen Hook hinzufügen, um das Einfügen von Code zu ermöglichen==
 +
 
 +
Um einen Hook in Ihrem eigenen Modul zu implementieren (damit Ihr Modul von anderen "gehooked" werden kann), müssen Sie zwei Schritte durchführen.
 +
 
 +
Diese Schritte müssen für jedes php-Skript in Ihrem Modul, in dem Sie Hooks implementieren wollen, wiederholt werden.
 +
 
 +
1- Initialisieren Sie das HookManager-Objekt (platzieren Sie diesen Code am Anfang Ihres php-Skripts, direkt nach oder vor den Includes):
 +
 
 +
<source lang=php>
 +
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
 +
include_once(DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php');
 +
$hookmanager=new HookManager($db);
 +
$hookmanager->initHooks(array('context'));
 +
</source>
 +
 
 +
$hookmanager->initHooks() akzeptiert 1 Parameter (ein Array von Kontexten) und aktiviert die Hook-Unterstützung für dieses Skript:
 +
 
 +
- ''''context'''' ist der String, der den Ausführungskontext enthält. Dies ist ein einfacher Indikator, der von Hook-Funktionen verwendet werden kann, um zu erkennen, in welchem Kontext sie aufgerufen werden (mehrere Seiten/Module können denselben Hook an verschiedenen Stellen aufrufen, und eine Hook-Funktion kann nur für einen bestimmten Kontext ausgeführt werden wollen und nicht für alle anderen).
 +
 
 +
Hinweis: Sie können mehrere Kontexte gleichzeitig setzen (z. B. wenn Sie einen gemeinsamen Kontext für mehrere Seiten benötigen, aber auch einen eigenen Kontext für eine bestimmte Seite haben möchten).
 +
 
 +
2- Platzieren Sie dann den Aufruf der Hooks dort, wo das Hinzufügen von Code erlaubt ist:
 +
 
 +
<source lang=php>
 +
$parameters=array();
 +
$reshook=$hookmanager->executeHooks('hookname',$parameters,$object,$action); // See description below
 +
// Note that $action and $object may have been modified by hook
 +
if (empty($reshook))
 +
{
 +
  ... // standard code that can be disabled/replaced by hook if return code > 0.
 +
}
 +
</source>
    
Every business always requires something "extra" or different to the Dolibarr core functionality.
 
Every business always requires something "extra" or different to the Dolibarr core functionality.
264

edits