Joomla Content Plugin Events: Gids

Een Joomla-plugin is een extensie die functionaliteit toevoegt of wijzigt zonder een aparte pagina of een menu-item aan te maken.

Zonder plugins zou het toevoegen van functies zoals SEO-tools, spambeveiliging, sociale login of maatwerkfunctionaliteit vereisen dat de kerncode van Joomla wordt aangepast. Het rechtstreeks wijzigen van de kern zou het systeem moeilijker te onderhouden, te upgraden en te beveiligen maken. Om dit probleem op te lossen, gebruikt Joomla een gebeurtenisgestuurd pluginsysteem waarmee ontwikkelaars kunnen inhaken op specifieke acties, zoals het opslaan van een artikel of het inloggen van een gebruiker, en maatwerkcode kunnen uitvoeren zonder de kern te wijzigen.

Plugins worden vooral gebruikt wanneer u het gedrag van Joomla op een specifiek punt in de levenscyclus van een verzoek wilt aanpassen. Ze kunnen worden gebruikt om CSS- of JavaScript-bestanden toe te voegen, content te wijzigen, artikeltekst te vervangen, omleidingen uit te voeren, diensten van derden te integreren en nog veel meer.

Joomla verdeelt deze acties in verschillende eventgroepen, waaronder System Events, Content Events, User Events, Authentication Events, Search Events en andere.

Een Content Plugin is een type Joomla-plugin dat werkt met artikel- en contentgegevens. Het wordt vooral gebruikt om content te wijzigen, uit te breiden of er functionaliteit aan toe te voegen vóór, tijdens of nadat deze wordt weergegeven. Content events worden tijdens de hele levenscyclus van content geactiveerd en worden door veel Joomla-componenten, -modules en -weergaven gebruikt. Ze zijn niet beperkt tot de component com_content.

Content Plugin Events worden vaak gebruikt om artikeltekst te wijzigen, extra content in te voegen, shortcodes te verwerken, aangepaste informatie weer te geven, gerelateerde content toe te voegen, dynamische uitvoer te genereren en de algehele contentpresentatie te verbeteren.

Hier volgt een lijst met alle Content Plugin Events, met een uitleg bij elk event.

onContentPrepare

Dit event wordt geactiveerd wanneer Joomla content voorbereidt voordat die wordt weergegeven. Hiermee kunnen ontwikkelaars artikelcontent verwerken, wijzigen of verrijken voordat die op de frontend wordt gerenderd.

Het is vooral handig wanneer u acties wilt uitvoeren zoals tekst vervangen, aangepaste tags verwerken, zoekwoorden omzetten in links of dynamische content in een artikel invoegen.

Waarvoor wordt het gebruikt:

  • Artikelcontent wijzigen voordat die wordt weergegeven.
  • Tekst of zoekwoorden vervangen door andere content.
  • Aangepaste tags of shortcodes verwerken, zoals {gallery} of {youtube}.
  • Dynamische content in een artikel invoegen.
  • Zoekwoorden automatisch omzetten in links.
  • Placeholders verwerken en vervangen door dynamische waarden.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->text)

&$params - parameters die horen bij de content die wordt verwerkt (bijv. $value = $params->get('show_title'))

$page - Het paginanummer van de content die wordt voorbereid wanneer de content over meerdere pagina's is verdeeld.

Voorbeeld:

onContentAfterTitle

Het event wordt geactiveerd tijdens het renderen van het artikel. Het is een verzoek om informatie die tussen de contenttitel en de contentbody moet worden geplaatst.

Hiermee kunt u content toevoegen na de artikeltitel en vóór de hoofdcontent van het artikel.

Waarvoor wordt het gebruikt:

  • Content toevoegen na de artikeltitel
  • Een aangepaste tag of label na de titel tonen, zoals "Nieuws"
  • Extra informatie toevoegen, zoals auteursinformatie, leestijd of artikelmetadata.
  • Pictogrammen of knoppen naast of onder de artikeltitel tonen.
  • Meldingen of berichten over het artikel tonen.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->title)

&$params - parameters die horen bij de content die wordt verwerkt.

$limitstart - Een geheel getal dat bepaalt welke pagina van de content wordt gegenereerd. Dit is vooral relevant wanneer content over meerdere pagina's is verdeeld.

Voorbeeld: hier volgt een voorbeeld om met het event onContentAfterTitle een badge "Nieuw" na de titel toe te voegen.

onContentBeforeDisplay

Het event wordt geactiveerd voordat de content wordt weergegeven. Hiermee kunnen gebruikers content toevoegen vóór de weergave van de hoofdcontent op de frontend.

Het is vooral handig wanneer u extra informatie, meldingen, banners of aangepaste HTML vóór een artikel wilt tonen.

Waarvoor wordt het gebruikt:

  • Een melding of bericht tonen vóór een artikel.
  • Aangepaste HTML toevoegen vóór de artikelcontent.
  • Dynamische informatie tonen op basis van het artikel.
  • Een knop of pictogram toevoegen vóór de artikelcontent.
  • Advertenties of banners invoegen vóór de content.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->title)

&$params - parameters die horen bij de content die wordt verwerkt.

$limitstart - Een geheel getal dat bepaalt welke pagina van de content wordt gegenereerd. Dit is vooral relevant wanneer content over meerdere pagina's is verdeeld.

Voorbeeld:

onContentAfterDisplay

Het event wordt geactiveerd nadat de content is weergegeven. Hiermee kunnen gebruikers content toevoegen na de weergave van de hoofdcontent op de frontend.

Het is vooral handig wanneer u extra informatie, meldingen, banners of aangepaste HTML na een artikel wilt tonen.

Waarvoor wordt het gebruikt:

  • Aangepaste content toevoegen nadat een artikel is weergegeven.
  • Extra informatie of promotionele content tonen aan het einde van een artikel.
  • Gerelateerde artikelcontent tonen na het hoofdartikel.
  • Knoppen voor sociaal delen tonen na de content.
  • Aangepaste HTML toevoegen na de artikelcontent.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->title)

&$params - parameters die horen bij de content die wordt verwerkt.

$limitstart - Een geheel getal dat bepaalt welke pagina van de content wordt gegenereerd. Dit is vooral relevant wanneer content over meerdere pagina's is verdeeld.

Voorbeeld:

onContentBeforeSave

Dit event wordt geactiveerd voordat de content in de database wordt opgeslagen. Hiermee kan een contentplugin de content verwerken, valideren of wijzigen voordat Joomla deze in de database opslaat.

Waarvoor wordt het gebruikt:

  • Artikelcontent wijzigen voordat die wordt opgeslagen.
  • Standaardwaarden instellen voor artikelvelden.
  • Voorkomen dat ongeldige content wordt opgeslagen.
  • Aangepaste regels toepassen voordat een artikel in de database wordt opgeslagen.
  • Artikelgegevens valideren voordat ze worden opgeslagen.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->title)

$isNew - Een booleaanse waarde die aangeeft dat het contentitem nieuw is.

$data - De gegevens die worden opgeslagen. Hiermee kunt u de ingediende formuliergegevens benaderen.

Voorbeeld:

onContentAfterSave

Het event wordt geactiveerd nadat de content in de database is opgeslagen. Hiermee kan een contentplugin extra acties uitvoeren nadat Joomla een artikel heeft opgeslagen.

Waarvoor wordt het gebruikt:

  • Een actie uitvoeren nadat een artikel is opgeslagen.
  • Logs aanmaken wanneer een artikel wordt opgeslagen.
  • Gerelateerde gegevens bijwerken nadat een artikel is opgeslagen.
  • Aangepaste verwerking activeren nadat een artikel succesvol is opgeslagen.

Syntax:

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

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$article - Een verwijzing naar het artikel dat door de weergave wordt gerenderd (bijv. $article->title)

$isNew - Een booleaanse waarde die aangeeft dat het contentitem nieuw is.

Voorbeeld:

onContentPrepareForm

Het event wordt aangeroepen voordat JForm wordt gerenderd. Het wordt geactiveerd om een JForm-object te wijzigen vóór het renderen.

Waarvoor wordt het gebruikt:

  • Aangepaste velden toevoegen aan een artikel-, categorie-, contact- of gebruikersformulier.
  • Bestaande velden uit een formulier verwijderen of verbergen.
  • Een extra bestand of veld laden in het bestaande formulier.
  • Veldattributen (label, verplicht, alleen-lezen enzovoort) dynamisch wijzigen.

Syntax:

onContentPrepareForm($form, $data)

Parameters:

$form - Het JForm-object dat wordt weergegeven. Het geeft toegang tot formuliervelden en stelt gebruikers in staat formulieren aan te passen.

$data - Hoort bij het formulier. Het bevat informatie over de waarde die op dat moment is geladen.

Retourwaarde: Boolean, true als de methode slaagt.

Voorbeeld: hier volgt een voorbeeld van het bijwerken van het label van een artikelveld.

onContentPrepareData

Het event wordt aangeroepen nadat JForm is opgehaald. Het wordt geactiveerd wanneer Joomla een bestaand formulier laadt en dit met gegevens moet vullen, direct nadat de formulierstructuur zelf is voorbereid. Het wordt uitgevoerd direct na onContentPrepareForm, als onderdeel van hetzelfde "formulier laden"-proces.

Het wordt gebruikt om gegevens te vullen voor aangepaste velden die u via het event onContentPrepareForm hebt toegevoegd.

Waarvoor wordt het gebruikt:

  • Aangepaste gegevens aan een artikel toevoegen voordat het formulier wordt weergegeven.
  • Formuliervelden vooraf invullen met standaardwaarden.
  • Bestaande gegevens wijzigen voordat ze in formulieren worden geladen.
  • Dynamische waarden instellen op basis van het huidige artikel of de huidige gebruiker.

Syntax:

onContentPrepareData($context, &$data)

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$data - Een object met de gegevens voor het formulier. Een verwijzing naar de contentgegevens die worden voorbereid.

Retourwaarde: Boolean, true als de methode slaagt.

Voorbeeld: hier volgt een voorbeeld waarin u een standaardwaarde aan een aangepast veld kunt toevoegen wanneer een Joomla-artikel wordt geopend om te bewerken.

onContentBeforeDelete

Dit event wordt geactiveerd vlak voordat content uit de database wordt verwijderd. Hier kunt u het verwijderen afbreken door false terug te geven.

Waarvoor wordt het gebruikt:

  • Validatie en preventie: het verwijderen stoppen als aan een specifieke voorwaarde wordt voldaan.
  • Gebruikersgegevens ophalen en opslaan voordat ze uit de database worden verwijderd.
  • Logging en auditing: vastleggen wie wat heeft verwijderd en wanneer, voordat de gegevens verdwijnen.
  • Rechtencontrole en melding: de rechten controleren voordat gegevens worden verwijderd en meldingen sturen, zoals waarschuwingen, voordat ze uit de database worden verwijderd.

Syntax:

onContentBeforeDelete($context, $data)

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

&$data - Een object met de gegevens voor het formulier. Een verwijzing naar de contentgegevens die worden voorbereid.

Retourwaarde: Boolean. Het resultaat bepaalt of het verwijderen daadwerkelijk doorgaat; bij het teruggeven van false wordt het verwijderen geannuleerd.

Voorbeeld:

onContentAfterDelete

Dit event wordt geactiveerd nadat content uit de database is verwijderd.

Waarvoor wordt het gebruikt:

  • Gebruikers doorverwijzen nadat hun gegevens zijn verwijderd.
  • Logging en auditing: vastleggen dat het verwijderen heeft plaatsgevonden, aangezien u daarna geen toegang meer hebt tot het record voor logdoeleinden.
  • Meldingen: andere gebruikers of systemen informeren dat de content is verdwenen (bijv. via e-mail of webhook).
  • Cache ongeldig maken: gecachete weergaven of overzichten wissen die naar het inmiddels verwijderde item verwezen.

Syntax:

onContentAfterDelete($context, $article)

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

$article - Een referentieobject dat is verwijderd en de artikelgegevens bevat.

Voorbeeld:

onContentChangeState

Dit event wordt geactiveerd nadat de status van content is gewijzigd. Bijvoorbeeld wanneer een artikel wordt gepubliceerd, gedepubliceerd, gearchiveerd of naar de prullenbak verplaatst.

Waarvoor wordt het gebruikt:

  • Aangepaste workflowlogica, bijv. gerelateerde items automatisch depubliceren wanneer een bovenliggend item wordt gedepubliceerd.
  • Meldingen: iemand waarschuwen wanneer content wordt gepubliceerd (bijv. een redacteur informeren wanneer een inzending live gaat) of naar de prullenbak wordt verplaatst.
  • Logging en auditing: vastleggen wie wat heeft gepubliceerd, gedepubliceerd, gearchiveerd of naar de prullenbak verplaatst en wanneer.
  • Aanpassing van toegangsbeheer: frontendtoegang tot gerelateerde bronnen (zoals downloadbare bestanden die aan een artikel zijn gekoppeld) intrekken of verlenen op basis van de nieuwe status.
  • SEO- en sitemapbeheer: URL's toevoegen aan of verwijderen uit een XML-sitemap wanneer content wordt gepubliceerd of naar de prullenbak wordt verplaatst, zodat zoekmachines niet naar ongepubliceerde content worden verwezen.

Syntax:

onContentChangeState($context, $pks, $value)

Parameters:

$context - Geeft aan waar de content vandaan komt. Dit is de componentnaam en weergave, of de naam van de module (bijv. com_content.article).

$pks - Een array met primaire sleutel-ID's van de content waarvan de status is gewijzigd.

$value - De nieuwe statuswaarde.

Voorbeeld:

onContentSearch

Dit event wordt geactiveerd door diverse zoekgerelateerde handelingen. Het wordt gebruikt om eigen content aan de zoekresultaten van Joomla toe te voegen of de resultaten te wijzigen die door de contentplugin worden teruggegeven.

De rijen moeten de volgende velden teruggeven, die in een gemeenschappelijke weergaveroutine worden gebruikt: browsernav, catslug, created, href, section, slug, text, title.

De meeste moderne Joomla-sites gebruiken in plaats daarvan Slim zoeken (com_finder), dat een eigen, afzonderlijk op indexering gebaseerd eventsysteem heeft.

Waarvoor wordt het gebruikt:

  • De gegevens van een maatwerkcomponent doorzoekbaar maken, bijv. als u een extensie voor producten of evenementen hebt gebouwd, schrijft u een onContentSearch-handler zodat die items in de globale zoekresultaten van Joomla verschijnen naast artikelen en contacten.
  • Zoeken filteren op rechten en status: plugins beperken de query doorgaans tot alleen gepubliceerde, niet-verlopen items waarvoor toegang is verleend, zodat zoeken geen ongepubliceerde of beperkte content lekt.
  • Zoekinterface-extensies op maat: extensies van derden (bijv. een bedrijvengids of een downloadmanager) haken hier vaak op in om hun content in het sitebrede zoekvak te laten verschijnen.

Syntax:

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

Parameters:

$text - De zoektekst die door de gebruiker is ingevoerd.

$phrase - Een tekenreeks voor de overeenkomstoptie (exact, any, all). De standaardwaarde is "any".

$ordering - Bepaalt de sorteermethode voor de zoekresultaten. De standaardwaarde is "newest".

$areas - De zoekgebieden die door de gebruiker zijn geselecteerd.

Voorbeeld:

onContentSearchAreas

Dit event wordt gebruikt om vast te stellen voor welke "gebieden" een plugin zoekfaciliteiten biedt. Het wordt aangeroepen wanneer Joomla moet weten welke contentgebieden doorzocht kunnen worden.

Waarvoor wordt het gebruikt:

  • Het helpt Joomla te weten welke soorten content uw plugin kan doorzoeken.
  • Artikelen, producten, veelgestelde vragen en andere contentgebieden kunnen worden doorzocht.

Syntax:

onContentSearchAreas()

Parameters:

Geen.

Voorbeeld: hier kunt u meerdere zoekgebieden definiëren.

💡 Hulp nodig bij het bouwen van eenmaatwerk Joomla-plugin?

Ons team schrijft updatebestendige Joomla-plugins en -componenten die rechtstreeks op kernevents zoals de hier besproken zijn gebouwd, zonder shortcuts en zonder aanpassingen aan kernbestanden.

Praat met een Joomla-ontwikkelaar

Conclusie

Content Plugin Events bieden u een schone, updatebestendige manier om op vrijwel elke fase van het leven van een artikel in te haken, van de eerste weergave via opslaan en verwijderen tot zoekindexering, zonder ooit de Joomla-kern aan te raken. Zodra u weet welk event op welk moment wordt geactiveerd, kunt u functionaliteit toevoegen, regels afdwingen of het contentsysteem uitbreiden op een manier die elke toekomstige Joomla-update overleeft.

Als u een eigen plugin bouwt en niet zeker weet welk event bij uw toepassing past, of een tweede paar ogen op uw eventgestuurde code wilt, is dat precies het soort werk dat ons ontwikkelteam regelmatig uitvoert.

Over de auteur

Abdulgani Tumbi is een Joomla CMS-expert met meer dan 12 jaar ervaring in Joomla-websiteontwikkeling, upgrades, migraties en maatwerkoplossingen. Als Upwork Top Rated Plus-professional (Top 3%) heeft hij meer dan 30K uur aan Joomla-projecten voltooid en bedrijven en bureaus geholpen veilige, krachtige en schaalbare Joomla-websites te bouwen. Gepassioneerd door het oplossen van complexe Joomla-uitdagingen en het optimaliseren van Joomla-prestaties, deelt hij actief inzichten en expertise om website-eigenaren te helpen het beste uit Joomla te halen. Neem contact met hem op voor deskundig Joomla-advies en betrouwbare oplossingen. Lees meer…

Joomla-ontwikkelbedrijf

Vertel ons over uw project

Abdulgani Tumbi, JoomConsultant-expert
Abdulgani Tumbi
JoomConsultant-expert
📞 (+91) 9879782615
  • Wat kunt u hierna verwachten?
  • Wij nemen binnen 12 uur contact met u op. Dringend? Bereik ons via WhatsApp of e-mail.
  • Ontvang een gratis Joomla-site-audit voordat wij beginnen. Wij signaleren problemen en adviseren oplossingen, kosteloos.
 

Wij respecteren uw privacy en verwerken uw gegevens in overeenstemming met de AVG.