Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

Events, Erweiterungspunkte und Plugins

Wie Exponential um Verhalten ergänzt wird, ohne es zu forken - der prozessinterne Event-Bus ezpEvent mit notify und filter, in Einstellungen benannte Handler, Datentypen, Workflow-Event-Typen, Template-Operatoren…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/software-engineers/events-extension-points-and-plugins.md

On this page

This page is a translation. Read the English original

Events, Erweiterungspunkte und Plugins

Diese Seite richtet sich an Ingenieure, die ändern müssen, was Exponential tut, ohne seinen Code zu ändern. Fast jeder Teil des Kernels ist über eine Einstellung austauschbar, die eine Klasse nennt; der prozessinterne Event-Bus ergänzt Hooks an festen Punkten einer Anfrage. Die vollständige Liste ist Erweiterungspunkte auf einen Blick, und die registrierten Punkte sind in RAD-Erweiterungspunkte beschrieben.

Inhalt

  1. Die Reihenfolge der Bevorzugung
  2. Der Event-Bus: ezpEvent
  3. In Einstellungen benannte Handler
  4. Eine View oder ein Modul ersetzen
  5. Das letzte Mittel: ein Kernel-Override
  6. Regeln für Listener und Plugins

Die Reihenfolge der Bevorzugung

  1. Eine Einstellung. Viele Verhaltensweisen sind bereits Schalter oder Listen; prüfen Sie zuerst die mitgelieferten settings/*.ini.
  2. Ein Template-Override für die Darstellung (Die Template-Engine und die Design-Kette).
  3. Ein registrierter Erweiterungspunkt: ein Datentyp, Workflow-Event, Operator, eine Fetch-Funktion, ein Handler oder ein Event-Listener.
  4. Eine ersetzte View oder ein ersetztes Modul, über [RunnableSettings] oder einen Modul-Override einer Erweiterung.
  5. Ein Override einer Kernel-Klasse, nur wenn nichts von oben passt.

Der Event-Bus: ezpEvent

ezpEvent::getInstance() (kernel/private/classes/ezpevent.php) bietet zwei Aufrufe:

AufrufVerwendung
notify( $name, $params )Listenern mitteilen, dass etwas geschehen ist
filter( $name, $value )Listener einen Wert ändern und zurückgeben lassen

Globale Listener werden in site.ini [Event] Listeners[]=<event>@<callback> konfiguriert. Zu den Events, die der Kernel auslöst, gehören:

EventWann
request/preinput, request/inputzu Beginn der Weiterleitungsschleife
response/preoutput, response/outputAusgabefilter, bevor die Antwort gesendet wird
content/cache, content/cache/all, content/class/cacheView-Caches für Inhalte werden geleert
image/removeAliasesBildvarianten werden entfernt
content/edit/access, content/download/access, collaboration/item/accessZugriffsfilter, die ablehnen können
runnable/<kind>/before, runnable/<kind>/afterum klassenbasierte Views, Befehle und Cronjob-Teile

Die Datei kennzeichnet ezpEvent als private API, die sich ändern kann; Erweiterungen verlassen sich trotzdem darauf, daher werden Änderungen daran als kompatibilitätsrelevant behandelt (Events und Filter).

In Einstellungen benannte Handler

ErweiterungspunktEinstellungAnleitung
Datentypencontent.ini [DataTypeSettings]Eigene Datentypen
Workflow-Event-Typenworkflow.ini [EventSettings]Einen Workflow-Event-Typ schreiben
Template-Operatoren und -Funktionensite.ini [TemplateSettings] ExtensionAutoloadPath[]Template-Operatoren
Fetch-Funktionendie function_definition.php des ModulsEine Fetch-Funktion schreiben
Cronjob-Teilecronjob.iniEinen Cronjob-Teil schreiben
Benachrichtigungs-Handlernotification.iniBenachrichtigungen und E-Mail
Handler für Inhaltseinschränkungensiehe die FunktionsseiteHandler für Inhaltseinschränkungen
Cluster-Datei-Handlerfile.ini [ClusteringSettings] FileHandlerSkalierung und Clustering
Jeder Handler, den eine Einstellung nenntdas MusterHandler, die Einstellungen benennen

Eine View oder ein Modul ersetzen

  • Eine klassenbasierte View lässt sich über site.ini [RunnableSettings] Implementation[] ersetzen.
  • Ein ganzes Kernel-Modul kann durch das gleichnamige Modul einer Erweiterung ersetzt werden (Override von Modulen durch Erweiterungen).

Das letzte Mittel: ein Kernel-Override

Ein Override einer Kernel-Klasse ersetzt eine Kernel-Klasse durch eine Kopie in einer Erweiterung. Jede Aktualisierung des Kernels kann Ihre Kopie dann still brechen; sie braucht also einen Test und eine Notiz in Ihrer Checkliste für Aktualisierungen (Kernel-Overrides, das letzte Mittel).

Regeln für Listener und Plugins

  • Registrierungen müssen idempotent sein. Unter Velocity häuft sich ein Listener an, der in einem langlebigen Worker einmal je Anfrage angehängt wird (Nebenläufigkeit, Statics und langlebige Prozesse).
  • Listener-Namen sollten Zeichenketten Class::method sein, damit sie konfigurierbar sind.
  • Eine neue Klasse, die eine mitgelieferte Einstellung nennt, sollte dort, wo der Kernel sie lädt, mit class_exists() abgesichert werden.
  • Zugriffsentscheidungen laufen über die Zugriffsfilter, nie über eine Prüfung einer Benutzer-ID.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x