Wir nehmen als offizieller Extension-Sponsor an der Joomla! World Conference 2026 teil – Potsdam, Deutschland, 16. bis 18. Oktober.

Joomla Content Plugin Events: Syntax, Parameter und Beispiele

Ein Joomla Plugin ist eine Extension, die Funktionen ergänzt oder verändert, ohne eine eigene Seite oder einen Menüeintrag anzulegen.

Ohne Plugins müssten Sie für Funktionen wie SEO-Werkzeuge, Spamschutz, Login über soziale Netzwerke oder eigene Funktionen den Core-Code von Joomla ändern. Direkte Änderungen am Core machen das System aber schwerer zu pflegen, zu aktualisieren und abzusichern. Deshalb nutzt Joomla ein ereignisgesteuertes Plugin-System. Entwickler docken damit an bestimmte Aktionen an, etwa das Speichern eines Beitrags oder die Anmeldung eines Benutzers, und führen eigenen Code aus, ohne den Core zu ändern.

Plugins nutzen Sie vor allem, wenn Sie das Verhalten von Joomla an einer bestimmten Stelle im Ablauf einer Anfrage ändern möchten. Damit binden Sie CSS- oder JavaScript-Dateien ein, ändern Inhalte, ersetzen Text in Beiträgen, leiten weiter, binden Dienste von Drittanbietern an und vieles mehr.

Joomla ordnet diese Aktionen in verschiedene Gruppen von Events, darunter System Events, Content Events, User Events, Authentication Events, Search Events und weitere.

Ein Content Plugin ist eine Art Joomla Plugin, das mit Beiträgen und Inhaltsdaten arbeitet. Es dient vor allem dazu, Inhalte vor, während oder nach der Anzeige zu ändern, zu erweitern oder um Funktionen zu ergänzen. Content Events werden im gesamten Lebenszyklus von Inhalten ausgelöst und von vielen Joomla Komponenten, Modulen und Ansichten genutzt. Sie sind nicht auf die Komponente com_content beschränkt.

Content Plugin Events dienen häufig dazu, Text in Beiträgen zu ändern, zusätzliche Inhalte einzufügen, Shortcodes zu verarbeiten, eigene Informationen anzuzeigen, verwandte Inhalte zu ergänzen, dynamische Ausgaben zu erzeugen und die Darstellung von Inhalten insgesamt zu verbessern.

Hier eine Liste aller Content Plugin Events mit einer Erklärung zu jedem.

onContentPrepare

Dieses Event wird ausgelöst, wenn Joomla Inhalte für die Anzeige vorbereitet. Entwickler können damit Inhalte von Beiträgen verarbeiten, ändern oder erweitern, bevor sie im Frontend ausgegeben werden.

Besonders nützlich ist es, wenn Sie Text ersetzen, eigene Tags verarbeiten, Keywords in Links umwandeln oder dynamische Inhalte in einen Beitrag einfügen möchten.

Wofür es genutzt wird:

  • Inhalte eines Beitrags vor der Anzeige ändern.
  • Text oder Keywords durch andere Inhalte ersetzen.
  • Eigene Tags oder Shortcodes verarbeiten, etwa {gallery} oder {youtube}.
  • Dynamische Inhalte in einen Beitrag einfügen.
  • Keywords automatisch in Links umwandeln.
  • Platzhalter verarbeiten und durch dynamische Werte ersetzen.

Syntax:

onContentPrepare($context, &$article, &$params, $page = 0)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->text)

&$params - Parameter des verarbeiteten Inhalts (z. B. $value = $params->get('show_title'))

$page - Die Seitenzahl des vorbereiteten Inhalts, wenn der Inhalt auf mehrere Seiten aufgeteilt ist.

Beispiel:

onContentAfterTitle

Das Event wird bei der Ausgabe eines Beitrags ausgelöst. Es fragt nach Informationen, die zwischen dem Titel und dem Text des Inhalts erscheinen sollen.

Damit ergänzen Sie Inhalte nach dem Titel und vor dem eigentlichen Text des Beitrags.

Wofür es genutzt wird:

  • Inhalte nach dem Titel des Beitrags ergänzen
  • Einen eigenen Tag oder ein Label wie „News“ nach dem Titel anzeigen
  • Zusätzliche Informationen wie Angaben zum Autor, Lesezeit oder Metadaten des Beitrags ergänzen.
  • Symbole oder Schaltflächen neben oder unter dem Titel anzeigen.
  • Hinweise oder Meldungen zum Beitrag anzeigen.

Syntax:

onContentAfterTitle($context, &$article, &$params, $page = 0)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->title)

&$params - Parameter des verarbeiteten Inhalts.

$limitstart - Eine Ganzzahl, die festlegt, welche Seite des Inhalts erzeugt wird. Das ist vor allem wichtig, wenn Inhalte auf mehrere Seiten aufgeteilt sind.

Beispiel: So ergänzen Sie mit dem Event onContentAfterTitle ein Badge „Neu“ nach dem Titel.

onContentBeforeDisplay

Das Event wird vor der Anzeige des Inhalts ausgelöst. Damit ergänzen Sie im Frontend Inhalte vor dem eigentlichen Inhalt.

Besonders nützlich ist es, wenn Sie vor einem Beitrag zusätzliche Informationen, Hinweise, Banner oder eigenes HTML anzeigen möchten.

Wofür es genutzt wird:

  • Einen Hinweis oder eine Meldung vor einem Beitrag anzeigen.
  • Eigenes HTML vor dem Inhalt des Beitrags ergänzen.
  • Dynamische Informationen passend zum Beitrag anzeigen.
  • Eine Schaltfläche oder ein Symbol vor dem Inhalt des Beitrags ergänzen.
  • Werbung oder Banner vor dem Inhalt einfügen.

Syntax:

onContentBeforeDisplay($context, &$article, &$params, $limitstart)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->title)

&$params - Parameter des verarbeiteten Inhalts.

$limitstart - Eine Ganzzahl, die festlegt, welche Seite des Inhalts erzeugt wird. Das ist vor allem wichtig, wenn Inhalte auf mehrere Seiten aufgeteilt sind.

Beispiel:

onContentAfterDisplay

Das Event wird nach der Anzeige des Inhalts ausgelöst. Damit ergänzen Sie im Frontend Inhalte nach dem eigentlichen Inhalt.

Besonders nützlich ist es, wenn Sie nach einem Beitrag zusätzliche Informationen, Hinweise, Banner oder eigenes HTML anzeigen möchten.

Wofür es genutzt wird:

  • Eigene Inhalte nach der Anzeige eines Beitrags ergänzen.
  • Zusätzliche Informationen oder Werbeinhalte am Ende eines Beitrags anzeigen.
  • Verwandte Beiträge nach dem eigentlichen Beitrag anzeigen.
  • Schaltflächen zum Teilen in sozialen Netzwerken nach dem Inhalt anzeigen.
  • Eigenes HTML nach dem Inhalt des Beitrags ergänzen.

Syntax:

onContentAfterDisplay($context, &$article, &$params, $limitstart)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->title)

&$params - Parameter des verarbeiteten Inhalts.

$limitstart - Eine Ganzzahl, die festlegt, welche Seite des Inhalts erzeugt wird. Das ist vor allem wichtig, wenn Inhalte auf mehrere Seiten aufgeteilt sind.

Beispiel:

onContentBeforeSave

Dieses Event wird ausgelöst, bevor der Inhalt in der Datenbank gespeichert wird. Ein Content Plugin kann den Inhalt damit verarbeiten, prüfen oder ändern, bevor Joomla ihn speichert.

Wofür es genutzt wird:

  • Inhalte eines Beitrags vor dem Speichern ändern.
  • Standardwerte für Felder eines Beitrags setzen.
  • Verhindern, dass ungültige Inhalte gespeichert werden.
  • Eigene Regeln anwenden, bevor ein Beitrag in der Datenbank gespeichert wird.
  • Daten eines Beitrags vor dem Speichern prüfen.

Syntax:

onContentBeforeSave($context, &$article, $isNew, $data)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->title)

$isNew - Ein boolescher Wert, der anzeigt, ob der Inhalt neu ist.

$data - Die zu speichernden Daten. Damit greifen Sie auf die übermittelten Formulardaten zu.

Beispiel:

onContentAfterSave

Das Event wird ausgelöst, nachdem der Inhalt in der Datenbank gespeichert wurde. Ein Content Plugin kann damit weitere Aktionen ausführen, nachdem Joomla einen Beitrag gespeichert hat.

Wofür es genutzt wird:

  • Eine Aktion nach dem Speichern eines Beitrags ausführen.
  • Protokolle beim Speichern eines Beitrags anlegen.
  • Zugehörige Daten nach dem Speichern eines Beitrags aktualisieren.
  • Eigene Verarbeitung nach dem erfolgreichen Speichern eines Beitrags auslösen.

Syntax:

onContentAfterSave($context, &$article, $isNew)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$article - Eine Referenz auf den Beitrag, den die Ansicht ausgibt (z. B. $article->title)

$isNew - Ein boolescher Wert, der anzeigt, ob der Inhalt neu ist.

Beispiel:

onContentPrepareForm

Das Event wird aufgerufen, bevor JForm ausgegeben wird. Damit lässt sich ein JForm-Objekt vor der Ausgabe ändern.

Wofür es genutzt wird:

  • Eigene Felder zum Formular eines Beitrags, einer Kategorie, eines Kontakts oder eines Benutzers hinzufügen.
  • Vorhandene Felder aus einem Formular entfernen oder ausblenden.
  • Eine zusätzliche Datei oder ein Feld in das bestehende Formular laden.
  • Attribute von Feldern (Label, Pflichtfeld, schreibgeschützt usw.) dynamisch ändern.

Syntax:

onContentPrepareForm($form, $data)

Parameter:

$form - Das anzuzeigende JForm-Objekt. Es gibt Zugriff auf die Formularfelder und erlaubt Änderungen am Formular.

$data - Die zum Formular gehörenden Daten. Sie enthalten Informationen über den aktuell geladenen Wert.

Rückgabewert: Boolean, true, wenn die Methode erfolgreich ist.

Beispiel: So ändern Sie das Label eines Felds im Beitrag.

onContentPrepareData

Das Event wird aufgerufen, nachdem JForm geladen wurde. Es wird ausgelöst, wenn Joomla ein vorhandenes Formular lädt und mit Daten füllen muss, direkt nachdem die Struktur des Formulars vorbereitet wurde. Es läuft unmittelbar nach onContentPrepareForm im selben Ablauf zum Laden des Formulars.

Damit füllen Sie Daten für eigene Felder, die Sie über das Event onContentPrepareForm hinzugefügt haben.

Wofür es genutzt wird:

  • Eigene Daten zu einem Beitrag ergänzen, bevor das Formular angezeigt wird.
  • Formularfelder mit Standardwerten vorausfüllen.
  • Vorhandene Daten ändern, bevor sie in Formulare geladen werden.
  • Dynamische Werte anhand des aktuellen Beitrags oder Benutzers setzen.

Syntax:

onContentPrepareData($context, &$data)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$data - Ein Objekt mit den Daten für das Formular. Eine Referenz auf die vorbereiteten Inhaltsdaten.

Rückgabewert: Boolean, true, wenn die Methode erfolgreich ist.

Beispiel: So setzen Sie einen Standardwert für ein eigenes Feld, wenn ein Joomla Beitrag zum Bearbeiten geöffnet wird.

onContentBeforeDelete

Dieses Event wird direkt vor dem Löschen von Inhalten aus der Datenbank ausgelöst. Mit dem Rückgabewert false können Sie das Löschen abbrechen.

Wofür es genutzt wird:

  • Prüfen und verhindern: das Löschen stoppen, wenn eine bestimmte Bedingung zutrifft.
  • Benutzerdaten vor dem Löschen aus der Datenbank abrufen und sichern.
  • Protokollieren und nachvollziehen: festhalten, wer wann was gelöscht hat, bevor die Daten verschwinden.
  • Berechtigung prüfen und benachrichtigen: vor dem Löschen die Berechtigung prüfen und Benachrichtigungen wie Warnungen senden.

Syntax:

onContentBeforeDelete($context, $data)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

&$data - Ein Objekt mit den Daten für das Formular. Eine Referenz auf die vorbereiteten Inhaltsdaten.

Rückgabewert: Boolean. Das Ergebnis entscheidet, ob tatsächlich gelöscht wird. Mit false wird das Löschen abgebrochen.

Beispiel:

onContentAfterDelete

Dieses Event wird ausgelöst, nachdem Inhalte aus der Datenbank gelöscht wurden.

Wofür es genutzt wird:

  • Benutzer nach dem Löschen ihrer Daten weiterleiten.
  • Protokollieren und nachvollziehen: festhalten, dass gelöscht wurde, denn danach haben Sie für die Protokollierung keinen Zugriff mehr auf den Datensatz.
  • Benachrichtigungen: andere Benutzer oder Systeme informieren, dass der Inhalt entfernt wurde (z. B. per E-Mail oder Webhook).
  • Cache leeren: zwischengespeicherte Ansichten oder Listen löschen, die auf das entfernte Element verwiesen haben.

Syntax:

onContentAfterDelete($context, $article)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

$article - Ein Referenzobjekt des gelöschten Elements mit den Daten des Beitrags.

Beispiel:

onContentChangeState

Dieses Event wird ausgelöst, nachdem sich der Status eines Inhalts geändert hat, zum Beispiel wenn ein Beitrag veröffentlicht, versteckt, archiviert oder in den Papierkorb gelegt wird.

Wofür es genutzt wird:

  • Eigene Logik für Abläufe, z. B. zugehörige Elemente automatisch verstecken, wenn das übergeordnete Element versteckt wird.
  • Benachrichtigungen: jemanden informieren, wenn Inhalte veröffentlicht (z. B. einen Redakteur, wenn eine Einsendung live geht) oder in den Papierkorb gelegt werden.
  • Protokollieren und nachvollziehen: festhalten, wer wann was veröffentlicht, versteckt, archiviert oder in den Papierkorb gelegt hat.
  • Zugriffskontrolle anpassen: den Zugriff im Frontend auf zugehörige Ressourcen (etwa Dateien zum Herunterladen an einem Beitrag) je nach neuem Status entziehen oder gewähren.
  • SEO und Sitemap: URLs in einer XML-Sitemap ergänzen oder entfernen, wenn Inhalte veröffentlicht oder gelöscht werden, damit Suchmaschinen nicht auf unveröffentlichte Inhalte verwiesen werden.

Syntax:

onContentChangeState($context, $pks, $value)

Parameter:

$context - Zeigt, woher der Inhalt stammt. Das ist der Name der Komponente und der Ansicht oder der Name des Module (z. B. com_content.article).

$pks - Ein Array mit den IDs der Inhalte, deren Status sich geändert hat.

$value - Der neue Status.

Beispiel:

onContentSearch

Dieses Event wird bei verschiedenen Vorgängen rund um die Suche ausgelöst. Damit ergänzen Sie eigene Inhalte in den Suchergebnissen von Joomla oder ändern die vom Content Plugin gelieferten Ergebnisse.

Die Zeilen müssen folgende Felder liefern, die für eine gemeinsame Anzeige genutzt werden: browsernav, catslug, created, href, section, slug, text, title.

Die meisten modernen Joomla Websites nutzen stattdessen Smart Search (com_finder), das ein eigenes, indexbasiertes System für Events hat.

Wofür es genutzt wird:

  • Daten einer eigenen Komponente durchsuchbar machen: Haben Sie etwa eine Extension für Produkte oder Veranstaltungen gebaut, schreiben Sie einen Handler für onContentSearch, damit diese Einträge neben Beiträgen und Kontakten in der globalen Suche von Joomla erscheinen.
  • Suche nach Berechtigung und Status filtern: Plugins beschränken die Abfrage meist auf veröffentlichte, nicht abgelaufene und erlaubte Einträge, damit die Suche keine unveröffentlichten oder geschützten Inhalte preisgibt.
  • Eigene Suchoberflächen: Extensions von Drittanbietern (z. B. ein Verzeichnis oder eine Download-Verwaltung) nutzen dieses Event häufig, um ihre Inhalte in das Suchfeld der ganzen Website einzubinden.

Syntax:

onContentSearch($text, $phrase = '', $ordering = '', $areas = null)

Parameter:

$text - Der vom Benutzer eingegebene Suchtext.

$phrase - Die Art der Übereinstimmung (exact, any, all). Standard ist „any“.

$ordering - Legt die Sortierung der Suchergebnisse fest. Standard ist „newest“.

$areas - Die vom Benutzer gewählten Suchbereiche.

Beispiel:

onContentSearchAreas

Dieses Event legt fest, für welche „Bereiche“ ein Plugin eine Suche anbietet. Es wird aufgerufen, wenn Joomla wissen muss, welche Bereiche der Inhalte durchsuchbar sind.

Wofür es genutzt wird:

  • So weiss Joomla, welche Arten von Inhalten Ihr Plugin durchsuchen kann.
  • Beiträge, Produkte, FAQs und andere Bereiche der Inhalte lassen sich durchsuchen.

Syntax:

onContentSearchAreas()

Parameter:

Keine.

Beispiel: So legen Sie mehrere Suchbereiche fest.

💡 Brauchen Sie Hilfe bei einem eigenen Joomla Plugin?

Unser Team entwickelt update-sichere Joomla Plugins und Komponenten direkt auf Basis der Core Events aus diesem Beitrag, ohne Abkürzungen und ohne Änderungen an Core-Dateien.

Mit einem Joomla Entwickler sprechen

Fazit

Content Plugin Events bieten einen sauberen, update-sicheren Weg, in fast jede Phase im Leben eines Beitrags einzugreifen, von der ersten Ausgabe über das Speichern und Löschen bis zur Indexierung für die Suche, ohne den Joomla Core je anzufassen. Wenn Sie wissen, welches Event wann ausgelöst wird, ergänzen Sie Funktionen, setzen Regeln durch oder erweitern das System für Inhalte so, dass es jedes künftige Joomla Update übersteht.

Wenn Sie ein eigenes Plugin entwickeln und unsicher sind, welches Event zu Ihrem Fall passt, oder eine zweite Meinung zu Ihrem ereignisgesteuerten Code möchten: Genau solche Aufgaben erledigt unser Entwicklerteam regelmässig.

Über den Autor

Abdulgani Tumbi ist Joomla CMS Experte mit über 12 Jahren Erfahrung in Joomla Website-Entwicklung, Upgrades, Migrationen und individuellen Lösungen. Als Upwork Top Rated Plus Professional (Top 3%) hat er mehr als 30.000 Stunden in Joomla Projekten geleistet und Unternehmen wie Agenturen dabei geholfen, sichere, schnelle und skalierbare Joomla Websites aufzubauen. Komplexe Joomla Aufgaben zu lösen und die Leistung von Joomla zu verbessern ist seine Leidenschaft. Sein Wissen teilt er regelmässig, damit Website-Betreiber mehr aus Joomla herausholen. Sprechen Sie ihn an für fundierte Joomla Beratung und verlässliche Lösungen. Mehr erfahren

Joomla Entwicklungsagentur

Erzählen Sie uns von Ihrem Projekt

Abdulgani Tumbi, JoomConsultant Experte
Abdulgani Tumbi
JoomConsultant Experte
📞 (+91) 9879782615
  • Wie es jetzt weitergeht
  • Wir melden uns innerhalb von 12 Stunden. Dringend? Erreichen Sie uns über WhatsApp oder E-Mail.
  • Vor dem Start erhalten Sie ein kostenloses Joomla Site Audit. Wir benennen die Probleme und empfehlen Lösungen, kostenfrei.
 

Wir respektieren Ihre Privatsphäre und verarbeiten Ihre Daten nach den Vorgaben der DSGVO.