Events, Services und Overrides passend einsetzen
Ereignisse und Dienste verbinden eine Erweiterung mit vorhandenen ConcreteCMS-Abläufen. Wählen Sie den Einstiegspunkt anhand der Aufgabe und der tatsächlichen Core-Signatur. Testen Sie Wiederholung, Abbruch und fehlende Daten.
Zuerst den Auslöser im Core nachweisen
Suchen Sie in der installierten Core-Version nach dem Ereignis, das Ihrer Aufgabe entspricht, und lesen Sie, welche Daten es beim Auslösen enthält. Ähnliche Event-Namen können vor oder nach einer Speicherung liegen. Ein Listener, der zu früh auf eine noch nicht gespeicherte ID zugreift, liefert leere Werte; ein Listener, der bei jeder Seitenversion läuft, kann unerwünschte doppelte E-Mails erzeugen. Dokumentieren Sie Trigger, Daten und gewünschte Idempotenz.
Registrieren Sie Listener beim Start des Pakets oder an der dafür vorgesehenen Stelle der Anwendung. Halten Sie den Listener klein und delegieren Sie Verarbeitung an einen eigenen Service. Prüfen Sie erneut beim Upgrade: Der Code darf nicht bei jedem Seitenaufruf erneut Daten migrieren. Package erstellen trennt Registrierung von einmaliger Installation.
Abbildung 1: Ein Event-Listener reagiert auf ein Ereignis; eine geplante Aufgabe braucht zusätzlich einen aktiven Scheduler.
Container und Services nutzen
Concrete nutzt einen Anwendungscontainer. In einem Package werden ein Task-Controller und Express-Controller über Manager registriert; die eigentliche Arbeit übernehmen separate Installer und Dienste. So bleiben Logik und Registrierung prüfbar. Nutzen Sie Abhängigkeiten aus dem Container, statt globale Objekte ungeprüft zu erzeugen. Achten Sie darauf, welcher Site-Kontext aktiv ist: Eine Editor-Konfiguration aus der globalen Anwendung kann von der tatsächlich bearbeiteten Site abweichen.
Wenn eine Core-Methode nicht ausreicht, prüfen Sie zuerst ein Custom Template, eine PageTheme-Funktion oder einen registrierten Service. Ein Override tiefer Core-Klassen hat ein höheres Update-Risiko. Erklären Sie im Code, warum er nötig ist und welche Core-Version getestet wurde. Kopieren Sie keine ganze Core-Klasse, um eine Zeile zu ändern; das verbirgt spätere Sicherheitskorrekturen.
Wiederholung und Fehlerfälle testen
Lösen Sie das Ereignis einmal und mehrfach aus. Prüfen Sie, ob ein fehlendes Objekt, ein abgebrochener Vorgang oder ein fehlender Empfänger ordentlich behandelt wird. Eine E-Mail-Benachrichtigung sollte keine Daten doppelt speichern; ein gescheiterter Versand darf eine bereits gespeicherte Anfrage nicht unsichtbar machen. Testen Sie nach einem Cache-Leeren und nach Paket-Upgrade erneut, ob Registrierungen weiterhin vorhanden sind.
Für den Betrieb geplanter Arbeit lesen Sie Aufgaben regelmäßig ausführen. Lesen Sie die genaue Signatur eines Events in den Core-Dateien der eingesetzten Version nach.
Weiterlesen
- Erweiterungen sicher testen
- ConcreteCMS über die Kommandozeile verwalten
- Aufgaben regelmäßig ausführen
Quelle: Concrete CMS Dokumentation (EN) · Stand: ConcreteCMS 9.5.7