Terug naar hoofdinhoud

Prive berichten in Joomla

22 juni 2026

Joomla heeft een kleine mailbox ingebouwd in de beheeromgeving die de meeste beheerders nooit opmerken. Wanneer je inlogt en Joomla je waarschuwt dat er een update beschikbaar is, of dat er iets je aandacht nodig heeft, komt die melding vaak binnen als een privebericht. Met hetzelfde systeem kun jij en je mede-beheerders korte notities naar elkaar sturen zonder het configuratiescherm te verlaten.

Dit artikel legt uit hoe de Priveberichten-component van Joomla (com_messages) echt werkt. Het behandelt de basis voor eigenaren en redacteuren, de dagelijkse instellingen voor beheerders, en de technische details voor ontwikkelaars - de databasetabellen, het PHP-model, de e-mailmeldingen en de REST API.

Een ingebouwde inbox voor je beheerteam, verstopt in het volle zicht onder het Gebruikers-menu.

Het doel is simpel: je genoeg inzicht geven in Priveberichten om ze bewust te gebruiken in plaats van erdoor verrast te worden.

1. De Basis

1.1 Wat is de Priveberichten-component?

De Priveberichten-component (com_messages) is het ingebouwde hulpmiddel van Joomla om korte, interne berichten tussen backend-gebruikers te versturen. Het maakt al vele jaren deel uit van de Joomla-kern en bevindt zich volledig in de beheeromgeving.

Wat het kort gezegd doet:

  • Het laat een backend-gebruiker een bericht (onderwerp plus tekst) sturen naar een andere backend-gebruiker.
  • Het slaat elk bericht op als een rij in de databasetabel #__messages.
  • Het kan de ontvanger een e-mail sturen wanneer er een nieuw bericht binnenkomt.
  • Het is ook het kanaal dat Joomla zelf gebruikt om Super Users over belangrijke gebeurtenissen te informeren.

Zie het als een klein intern postvak. Het is geen frontend-chat, geen contactformulier en geen nieuwsbrieftool. Het is een rustig notitiesysteem van beheerder naar beheerder.

1.2 Wie kan een bericht ontvangen?

Dit is het allerbelangrijkste feit over Priveberichten: je kunt alleen een bericht sturen naar een gebruiker die mag inloggen op de backend. Een gewone, alleen-frontend geregistreerde gebruiker kan geen privebericht ontvangen, omdat die geen backend-inbox heeft om het in te lezen.

Joomla controleert twee dingen over de ontvanger voordat het verstuurt:

  • De ontvanger moet kunnen inloggen op het beheer (core.login.admin).
  • De ontvanger moet de rechten Beheren hebben op com_messages (core.manage).

In de praktijk betekent dit dat Managers, Administrators en Super Users berichten kunnen uitwisselen. Auteurs en geregistreerde bezoekers niet.

1.3 Waar vind ik het?

In de Joomla 6-backend is het menupad:

Users → Private Messages

Onder dat menu vind je drie acties:

Menu-itemWat het doet
New Private Message Opent het opstelformulier (ontvanger, onderwerp, bericht).
Read Private Messages Opent je inbox - de lijst met berichten die aan jou zijn gestuurd.
My Settings Je persoonlijke opties (inbox vergrendelen, e-mail bij nieuw, auto-opschonen).

De component staat in administrator/components/com_messages/. Er is geen frontend-map - met opzet. Het is een tool die alleen in de backend werkt.

Naar boven

2. Een bericht versturen en lezen

2.1 Het opstelformulier

Open Users → Private Messages → New Private Message. Het formulier is bewust klein. Het heeft precies drie velden:

VeldToelichting
Recipient (ontvanger) Een keuzelijst van gebruikers die berichten mogen ontvangen. Verplicht.
Subject (onderwerp) Een korte titel in platte tekst voor het bericht. Verplicht.
Message (bericht) De tekst, geschreven in de standaardeditor. Verplicht.

Er is geen CC, geen bijlage en geen uitgebreide werkbalk in de tekst. De ontvangerslijst toont alleen gebruikers die door de backend-login- en beheercontroles uit sectie 1.2 komen, zodat je niet per ongeluk iemand een bericht stuurt die het nooit kan lezen.

2.2 Lezen en beantwoorden

Open Users → Private Messages → Read Private Messages om je inbox te zien. Klik op een onderwerp om het bericht te openen. De berichtweergave toont vier dingen:

  • From - de naam van de afzender.
  • Date - wanneer het bericht is verstuurd.
  • Subject - de titel.
  • Message - de berichttekst.

Een ontvangen bericht openen markeert het automatisch als gelezen. Vanuit de berichtweergave kun je op Reply klikken, wat het opstelformulier opent met de oorspronkelijke afzender alvast ingevuld als ontvanger.

Een privebericht is een een-op-een notitie. Er zijn geen groepsgesprekken en geen "allen beantwoorden". Elk antwoord is een gloednieuwe berichtrij.

Naar boven

3. De inbox: lijst, filters en acties

3.1 De kolommen in de lijst

De inboxlijst (Read Private Messages) toont de berichten waarin jij de ontvanger bent. Het toont nooit berichten die je naar anderen hebt gestuurd. De kolommen zijn:

KolomBetekenis
Selectievakje Selecteer rijen voor een bulkactie.
Subject De titel van het bericht. Klik erop om het bericht te openen.
Read Een statuspictogram dat aangeeft of het bericht gelezen of nog nieuw is.
From De naam van de afzender.
Date Wanneer het bericht is verstuurd. De lijst sorteert standaard nieuwste eerst.

3.2 Filteren en zoeken

Boven de lijst krijg je een zoekvak en een statusfilter:

  • Het zoekvak kijkt zowel in het onderwerp als in de berichttekst.
  • Het statusfilter laat je alleen gelezen of alleen ongelezen berichten tonen.

Je kunt de sorteervolgorde ook wijzigen door op een kolomkop te klikken.

3.3 Markeren en verwijderen

Selecteer een of meer rijen met de selectievakjes en gebruik dan de werkbalk om ze als gelezen of ongelezen te markeren, of om ze te verwijderen. Verwijderen is permanent - er is geen prullenbak of herstel voor priveberichten. Let op: je kunt alleen berichten in je eigen inbox markeren of verwijderen; de component laat je geen bericht aanraken dat aan iemand anders is gericht.

Naar boven

4. Je persoonlijke instellingen

Elke backend-gebruiker heeft eigen voorkeuren voor priveberichten via Users → Private Messages → My Settings. Deze instellingen zijn persoonlijk: ze gelden alleen voor je eigen inbox en worden los van de berichten zelf opgeslagen (zie sectie 7.2). Er zijn drie opties.

4.1 Inbox vergrendelen

De optie Lock Inbox (intern opgeslagen als lock) is een simpele Ja/Nee-schakelaar. Wanneer je hem op Ja zet, kan niemand je nog een privebericht sturen. Elke poging om je een bericht te sturen mislukt met een "versturen mislukt"-fout. De standaard is Nee.

Dit is handig als je nooit priveberichten gebruikt en niet wilt dat je inbox volloopt met systeemmeldingen.

4.2 Stuur mij een e-mail

De optie voor de e-mailmelding (opgeslagen als mail_on_new) is ook Ja/Nee. Wanneer hij op Ja staat - wat de standaard is - mailt Joomla je telkens wanneer er een nieuw privebericht binnenkomt, zodat je niet steeds de backend hoeft te controleren. Zet hem op Nee om berichten geruisloos te ontvangen.

4.3 Automatisch opschonen na N dagen

De optie auto-opschonen (opgeslagen als auto_purge) is een aantal dagen. Joomla verwijdert automatisch berichten in je inbox die ouder zijn dan dit aantal. De standaard is 7 dagen.

  • Stel een hoger getal in (bijvoorbeeld 30) om berichten langer te bewaren.
  • Stel het op 0 in om automatisch verwijderen helemaal uit te schakelen.

Auto-opschonen kijkt alleen naar de leeftijd van het bericht, niet naar of je het hebt gelezen. Een ongelezen bericht ouder dan de limiet wordt ook verwijderd, dus reken niet op een laag getal als belangrijke meldingen een tijdje ongelezen kunnen blijven liggen.

Naar boven

5. E-mailmeldingen

5.1 Wanneer wordt er een e-mail verstuurd?

Wanneer je een privebericht stuurt, beslist Joomla of het de ontvanger mailt op basis van diens mail_on_new-instelling, niet die van jou. Als de ontvanger e-mailmeldingen heeft aanstaan (de standaard), krijgt die een e-mail. Heeft die ze uitgezet, dan wordt het bericht toch in de inbox opgeslagen - het komt alleen geruisloos binnen.

De e-mail wordt verstuurd in de backend-taal van de ontvanger en bevat het onderwerp en een platte-tekstversie van de berichttekst, plus een link terug naar het bericht in de beheeromgeving. Het reply-to-adres wordt op de afzender gezet, zodat een directe e-mailreactie bij de juiste persoon terechtkomt.

5.2 De e-mailsjabloon

De melding gebruikt het Mail Templates-systeem van Joomla. De sjabloonsleutel is com_messages.new_message. Je kunt de bewoording aanpassen via System → Templates → Mail Templates door die sjabloon te bewerken. De beschikbare plaatsaanduidingen zijn onder andere het onderwerp, de berichttekst, de naam van de afzender, de sitenaam en de site-URL.

5.3 Wat als de e-mail mislukt?

Als je site geen e-mail kan versturen - mail is uitgeschakeld, of de mailserver weigert het bericht - raakt Joomla het privebericht niet kwijt. Het slaat het bericht nog steeds op in de inbox en logt alleen een waarschuwing dat de meldingsmail niet kon worden bezorgd. De ontvanger ziet het bericht alsnog de volgende keer dat hij zijn inbox opent.

Naar boven

6. Systeemberichten van Joomla

Priveberichten zijn niet alleen voor notities van mens tot mens. De Joomla-kern gebruikt dezelfde component om beheerders over belangrijke gebeurtenissen te informeren. Het bekendste voorbeeld is de updatemelding: wanneer er een nieuwe Joomla-versie beschikbaar is, kan het systeem een privebericht in de inbox van alle Super Users plaatsen.

Onder de motorkap is dit een helper die alle ingeschakelde Super Users doorloopt en ze allemaal hetzelfde bericht stuurt, met de afzender en ontvanger ingesteld op die gebruiker. Omdat het de normale verzendroute hergebruikt, respecteren deze systeemberichten ook de mail_on_new-voorkeur van elke gebruiker en activeren ze dezelfde e-mailmelding.

Daarom log je soms in op een nieuwe melding die je niet had verwacht. Het is geen spam - het is Joomla dat zijn eigen interne postvak gebruikt om je aandacht te trekken. Wil je deze nooit, dan kun je je inbox vergrendelen (sectie 4.1), maar dan mis je ook echte meldingen, dus denk twee keer na voordat je dat op een productiesite doet.

Naar boven

7. Onder de motorkap: de database

7.1 De tabel #__messages

Elk privebericht is een rij in de tabel #__messages. De kolommen zijn:

KolomBetekenis
message_id Primaire sleutel.
user_id_from Het gebruikers-id van de afzender.
user_id_to Het gebruikers-id van de ontvanger.
date_time Wanneer het bericht is verstuurd.
state Leesstatus: 0 = ongelezen/nieuw, 1 = gelezen.
priority Prioriteitsniveau: 0 normaal, 1 middel, 2 belangrijk.
subject De titel van het bericht.
message De berichttekst.
folder_id Een verouderde mapkolom, behouden voor compatibiliteit maar niet gebruikt door de huidige interface.

Twee details zijn het weten waard. Ten eerste bestaat de kolom priority in de database, maar het standaard opstelformulier laat je hem niet instellen - dus in de praktijk heeft elk bericht dat je handmatig stuurt prioriteit 0. Hij komt vooral via de REST API naar voren. Ten tweede zijn "gelezen" en "ongelezen" gewoon de waarde van de kolom state, die de code ook beschikbaar stelt onder de alias published.

7.2 De tabel #__messages_cfg

Je persoonlijke instellingen uit sectie 4 worden niet in de berichtentabel opgeslagen. Ze staan in een aparte sleutel/waarde-tabel genaamd #__messages_cfg:

KolomBetekenis
user_id De gebruiker bij wie de instelling hoort.
cfg_name De naam van de instelling: lock, mail_on_new of auto_purge.
cfg_value De opgeslagen waarde (bijvoorbeeld 1 of 7).

Elke optie is een rij. Wanneer je je instellingen opslaat, verwijdert Joomla je bestaande rijen en schrijft het een verse rij per optie. Daarom heeft een gloednieuwe gebruiker hier helemaal geen rijen en gebruikt die simpelweg de standaardwaarden.

7.3 De indexen

Beide tabellen hebben een index die je vertelt hoe Joomla ze daadwerkelijk leest.

TabelIndexWaarom hij bestaat
#__messages useridto_state (user_id_to, state) De inboxquery laadt berichten voor een ontvanger, vaak gefilterd op gelezen/ongelezen. Deze index maakt die opzoeking snel, zelfs met veel rijen.
#__messages_cfg unieke idx_user_var_name (user_id, cfg_name) Het is een UNIQUE-sleutel, dus een gebruiker kan maar een waarde per instellingsnaam hebben. Dat garandeert dat je nooit twee tegenstrijdige mail_on_new-rijen krijgt.

Op een eenpersoonssite maakt geen van beide indexen uit. Op een drukke backend met meerdere redacteuren en duizenden opgeslagen berichten is het de useridto_state-index die de inbox snel houdt.

7.4 Een opmerking over privacy en beveiliging

Priveberichten zijn alleen "prive" in de zin dat andere backend-gebruikers elkaars inbox niet via de interface kunnen lezen. Ze zijn niet versleuteld. Elk bericht staat als platte tekst in de tabel #__messages, wat betekent:

  • Iedereen met databasetoegang (een hostingbeheerder, een DBA, een Super User die een query draait) kan elk bericht lezen.
  • Berichten zitten in je normale databaseback-ups, in platte tekst.
  • De meldingsmail draagt ook een platte-tekstkopie van de inhoud.

Behandel de component dus als een plek voor interne notities, niet als een kluis. Stuur nooit wachtwoorden, API-sleutels of andere geheimen via een privebericht. Moet je een inloggegeven delen, gebruik dan een speciale tool voor geheimen en stuur via Joomla alleen een verwijzing.

Naar boven

8. Onder de motorkap: de PHP API

8.1 Een bericht versturen in code

De component volgt het moderne Joomla MVC-patroon. Om een bericht te versturen vanuit je eigen extensie of een CLI-script, boot je de component en gebruik je het Message-model:

use Joomla\CMS\Factory;

$app     = Factory::getApplication();
$factory = $app->bootComponent('com_messages')->getMVCFactory();

$model = $factory->createModel('Message', 'Administrator', ['ignore_request' => true]);

$model->save([
    'user_id_from' => 100,        // afzender
    'user_id_to'   => 200,        // ontvanger (moet een backend-gebruiker zijn)
    'subject'      => 'Back-up voltooid',
    'message'      => 'De nachtelijke back-up is zonder fouten voltooid.',
]);

De methode save() van het model doet al het zware werk: het controleert of beide gebruikers bestaan, verifieert of de ontvanger berichten mag ontvangen, respecteert de instelling voor vergrendelde inbox van de ontvanger, slaat de rij op en - als de ontvanger dat wil - stuurt het de meldingsmail.

8.2 Lezen en als gelezen markeren

Wanneer de ontvanger een bericht opent via de methode getItem() van het model, zet het model state ook op 1 voor die rij. Een bericht lezen en het als gelezen markeren zijn dezelfde handeling, en daarom is er geen aparte "markeer als gelezen"-stap wanneer je in de inbox op een onderwerp klikt.

8.3 Auto-opschonen in code

De logica voor auto-opschonen zit in het lijstmodel. Het leest de auto_purge-waarde van de gebruiker (standaard 7 als de gebruiker geen instelling heeft), en als die waarde groter is dan nul, verwijdert het rijen uit #__messages waar date_time ouder is dan zoveel dagen en user_id_to de huidige gebruiker is. Een waarde van 0 slaat het verwijderen helemaal over.

Naar boven

9. De Web Services API

Anders dan sommige kleine kerncomponenten, biedt Priveberichten wel een REST API. De Web Services-plugin voor messages registreert een standaardset CRUD-routes onder:

/api/index.php/v1/messages

9.1 Opvragen en lezen

Om de berichten in je inbox op te vragen, stuur je een geverifieerd GET-verzoek met een API-token:

curl -H "X-Joomla-Token: <token>" \
     https://example.test/api/index.php/v1/messages

Om een enkel bericht te lezen, voeg je het id toe:

curl -H "X-Joomla-Token: <token>" \
     https://example.test/api/index.php/v1/messages/42

Elk item retourneert de velden id, user_id_from, user_id_to, date_time, priority, subject, message, state en de weergavenaam van de afzender. Merk op dat de API de kolom message_id in zijn uitvoer hernoemt naar id.

9.2 Een bericht aanmaken

Om een nieuw bericht te versturen, POST je een JSON-body:

curl -X POST \
     -H "X-Joomla-Token: <token>" \
     -H "Content-Type: application/json" \
     -d '{"user_id_to": 200, "subject": "Deploy klaar", "message": "Release 2.4 staat live."}' \
     https://example.test/api/index.php/v1/messages

Omdat de API hetzelfde model gebruikt als de backend, gelden dezelfde regels: de ontvanger moet een backend-gebruiker zijn en hun instellingen voor vergrendelde inbox en e-mailmelding worden gerespecteerd. De REST-route is de enige standaardmanier om een priority anders dan nul op een bericht te zetten.

Naar boven

10. Rechten en ACL

Priveberichten gebruikt de standaard toegangscontrole van Joomla. Je kunt het instellen via System → Global Configuration → Private Messages → Permissions. De relevante acties zijn:

ActieWat het afschermt
core.admin De component en zijn rechten configureren.
core.manage De inbox gebruiken. Dit is ook het recht dat een gebruiker geschikt maakt om berichten te ontvangen.
core.create Een bericht opstellen en versturen.
core.delete Berichten verwijderen.
core.edit.state De gelezen/ongelezen-status wijzigen.

Het belangrijkste punt voor beheerders is het verband tussen ACL en bezorging: een gebruiker verschijnt alleen in de ontvangerslijst als die Beheren heeft op com_messages en kan inloggen op de backend. Zegt een collega "ik krijg nooit priveberichten", dan is de gebruikelijke oorzaak dat hun gebruikersgroep een van die twee rechten mist.

Naar boven

11. SEO en metadata

Deze sectie is kort om een goede reden: Priveberichten heeft helemaal geen SEO-voetafdruk. De component werkt alleen in de backend, dus:

  • Er zijn geen frontend-URL's, geen menu-itemtypes en geen openbare pagina's om te indexeren.
  • Er zijn geen metadata, slugs of canonical-tags om te beheren.
  • Zoekmachines zien nooit de inhoud van berichten, wat precies is wat je wilt voor prive interne notities.

Zoek je naar de component bij het plannen van je sitestructuur, dan is de praktische conclusie dat het nul SEO-configuratie nodig heeft. Besteed die aandacht liever aan je artikelen, categorieen en menu's.

Naar boven

12. Veelgemaakte fouten en valkuilen

12.1 Een alleen-frontend gebruiker een bericht sturen

Symptoom: Een gebruiker ontbreekt in de ontvangerslijst, of een geautomatiseerde verzending mislukt voor een bepaalde persoon.

Oplossing: Die gebruiker kan niet inloggen op de backend, of mist Beheren op com_messages. Priveberichten bereiken alleen backend-gebruikers. Pas de groep van de gebruiker aan, of gebruik e-mail.

12.2 Belangrijke meldingen verdwijnen

Symptoom: Een bericht dat je wilde bewaren is vanzelf verdwenen.

Oplossing: Auto-opschonen heeft het verwijderd. De standaard is 7 dagen en het negeert de leesstatus. Verhoog het getal in My Settings, of zet het op 0 om opschonen uit te schakelen.

12.3 Er komt geen e-mail aan

Symptoom: Berichten verschijnen in de inbox maar er wordt geen meldingsmail verstuurd.

Oplossing: Controleer de mail_on_new-instelling van de ontvanger (die kan uit staan) en bevestig dat de site uberhaupt mail kan versturen via System → Global Configuration → Server → Mail Settings. Onthoud dat een mislukte mail het bericht zelf nooit blokkeert.

12.4 Een vergrendelde inbox slokt systeemmeldingen op

Symptoom: Een Super User ziet nooit Joomla-updatemeldingen.

Oplossing: Hun inbox is vergrendeld. Vergrendelen blokkeert alle binnenkomende berichten, ook echte systeemmeldingen. Ontgrendel hem in My Settings als je op die meldingen vertrouwt.

12.5 Op zoek naar verzonden berichten

Symptoom: Je kunt geen kopie vinden van een bericht dat je hebt verstuurd.

Oplossing: Er is geen "Verzonden"-map. De inbox toont alleen berichten die aan jou zijn gericht. Heb je een vastlegging nodig van wat er is verstuurd, bewaar dan je eigen kopie of bevraag de tabel #__messages rechtstreeks.

Naar boven

13. Best practices

Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:

  • Priveberichten is een postvak dat alleen in de backend werkt. Het bereikt Managers, Administrators en Super Users - nooit frontend-bezoekers.
  • Een gebruiker moet backend-login en Beheren op com_messages hebben om een bericht te ontvangen.
  • Auto-opschonen staat standaard op 7 dagen en negeert de leesstatus. Verhoog het of zet het op 0 als je meldingen wilt bewaren.
  • Vergrendel de inbox van een Super User niet op een productiesite - je mist dan Joomla's eigen systeemmeldingen.
  • De e-mailmelding hangt af van de instelling van de ontvanger, niet van de afzender.
  • Berichten worden als platte tekst opgeslagen, niet versleuteld. Stuur nooit wachtwoorden of geheimen via een privebericht.
  • Er is geen Verzonden-map en geen prullenbak. Verwijderen is permanent.
  • Ontwikkelaars kunnen berichten versturen via het Message-model of het REST-eindpunt op /api/index.php/v1/messages.
Naar boven

14. In het kort

BERICHT VERSTUREN   Users → Private Messages → New Private Message
INBOX LEZEN         Users → Private Messages → Read Private Messages
PERSOONLIJKE OPTIES Users → Private Messages → My Settings
INBOX VERGRENDELEN  My Settings → Lock Inbox = Ja (blokkeert alle inkomende)
E-MAIL BIJ NIEUW    My Settings → geregeld via mail_on_new (standaard Aan)
AUTO-OPSCHONEN      My Settings → dagen te bewaren (standaard 7, 0 = nooit)
E-MAILSJABLOON      System → Templates → Mail Templates → com_messages.new_message
BERICHTENTABEL      #__messages (message_id, user_id_from, user_id_to, subject, state)
INSTELLINGENTABEL   #__messages_cfg (user_id, cfg_name, cfg_value)
REST-EINDPUNT       /api/index.php/v1/messages
ONTVANGSTRECHTEN    Backend-login + core.manage op com_messages
Naar boven

15. Samenvatting

De Priveberichten-component van Joomla is een klein postvak dat alleen in de backend werkt en je beheerders stilletjes met elkaar verbindt. Twee databasetabellen bevatten alles: #__messages voor de notities en #__messages_cfg voor de voorkeuren van elke gebruiker. Een opstelformulier, een inbox en drie persoonlijke instellingen dekken de hele functie.

  • Het werkt alleen tussen backend-gebruikers met de juiste rechten.
  • Het kan ontvangers mailen, met een e-mailsjabloon dat je kunt bewerken.
  • Joomla zelf gebruikt het om systeemmeldingen aan Super Users te bezorgen.
  • Auto-opschonen houdt inboxen netjes, en een REST API stelt het beschikbaar aan scripts.

De meeste sites kunnen Priveberichten op de verstandige standaardwaarden laten staan en er nooit meer aan denken. Maar als je team op backend-meldingen vertrouwt - updatewaarschuwingen, deploy-meldingen of simpele interne notities - loont het om te begrijpen hoe bezorging, vergrendeling en auto-opschonen op elkaar inwerken. Vermoed je dat je beheerders belangrijke Joomla-meldingen mislopen, of wil je je eigen extensie op dit interne postvak aansluiten, dan is dat precies het soort detail dat het waard is om te controleren voordat het voor een verrassing zorgt.

Naar boven
Prive berichten in Joomla
Peter Martin
Peter Martin
Joomla Specialist

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.