Postinstall messages in Joomla
Nadat je Joomla installeert, of na een grote update, zie je soms een kort bericht in de admin beheeromgeving: "We hebben deze instelling gewijzigd, dit moet je weten." Het lijkt een klein melding, maar het is een Joomla core kerncomponent die echt werk doet. Dat component heet com_postinstall, en zo informeren Joomla en 3rd party extensies jou als er iets is veranderd.
Dit artikel legt uit hoe de Joomla-component voor post-installatieberichten echt werkt. Het behandelt de basis voor website-eigenaren en redacteuren, het dagelijkse scherm voor beheerders en de technische details voor ontwikkelaars: de berichttypen, de statussen, de databasetabel, de weergavepijplijn, RAD-paden en hoe je je eigen berichten maakt.
De stille component die "we hebben iets belangrijks gewijzigd" omzet in een bericht dat je kunt lezen, waarop je kunt handelen en dat je kunt wegklikken.
Het doel is simpel: je com_postinstall goed genoeg laten begrijpen om de berichten met vertrouwen te lezen en, als je extensies bouwt, je eigen berichten te versturen.
1. De basis
1.1 Wat com_postinstall Is
com_postinstall is een kleine kerncomponent die post-installatie- en upgradeberichten toont. Wanneer Joomla zelf, of een van je extensies, je iets moet vertellen vlak na een installatie of update, slaat het een bericht op en toont com_postinstall het. De officiele beschrijving is kort en exact: "Toont post-installatie- en post-upgradeberichten voor Joomla en zijn extensies."
Het is een component die alleen in de beheeromgeving werkt. Het heeft geen frontend, geen artikelen en geen openbare URL. Het bestaat om eenmalige meldingen af te leveren bij de mensen die de site beheren.
Heb je ooit een Joomla-melding gezien als "Je oude TinyMCE-instelling is gewijzigd, klik hier om te controleren"? Dat was com_postinstall.
1.2 Waar je het vindt
Het scherm zit onder het menu Systeem in de beheeromgeving:
Systeem
└─ Beheren
└─ Post-installatieberichten
De volledige titel van de pagina is Post-installatie- en upgradeberichten. De URL is index.php?option=com_postinstall in de beheeromgeving. Je kunt het ook bereiken via het Systeemdashboard, waar een klein meldingenpaneel laat zien hoeveel berichten op je wachten.
1.3 Waarom het bestaat
Sommige wijzigingen kun je niet stilletjes doorvoeren. Een nieuwe Joomla-versie kan een beveiligingsinstelling toevoegen die je zelf moet aanzetten, of een standaardwaarde wijzigen die je inhoud raakt. Een gewone e-mail of changelog mis je makkelijk. Een bericht dat in de beheeromgeving blijft staan, met een knop die de wijziging voor je uitvoert, negeer je veel moeilijker. Dat is precies het punt van com_postinstall: de juiste melding, op de juiste plek, op het juiste moment.
Naar boven2. De anatomie van een bericht
Elk bericht wordt getoond als een kaart. Een typische kaart heeft vier onderdelen:
| Onderdeel | Wat het is |
|---|---|
| Titel | Een korte kop, getoond als heading op de kaart. |
| Sinds versie | Een klein regeltje, "Sinds versie X", dat aangeeft welke versie het bericht introduceerde. |
| Beschrijving | De hoofdtekst die de wijziging uitlegt en wat je moet doen. |
| Actieknop | Een optionele knop. Die opent een link of voert een taak uit. Gewone meldingen hebben geen knop. |
Naast de actieknop zien beheerders ook twee kleine knoppen om het bericht zelf te beheren:
- Verberg dit bericht - haalt het bericht uit de lijst. Je bent ermee klaar.
- Archiveren - zet het bericht in een "gearchiveerde" status. Het is niet meer actief, maar je kunt het later opnieuw lezen.
Elke tekst die je op de kaart leest komt uit een taalsleutel, niet uit vaste tekst. De titel, de beschrijving en het knoplabel zijn allemaal sleutels zoals COM_FOOBAR_POSTINSTALL_MESSAGEONE_TITLE. Joomla laadt het taalbestand van de extensie en vertaalt de sleutel. Daarom verschijnen berichten in je eigen taal als er een vertaling bestaat.
3. De drie berichttypen
Elk bericht heeft een type. Het type bepaalt of er een knop is en wat die knop doet. Er zijn precies drie typen.
| Type | Knop | Wat er gebeurt |
|---|---|---|
message |
Geen | Een gewone informatieve melding. Je leest hem en klikt hem weg. |
link |
Ja | De knop opent een URL, bijvoorbeeld een instellingenpagina in Joomla. |
action |
Ja | De knop voert een PHP-functie uit die een wijziging voor je doorvoert. |
3.1 message
Het eenvoudigste type. Er is geen actieknop, alleen de titel, de beschrijving en de beheerknoppen. Gebruik dit als je alleen wilt informeren.
3.2 link
De actieknop stuurt je naar een URL. De URL wordt bij het bericht opgeslagen. Een veelvoorkomend voorbeeld is een knop die een specifiek Opties-scherm opent: index.php?option=com_foobar&view=tools&task=installSampleData. De gebruiker klikt, Joomla stuurt door, en de gebruiker rondt de wijziging daar af.
3.3 action
Het krachtigste type. De knop roept een PHP-functie binnen de extensie aan. Joomla laadt een bestand, voert een benoemde functie uit, en de functie doet het werk. Zo kan een bericht zeggen "Klik hier om dit voor je op te lossen" en de oplossing daadwerkelijk toepassen bij de klik.
Naar boven4. Dagelijks gebruik voor beheerders
4.1 Berichten lezen en opruimen
Open Systeem → Beheren → Post-installatieberichten. Lees elke kaart. Als een kaart een actieknop heeft, bepaal dan of je hem gebruikt. Als je klaar bent met een bericht, klik je op Verberg dit bericht. Als de lijst leeg is, toont Joomla een vriendelijke notitie: "Je hebt alle berichten gelezen."
4.2 Het extensiefilter
Bovenaan de pagina staat een keuzelijst met het label Berichten weergeven voor. Standaard toont de lijst berichten voor de Joomla-kern (de extensie "Joomla! files"). Als andere extensies berichten hebben achtergelaten, kun je ze uit deze keuzelijst kiezen om de lijst te wisselen. Als alleen de kern berichten heeft, wordt de keuzelijst verborgen om het scherm overzichtelijk te houden.
4.3 Alle berichten verbergen
De werkbalk heeft een knop Alle berichten verbergen. Die verbergt in een klik elk bericht voor de op dat moment geselecteerde extensie. Gebruik hem als je alles hebt gelezen en een schoon dashboard wilt.
4.4 Berichten herstellen
Verborgen berichten worden niet verwijderd, alleen als verborgen gemarkeerd. Heb je ze ooit weer nodig, dan biedt het lege-staatscherm een knop Berichten herstellen. Die zet elk bericht voor de geselecteerde extensie weer aan, zodat ze allemaal terugkeren in de actieve lijst. Handig als je een bericht te snel verborg en het opnieuw wilt lezen.
4.5 Opnieuw lezen
Een gearchiveerd bericht is ook niet weg. Op de kaart zie je een knop Opnieuw lezen (een gearchiveerd bericht kun je opnieuw publiceren). Klik erop en het bericht keert terug in de actieve lijst. Je hebt dus twee zachte manieren om een bericht weg te halen (Verbergen en Archiveren) en twee manieren om berichten terug te halen (Herstellen en Opnieuw lezen).
Naar boven5. Berichtstatussen: Gepubliceerd, verborgen, gearchiveerd
Achter de knoppen zit een enkele kolom, enabled, die de status van elk bericht bewaart. Die heeft drie waarden.
| enabled | Status | Betekenis |
|---|---|---|
1 |
Gepubliceerd | Actief. Het bericht verschijnt als normale kaart met zijn actieknop. |
2 |
Gearchiveerd | Opzijgezet. Alleen getoond als kleine kaart met een knop "Opnieuw lezen". |
0 |
Verborgen | Weggeklikt. Helemaal niet getoond, maar nog wel opgeslagen in de database. |
Het lijstscherm laadt berichten waar enabled gelijk is aan 1 of 2, dus verborgen berichten (0) verschijnen nooit. De meldingenteller op het Systeemdashboard telt echter alleen de berichten met 1 (gepubliceerd), want dat zijn de berichten die nog je aandacht nodig hebben.
De knoppen wijzigen simpelweg deze ene waarde: Verbergen zet hem op 0, Archiveren zet hem op 2, Opnieuw lezen en Herstellen zetten hem terug op 1.
6. Onder de motorkap: De databasetabel
Alle berichten staan in een tabel, #__postinstall_messages. (Het voorvoegsel #__ wordt je echte tabelvoorvoegsel, bijvoorbeeld jos_postinstall_messages.) Elke rij is een bericht. Dit zijn de kolommen die ertoe doen.
| Kolom | Doel |
|---|---|
postinstall_message_id |
Primaire sleutel, de unieke id van het bericht. |
extension_id |
Welke extensie het bericht bezit (een rij in #__extensions). |
type |
Een van message, link of action. |
title_key |
Taalsleutel voor de titel. |
description_key |
Taalsleutel voor de hoofdtekst. |
action_key |
Taalsleutel voor het knoplabel (niet gebruikt bij message). |
language_extension |
Welke extensie de taalsleutels bevat, bijvoorbeeld com_foobar. |
language_client_id |
Frontend- (0) of backend- (1) taalbestanden laden. |
action_file |
RAD-pad naar het PHP-bestand voor een action-bericht. |
action |
Voor link: de URL. Voor action: de naam van de PHP-functie. |
condition_file |
RAD-pad naar een PHP-bestand dat bepaalt of het bericht getoond wordt. |
condition_method |
De PHP-functie die true of false teruggeeft om het bericht te tonen of te verbergen. |
version_introduced |
De versie die dit bericht voor het eerst toonde ("Sinds versie X"). |
enabled |
Status: 1 gepubliceerd, 2 gearchiveerd, 0 verborgen. |
Let op dat de tabel sleutels en paden opslaat, nooit de uiteindelijke tekst. De echte woorden worden later uit de taalbestanden opgehaald. Zo blijven berichten vertaalbaar en klein.
Naar boven7. Onder de motorkap: Hoe berichten worden getoond
com_postinstall is een standaard Model-View-Controller (MVC)-component. Als je het scherm opent, is de flow rechttoe rechtaan.
- De view vraagt het model (
MessagesModel) om de berichten van de geselecteerde extensie. - Het model leest de rijen uit
#__postinstall_messageswaarenabledgelijk is aan1of2. - Het model verwerkt de lijst na: het laadt de juiste taalbestanden en voert per bericht de weergaveconditie uit.
- De template rendert elk overgebleven bericht als een kaart.
7.1 Condities bepalen de zichtbaarheid
Een bericht kan een condition_file en een condition_method dragen. Tijdens de naverwerking voegt het model het bestand in en roept de functie aan. Geeft de functie false terug, dan valt het bericht uit de lijst voordat het ooit getoond wordt. Zo kan een bericht alleen verschijnen wanneer het relevant is, bijvoorbeeld "toon dit alleen als de oude instelling nog actief is." Zodra de gebruiker het probleem oplost, geeft de conditie false terug en verdwijnt het bericht stilletjes.
7.2 Caching
Het model cachet zijn resultaten in de cachegroep com_postinstall, omdat berichten bij elke paginaweergave lezen en evalueren verspilling zou zijn. Telkens als een bericht van status verandert (verbergen, archiveren, opnieuw publiceren, herstellen), leegt de component deze cache zodat de lijst en de dashboardteller kloppen.
7.3 Taalbestanden laden
Voor het renderen laadt het model per bericht de taalextensie, via het frontend- of backendpad op basis van language_client_id. Daarom toont een bericht van com_foobar zijn eigen vertaalde titel en beschrijving, ook al weet com_postinstall niets van de bewoording van die extensie.
8. RAD-paden, condities en acties
8.1 Wat een RAD-pad is
De kolommen action_file en condition_file slaan geen volledige schijfpaden op. Ze slaan korte RAD-paden op met een voorvoegsel dat Joomla tijdens runtime uitvouwt. Er zijn twee voorvoegsels.
| Voorvoegsel | Vouwt uit naar | Voorbeeld |
|---|---|---|
site:// |
De siteroot (JPATH_ROOT) |
site://components/com_foobar/postinstall.php |
admin:// |
De administrator-map (JPATH_ADMINISTRATOR) |
admin://components/com_foobar/postinstall.php |
Een kleine helper vouwt het voorvoegsel uit naar een echt pad voordat het bestand wordt ingevoegd. Een voorvoegsel houdt de opgeslagen waarde kort en onafhankelijk van waar Joomla geinstalleerd is.
8.2 Waarom functies, geen klassen
Zowel de conditie als de actie wijzen naar gewone PHP-functies, geen klassemethoden. Het model voegt het bestand een keer in en roept de functie bij naam aan. Een conditiefunctie moet true of false teruggeven. Een actiefunctie doet zijn werk en geeft niets terug. Houd deze functies simpel en op zichzelf staand.
9. Je eigen Post-installatieberichten maken
Als je extensies bouwt, kun je je eigen berichten toevoegen. De gebruikelijke plek is het post-installatiescript van je extensie, het script dat Joomla uitvoert nadat je pakket is geinstalleerd of bijgewerkt. Je roept een methode aan op het com_postinstall-model en geeft een array met opties mee.
use Joomla\CMS\Factory;
$options = [
'extension_id' => $myExtensionId,
'type' => 'message',
'title_key' => 'COM_FOOBAR_POSTINSTALL_TITLE',
'description_key' => 'COM_FOOBAR_POSTINSTALL_DESCRIPTION',
'language_extension' => 'com_foobar',
'language_client_id' => 1,
'version_introduced' => '2.0.0',
'enabled' => 1,
];
Factory::getApplication()
->bootComponent('com_postinstall')
->getMVCFactory()
->createModel('Messages', 'Administrator', ['ignore_request' => true])
->addPostInstallationMessage($options);
Het voorbeeld hierboven is een gewoon message: het eenvoudigste type en het type dat het meest waarschijnlijk gewoon werkt. De typen link en action hebben een paar sleutels meer nodig, zoals hieronder beschreven.
9.1 De verplichte opties
De methode valideert je invoer en gooit een duidelijke exception als er iets ontbreekt. De regels zijn:
extension_id,type,title_key,description_keyenlanguage_extensionzijn altijd verplicht.typemoet exactmessage,linkofactionzijn.- Voor
linkenactionheb je ook eenaction_keyen eencondition_filepluscondition_methodnodig. - Voor
linkzet jeactionop de URL. Vooractionzet jeaction_fileenaction(de functienaam), en het bestand moet op schijf bestaan.
9.2 Het extension_id vinden
Elk bericht heeft het numerieke extension_id nodig van de extensie die het bezit. Die lees je uit de tabel #__extensions. Voor een component:
SELECT extension_id, name, type, element, client_id
FROM #__extensions
WHERE element = 'com_foobar';
Voor een plugin moet je ook de folder matchen, omdat dezelfde elementnaam in verschillende plugingroepen kan voorkomen:
SELECT extension_id, name, type, element, folder, client_id
FROM #__extensions
WHERE type = 'plugin'
AND folder = 'system'
AND element = 'foobar';
Binnen een installatie- of updatescript heb je geen ruwe SQL nodig: Joomla kent je eigen extensie-id al, dus lees die uit de installer-adapter in plaats van een nummer hard te coderen.
9.3 Toevoegen is veilig om te herhalen
De methode controleert of er al een rij bestaat met dezelfde extensie, type en titelsleutel. Is de definitie identiek, dan doet hij niets. Is hij gewijzigd, dan verwijdert hij de oude rij en voegt een nieuwe in. Zo kun je hem bij elke update aanroepen zonder duplicaten te maken, precies wat een post-installatiescript nodig heeft.
9.4 Een valkuil bij link-berichten
Wees voorzichtig met type = link als je het registreert via addPostInstallationMessage. In het huidige Joomla 6 valideert de methode een sleutel link, maar die sleutel hoort niet bij de geaccepteerde optielijst en wordt eruit gestript voordat de controle draait. Het praktische gevolg is dat een link-definitie "needs an action (URL)" kan gooien, zelfs als je de URL in de sleutel action hebt gezet zoals de documentatie voorschrijft.
Tot dit is opgelost zijn de veilige keuzes: gebruik message als je alleen wilt informeren, gebruik action voor een gecontroleerde interne taak, en heb je echt een link nodig, test die dan op een schone installatie van precies de Joomla-versie die je beoogt en inspecteer eerst MessagesModel::addPostInstallationMessage(). Een gewone databaserij werkt ook als je die zelf invoegt.
9.5 Beveiliging: action-berichten voeren PHP uit
Een action-bericht is krachtig juist omdat zijn knop een PHP-functie uit action_file uitvoert. Ga zorgvuldig met die kracht om.
- Houd de
action_filebinnen je eigen extensie. Wijs hem nooit naar door gebruikers aangeleverde of externe inhoud. - Controleer binnen de functie de rechten van de gebruiker voordat je iets doet dat data wijzigt.
- Maak de actie idempotent, zodat twee keer op de knop klikken geen schade aanricht.
- Gebruik de conditiefunctie alleen om
trueoffalseterug te geven. Laat hem nooit data migreren, bestanden schrijven of instellingen wijzigen; condities draaien vaak, ook wanneer Joomla berichten telt. - Log belangrijke wijzigingen en faal netjes, in plaats van invoer uit het verzoek te vertrouwen.
9.6 Hoe dit verschilt van enqueueMessage()
Joomla heeft een tweede, bekendere manier om een bericht te tonen: Factory::getApplication()->enqueueMessage('Saved successfully.'). Het lijkt erop, maar lost een ander probleem op. Post-installatieberichten zijn duurzaam; in de wachtrij gezette berichten niet.
| Kenmerk | enqueueMessage() | com_postinstall |
|---|---|---|
| Opgeslagen in de database | Nee | Ja |
| Overleeft een paginaherlaadbeurt | Nee | Ja |
| Permanent weg te klikken | Nee | Ja |
| Kan conditielogica bevatten | Nee | Ja |
| Het best voor | Directe, eenmalige feedback | Duurzame upgradebegeleiding |
Gebruik enqueueMessage() voor "je wijzigingen zijn opgeslagen"-feedback binnen een enkel verzoek. Gebruik com_postinstall voor begeleiding die op het dashboard moet blijven wachten tot de beheerder erop handelt.
10. Rechten en het opties-scherm
com_postinstall gebruikt de standaard Access Control List (ACL) van Joomla. Het definieert een kleine set acties.
| Actie | Laat de gebruiker |
|---|---|
core.manage |
De component openen en de berichten lezen. |
core.edit.state |
De knoppen Verbergen, Archiveren en Opnieuw lezen zien en gebruiken. |
core.admin |
Het Opties-scherm openen en rechten bewerken. |
Een gebruiker kan dus berichten mogen lezen zonder hun status te mogen wijzigen. De Opties-knop in de werkbalk verschijnt alleen voor gebruikers met core.admin, en het Opties-scherm zelf bevat enkel het tabblad Rechten. Er valt hier vrijwel niets in te stellen, wat past bij een component wiens hele taak is om berichten van elders door te geven.
11. Web services API
Veel Joomla-kerncomponenten leveren een REST API onder /api/index.php/v1/... zodat externe tools data kunnen lezen of wijzigen. com_postinstall is een bewuste uitzondering: het heeft geen Web Services API. Er is geen API-controller, geen openbare route en geen token-gebaseerd eindpunt voor post-installatieberichten.
De reden is praktisch. Deze berichten zijn kortlevende meldingen die alleen voor de beheeromgeving zijn en vaak PHP-acties uitvoeren of live condities evalueren. Ze blootstellen aan externe clients zou risico toevoegen zonder echte waarde. Moet je ze programmatisch lezen of opruimen, dan doe je dat binnen Joomla, via dezelfde modelmethode die de component zelf gebruikt, bijvoorbeeld vanuit een CLI-plugin:
use Joomla\CMS\Factory;
$model = Factory::getApplication()
->bootComponent('com_postinstall')
->getMVCFactory()
->createModel('Messages', 'Administrator', ['ignore_request' => true]);
$count = $model->getItemsCount();
Zo blijven de logica, de condities en de cacheafhandeling consistent met het scherm dat je in de beheeromgeving ziet.
Naar boven12. SEO en metadata
com_postinstall is een component die alleen in de beheeromgeving werkt, dus het heeft geen direct effect op SEO. Het produceert geen frontendpagina's, geen URL's die zoekmachines kunnen bereiken en geen metadata. Zoekmachines zien nooit een post-installatiebericht.
Het indirecte effect is echter echt en het zeggen waard. Veel post-installatieberichten bestaan juist om je site te beschermen of te verbeteren: een nieuwe beveiligingsheader, een gewijzigde standaardwaarde die de weergave van inhoud raakt, een instelling die prestaties beinvloedt. Op deze berichten handelen houdt je site gezond, en een gezonde, veilige, snelle site is de basis van goede SEO. De regel is dus simpel: lees de berichten, doe wat ze vragen als het zinvol is, en je openbare site profiteert ervan, ook al blijft de component zelf onzichtbaar.
Naar boven13. Veelgemaakte fouten en valkuilen
13.1 Berichten als spam behandelen
Symptoom: Je klikt elke keer op "Alle verbergen" zonder de berichten te lezen.
Oplossing: Berichten na de installatie komen zelden voor en zijn meestal belangrijk. Lees elk bericht voordat je het verbergt. Veel berichten gaan over een beveiligingswijziging of een wijziging in het gedrag waarvan je echt op de hoogte moet zijn.
13.2 Denken dat verborgen verwijderd betekent
Symptoom: Je hebt een bericht verborgen en kunt het nu niet meer terugvinden.
Oplossing: Verborgen berichten worden niet verwijderd, alleen op enabled = 0 gezet. Gebruik de knop Berichten herstellen op het lege-staatscherm om ze allemaal terug te halen, of Opnieuw lezen voor een gearchiveerd bericht.
13.3 Naar de verkeerde extensie kijken
Symptoom: Een bericht dat je verwachtte, staat niet in de lijst.
Oplossing: Het scherm filtert op extensie. Standaard toont het de Joomla core extensies. Gebruik de keuzelijst Berichten weergeven voor om naar de extensie te wisselen die het bericht achterliet.
13.4 Ontwikkelaar: Ontbrekend conditiebestand
Symptoom: addPostInstallationMessage gooit een exception tijdens de installatie.
Oplossing: Voor de typen link en action moet het condition_file (en, voor acties, het action_file) op schijf bestaan op het moment dat je het bericht registreert. Controleer je RAD-pad-voorvoegsel (admin:// of site://) en of het bestand in je pakket wordt meegeleverd.
13.5 Ontwikkelaar: Verkeerde taalinstellingen
Symptoom: De kaart toont ruwe sleutels zoals COM_FOOBAR_POSTINSTALL_TITLE in plaats van tekst.
Oplossing: Zet language_extension op de extensie die de sleutels bezit en language_client_id op de juiste kant (1 voor backend, 0 voor frontend), en zorg dat het taalbestand is geinstalleerd.
13.6 Ontwikkelaar: foutmelding bij registratie van een linkbericht
Symptoom: Het registreren van een bericht met type = link via addPostInstallationMessage verschijnt de foutmelding „needs an action (URL)”, ook al heb je de URL opgegeven.
Oplossing: Dit is een bekende validatiefout in de huidige versie van Joomla 6, waarbij de methode controleert op een link-sleutel die al uit de opties is verwijderd. Gebruik in plaats daarvan ‘message’ of ‘action’, of voeg de rij rechtstreeks in, en test linkberichten op de exacte Joomla-versie waarop u zich richt. Zie paragraaf 9.4.
Naar boven14. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Controleer
Systeem → Beheren → Post-installatieberichtenna elke Joomla- of extensie-update. - Lees elk bericht voordat je het verbergt. Ze zijn zeldzaam en doen er meestal toe.
- Gebruik Archiveren voor berichten die je voor later wilt bewaren, en Verbergen voor berichten waarmee je echt klaar bent.
- Onthoud dat er niets wordt verwijderd: Berichten herstellen en Opnieuw lezen halen berichten terug.
- Registreer als ontwikkelaar berichten vanuit je post-installatiescript, zodat ze updates overleven zonder te dupliceren.
- Gebruik condities zodat een bericht alleen verschijnt zolang het relevant is, en verdwijnt zodra de gebruiker handelt.
- Gebruik altijd taalsleutels, nooit hard gecodeerde tekst, zodat je berichten vertaalbaar blijven.
15. In het kort
SCHERM
Systeem > Beheren > Post-installatieberichten
URL: index.php?option=com_postinstall
BERICHTTYPEN
message alleen informatief, geen knop
link knop opent een URL
action knop voert een PHP-functie uit
STATUSSEN (kolom enabled)
1 gepubliceerd getoond als actieve kaart
2 gearchiveerd getoond met "Opnieuw lezen"
0 verborgen opgeslagen maar niet getoond
KNOPPEN
Verberg dit bericht enabled -> 0
Archiveren enabled -> 2
Opnieuw lezen enabled -> 1 (vanuit gearchiveerd)
Alle berichten verbergen alles van een extensie -> 0
Berichten herstellen alles van een extensie -> 1
DATABASE
#__postinstall_messages een rij per bericht
RAD-PAD-VOORVOEGSELS
site:// -> siteroot (JPATH_ROOT)
admin:// -> administrator (JPATH_ADMINISTRATOR)
ONTWIKKELAARS-API
bootComponent('com_postinstall')
->getMVCFactory()
->createModel('Messages', 'Administrator', ['ignore_request' => true])
->addPostInstallationMessage($options);
RECHTEN
core.manage openen en lezen
core.edit.state verbergen / archiveren / opnieuw publiceren
core.admin Opties-scherm
WEB SERVICES API
geen (geen REST-eindpunt)
Naar boven16. Samenvatting
com_postinstall is een klein maar nuttig onderdeel van Joomla. Dit is wat je moet onthouden:
- Het toont post-installatie- en upgradeberichten van Joomla en zijn extensies, alleen in de beheeromgeving.
- Berichten komen in drie typen: een gewone melding, een link of een PHP-actie.
- De kolom
enabledgeeft elk bericht een status: gepubliceerd, gearchiveerd of verborgen. Er wordt nooit iets verwijderd. - Alle berichten staan in
#__postinstall_messagesen slaan taalsleutels en RAD-paden op, geen uiteindelijke tekst. - Het model laadt, conditioneert, cachet en vertaalt de berichten voordat de template ze als kaarten rendert.
- Ontwikkelaars registreren berichten vanuit een post-installatiescript met
addPostInstallationMessage, veilig en herhaalbaar. - Er is geen Web Services API; de component is bedoeld voor de mensen die de site beheren.
Meestal werp je alleen een blik op dit scherm, verberg je een bericht en ga je verder. Maar als er na een update een post-installatiebericht verschijnt, is dat vaak de duidelijkste waarschuwing die je krijgt dat iets op je site aandacht nodig heeft. Als je Joomla-site een stapel ongelezen berichten heeft, of je niet zeker weet of een eerdere update een instelling half gewijzigd achterliet, loont het om iemand mee te laten lezen en de onderliggende configuratie te laten controleren. Dat is precies het soort stille, zorgvuldige Joomla-onderhoudswerk waar ik plezier in heb.
Naar boven

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


