Config in Joomla
Elke Joomla-site heeft een scherm dat bijna alles stilletjes regelt: Systeem → Globale configuratie. Het bepaalt je sitenaam, je SEF-URL's, je cache, je mailserver, je standaardrechten en tientallen andere instellingen. De component achter dat scherm heet com_config.
De meeste mensen openen Globale configuratie eenmalig bij de installatie, wijzigen een paar opties en denken er daarna nooit meer aan. Maar com_config is interessanter dan het lijkt. Het is niet een formulier maar twee taken: het beheert de globale instellingen van de hele site, en het rendert ook het Opties-scherm dat elke andere component voor zijn eigen instellingen gebruikt.
De kleine component die de instellingen van je site beheert - zowel de globale als die per component.
Dit artikel legt uit hoe com_config echt werkt. Het behandelt de basis voor eigenaren en redacteuren, de tabbladen en de dagelijkse instellingen voor beheerders, en de technische details voor ontwikkelaars: waar instellingen worden opgeslagen, hoe ze in code worden gelezen, en waarom Machtigingen en Tekstfilters zich anders gedragen dan de rest.
1. De basis
1.1 Wat is com_config?
Een Joomla component is een kleine applicatie die binnen Joomla draait. De meeste componenten gaan ergens over: com_content gaat over artikelen, com_users over gebruikers, com_menus over menu's. com_config gaat over instellingen.
Het heeft twee duidelijk gescheiden taken:
- Globale configuratie - de site-brede instellingen die je bereikt via
Systeem → Globale configuratie. - Component-opties - de instellingen per component die je bereikt door op de knop Opties rechtsboven in de werkbalk van een component te klikken (bijvoorbeeld Artikelen → Opties).
Beide schermen worden getekend door dezelfde component. Dat is het nuttigste om te weten over com_config: de Opties-knop die je overal in de backend ziet, is geen onderdeel van elke component. Het is com_config dat het werk voor ze doet.
1.2 Waarom het belangrijk is
Globale configuratie is de regelkamer van een Joomla-site. Een verkeerde waarde hier breekt niet een artikel of een menu - het verandert het gedrag van de hele site:
- Zet Offline aan en elke bezoeker ziet een onderhoudspagina.
- Schakel Zoekmachinevriendelijke URL's om en elke link op de site verandert van vorm.
- Wijzig de cache en de site kan veel sneller worden, of verouderde inhoud gaan tonen.
- Pas het tabblad Machtigingen aan en je verandert wat elke gebruikersgroep mag doen.
Omdat de inzet hoog is, loont het de moeite om te begrijpen waar elke instelling woont en wat ze leest.
1.3 Waar je het vindt
Er is een hoofdingang in het backend-menu:
Systeem -> Instellen -> Globale configuratie
En er is de knop Opties, herhaald in de werkbalk van bijna elke component. Beide leiden naar com_config; alleen de data die ze bewerken verschilt.
2. Waar com_config is
2.1 Twee helften: backend en frontend
Net als verschillende core-componenten heeft com_config zowel een administrator-helft als een site- (frontend-) helft:
public_html/administrator/components/com_config/ (de backend-formulieren)
public_html/components/com_config/ (frontend-bewerking)
De backend-helft is wat de meeste mensen bedoelen als ze "Globale configuratie" zeggen. De frontend-helft is kleiner en komt later aan bod in sectie 10.
2.2 De backend-mappenstructuur
Binnen de administrator-component vind je een nette, moderne Joomla 6-indeling:
administrator/components/com_config/
+-- forms/
| application.xml (het formulier Globale configuratie)
+-- services/ (DI-container-bedrading)
+-- src/
| +-- Controller/ (Application- + Component-controllers)
| +-- Model/
| | ApplicationModel.php (slaat Globale configuratie op)
| | ComponentModel.php (slaat component-opties op)
| +-- View/
| +-- Field/ (speciale velden: Filters, ConfigComponents)
+-- tmpl/ (view-templates)
+-- config.xml (de eigen opties van com_config)
+-- access.xml (de eigen rechten van com_config)
Let op forms/application.xml. Dat ene bestand definieert elk veld op het scherm Globale configuratie. De tabbladen die je ziet, zijn de <fieldset>-groepen erin.
2.3 De URL's
De twee schermen verwijzen naar twee views:
Globale configuratie:
/administrator/index.php?option=com_config&view=application
Component-opties (voorbeeld: com_content):
/administrator/index.php?option=com_config&view=component&component=com_content
De tweede URL is precies waar de knop Opties naar linkt. De parameter component= vertelt com_config wiens instellingen het moet laden.
3. De tabbladen van Globale configuratie
Globale configuratie groepeert zijn instellingen in tabbladen. Hier is wat elk tabblad regelt in Joomla 6.
3.1 Site
- Sitenaam - de naam die wordt gebruikt in paginatitels, e-mails en de offline-pagina.
- Site offline + Offline-bericht en Offline-afbeelding - de onderhoudsmodus.
- Standaardeditor, Standaard toegangsniveau, Standaard lijstlimiet en Standaard feedlimiet.
- SEO-instellingen - Zoekmachinevriendelijke URL's, URL-herschrijven, Achtervoegsel toevoegen aan URL, Unicode-aliassen en "Sitenaam opnemen in paginatitels".
- Cookie-instellingen en de globale Metadata-instellingen (standaard meta-omschrijving, robots, auteursinfo).
3.2 Systeem
- Debug-instellingen - Debug systeem en Debug taal.
- Cache-instellingen - cache uit / conservatief / progressief, cache-handler en cache-tijd.
- Sessie-instellingen - sessie-handler, sessieduur en gedeelde sessies.
- Webservices-instellingen - de CORS-opties voor de REST-API.
3.3 Server
- Server-instellingen - pad naar de tijdelijke map, GZIP-paginacompressie, Foutrapportage en HTTPS forceren.
- Locatie-instellingen - de standaardtijdzone van de site.
- Database-instellingen - host, gebruiker, naam, tabel-prefix en SSL-opties (meestal alleen-lezen na de installatie).
- Mailinstellingen - mailer (PHP mail / Sendmail / SMTP), afzenderadres en -naam, en SMTP-host en -inloggegevens.
- Proxy-instellingen - optionele uitgaande proxy voor de server.
3.4 Machtigingen
Dit tabblad stelt de standaardrechten in voor elke gebruikersgroep, voor de hele site. Het is de top van de ACL-overervingsketen. Alles wat je hier instelt, wordt overgeerfd door elke categorie, component en item, tenzij iets specifiekers het overschrijft. Sectie 9 legt uit waar deze waarden worden opgeslagen.
3.5 Tekstfilters
Dit tabblad regelt welke HTML elke gebruikersgroep mag opslaan. De opties lopen van Geen filtering (voor Super Users) tot een Standaard zwarte lijst, een eigen Witte lijst, of helemaal Geen HTML. Het is je belangrijkste verdediging tegen een redacteur die gevaarlijke opmaak plakt.
Naar boven4. configuration.php: het bestand met globale instellingen
4.1 Een bestand in de hoofdmap van de site
De waarden van Globale configuratie worden niet in de database opgeslagen. Ze staan in een enkel PHP-bestand in de hoofdmap van je Joomla-site:
public_html/configuration.php
Het bestand definieert een klasse, historisch JConfig genoemd:
<?php
class JConfig
{
public $sitename = 'Mijn Joomla-site';
public $editor = 'tinymce';
public $sef = '1';
public $sef_rewrite = '1';
public $caching = '0';
public $cache_handler = 'file';
public $cachetime = '15';
public $offline = '0';
public $dbtype = 'mysqli';
public $host = 'localhost';
public $db = 'joomla';
public $dbprefix = 'abcde_';
public $mailer = 'smtp';
public $secret = 'een-lange-willekeurige-string';
public $tmp_path = '/pad/naar/tmp';
public $log_path = '/pad/naar/administrator/logs';
// ...nog veel meer...
}
Elke eigenschap komt overeen met een veldnaam in forms/application.xml. Wanneer Joomla opstart, laadt het dit bestand en leest het de instellingen eruit.
4.2 De secret-waarde
Een belangrijke eigenschap is $secret. Joomla genereert deze tijdens de installatie en toont hem nooit in het formulier. Hij wordt gebruikt om tokens te ondertekenen en te beschermen tegen CSRF. Behandel hem als een wachtwoord: zet hem nooit in een openbare repository, en als hij lekt, wijzig hem dan.
4.3 Hoe het bestand wordt geschreven
Wanneer je op Opslaan klikt bij Globale configuratie, bewerkt het model ApplicationModel het bestand niet regel voor regel. Het bouwt de volledige set waarden op in een Registry-object en exporteert die terug als een PHP-klasse:
$configuration = $config->toString('PHP', [
'class' => 'JConfig',
'closingtag' => false,
]);
// daarna schrijft het naar JPATH_CONFIGURATION . '/configuration.php'
Daarom is het handmatig bewerken van configuration.php alleen veilig wanneer de site verder ongebruikt is: de volgende keer Opslaan vanuit de backend herschrijft het hele bestand op basis van de formulierwaarden.
5. Component-opties: hetzelfde formulier, een andere bron
5.1 De knop Opties
Open Artikelen, Contacten of een andere component en kijk naar de werkbalk rechtsboven. De knop Opties opent een instellingenscherm dat er precies uitziet als Globale configuratie. Het is dezelfde component com_config, dit keer in view=component.
5.2 Waar de velden vandaan komen
Voor Globale configuratie komen de velden uit het eigen forms/application.xml van com_config. Voor component-opties komen de velden uit het eigen config.xml van de betreffende component. Bijvoorbeeld:
administrator/components/com_content/config.xml
Dat bestand definieert de optievelden die je voor Artikelen ziet: standaardlay-out, of de auteur wordt getoond, het linkgedrag, integratie-instellingen, enzovoort. com_config laadt die XML eenvoudigweg en rendert hem.
5.3 Waar component-opties worden opgeslagen
Anders dan Globale configuratie worden component-opties wel in de database opgeslagen. Ze staan als een enkele JSON-string in de kolom params van de tabel #__extensions:
SELECT name, params
FROM jos_extensions
WHERE element = 'com_content' AND type = 'component';
De waarde van params ziet eruit als compacte JSON:
{"show_title":"1","link_titles":"1","show_intro":"1","info_block_position":"0", ...}
Er zijn dus twee opslaglocaties, afhankelijk van welk scherm je gebruikte:
| Scherm | Opgeslagen in | Formaat |
|---|---|---|
| Globale configuratie | configuration.php |
PHP-klasse JConfig |
| Component-opties | #__extensions.params |
JSON-string |
6. De configuratiehierarchie: welke waarde wint
6.1 Dezelfde instelling op meerdere plaatsen
Veel instellingen bestaan op meer dan een niveau. Neem "Auteur tonen" in com_content: er is een component-brede standaard in Artikelen → Opties, maar een categorie kan die overschrijven, een menu-item kan dat weer overschrijven, en een enkel artikel kan alles eronder overschrijven. Joomla laat de brede standaard bovenaan staan en laat specifiekere niveaus die vervangen. com_config bewerkt de bovenste twee niveaus - Globale configuratie en Component-opties - maar het helpt om de hele keten te zien.
6.2 De volgorde van voorrang
Van het meest algemene niveau naar het meest specifieke:
Globale configuratie (breedste standaard)
-> Component-opties (com_x Opties: de hele component)
-> Categorie-instellingen (opties op een categorie)
-> Menu-item-instellingen (tabblad Opties van een menu-item)
-> Item-instellingen (het individuele artikel, contact, ...)
De regel is eenvoudig: de meest specifieke waarde die niet op "Globaal gebruiken" staat, wint. De meeste optievelden staan standaard op Globaal gebruiken, wat betekent "hier niet overschrijven - terugvallen op het niveau erboven". Pas wanneer je een expliciete Ja of Nee kiest, neemt dat niveau het over.
6.3 Waarom een instelling genegeerd lijkt
Deze keten is de gebruikelijke reden waarom een instelling "niet werkt". Je wijzigt "Auteur tonen" in Artikelen → Opties, maar een artikel verbergt de auteur nog steeds - omdat een menu-item of dat artikel het expliciet instelt, en een specifiekere waarde verslaat altijd de component-standaard.
De oplossing is het meest specifieke niveau te vinden dat de waarde overschrijft, en die daar te wijzigen of terug te zetten op Globaal gebruiken. Werk bij twijfel van onder naar boven: controleer het item, dan zijn menu-item, dan zijn categorie, dan de component, en ten slotte Globale configuratie.
Naar boven7. Onder de motorkap: hoe een instelling wordt gelezen
Een instelling opslaan is maar de helft van het verhaal. Ontwikkelaars moeten deze waarden in hun eigen code lezen. Joomla biedt voor elk soort een nette manier.
7.1 Een globale instelling lezen
De waarden van Globale configuratie zijn beschikbaar via het application-object:
use Joomla\CMS\Factory;
$app = Factory::getApplication();
$siteName = $app->get('sitename');
$cache = $app->get('caching');
$tmpPath = $app->get('tmp_path', '/tmp'); // tweede argument is een standaard
De applicatie laadt JConfig eenmalig bij het opstarten en stelt elke eigenschap beschikbaar via get(). Je hoeft configuration.php nooit zelf in te laden.
7.2 Een component-optie lezen
Gebruik voor component-opties ComponentHelper:
use Joomla\CMS\Component\ComponentHelper;
$params = ComponentHelper::getParams('com_content');
$showTitle = $params->get('show_title', 1);
$layout = $params->get('layout', 'default');
Het teruggegeven object is een Joomla\Registry\Registry, dezelfde klasse die overal in Joomla wordt gebruikt voor sleutel/waarde-instellingen. Het tweede argument is opnieuw een standaardwaarde als terugval.
7.3 De twee APIs naast elkaar
| Je wilt | Gebruik |
|---|---|
| Een globale instelling (sitenaam, cache, mail) | Factory::getApplication()->get('key') |
| Een component-optie (Artikelen, Contacten, ...) | ComponentHelper::getParams('com_x')->get('key') |
Weten welke je moet gebruiken volgt rechtstreeks uit weten waar de waarde wordt opgeslagen, en dat is precies wat sectie 5 uitlegde.
Naar boven8. Hoe com_config je instellingen opslaat
8.1 Twee modellen, twee bestemmingen
De component heeft twee modellen die het opslaan afhandelen:
ApplicationModel- slaat Globale configuratie op inconfiguration.php.ComponentModel- slaat component-opties op in#__extensions.params.
Beide valideren de ingediende data tegen het bijbehorende formulier (het XML-bestand) voordat ze iets wegschrijven. Een waarde die de validatie niet doorstaat, wordt geweigerd, en daarom kan een ongeldige invoer je met een foutmelding terug naar het formulier sturen.
8.2 Een veiligheidsdetail dat de moeite waard is
Wanneer ApplicationModel configuration.php herschrijft, verwijdert het de tijdelijke waarde voor het aanmaken van een super-user en beschermt het wachtwoordvelden, zodat ze niet worden leeggemaakt door een lege formulierverzending. Het controleert ook of het configuratiebestand schrijfbaar is. Als het bestand alleen-lezen is (een veelgebruikte hardening-stap op productieservers), mislukt Opslaan met een duidelijke melding in plaats van je wijzigingen stilletjes te verliezen.
8.3 Drie mogelijke bestemmingen
Alles bij elkaar kan een enkele klik op Opslaan naar drie verschillende plaatsen schrijven, afhankelijk van het tabblad:
De meeste velden -> configuration.php (JConfig-klasse)
Tabblad Machtigingen -> #__assets rij 1 (kolom rules, JSON)
Tabblad Tekstfilters -> com_config params (#__extensions, JSON)
Die laatste twee zijn speciale gevallen, en ze verrassen zelfs ervaren beheerders. Sectie 9 legt ze uit.
Naar boven9. Machtigingen en Tekstfilters: de speciale gevallen
9.1 Machtigingen gaan naar het root-asset
Het tabblad Machtigingen schrijft niet naar configuration.php. De toegangsbeheerlijst (ACL) van Joomla wordt opgeslagen in de tabel #__assets, en de globale standaarden staan in het enkele root-asset, de rij met id = 1 en naam root.1:
SELECT id, name, rules
FROM jos_assets
WHERE id = 1;
De kolom rules bevat JSON zoals dit:
{"core.login.site":{"6":1},"core.admin":{"8":1},"core.manage":{"7":1}, ...}
Elke sleutel is een recht, en elk binnenste object koppelt een gebruikersgroep-id aan toestaan (1), weigeren (0) of overerven. Elk ander asset in Joomla erft van deze root, en daarom staat het tabblad Machtigingen van Globale configuratie helemaal bovenaan de ACL-keten.
Een recht op dit scherm is bijzonder: core.admin. Het is het "Super User"-recht, en het bepaalt ook wie Globale configuratie uberhaupt mag openen. Alleen leden van een groep met core.admin kunnen com_config in de backend bereiken, en daarom kun je het beter aan zo weinig mogelijk groepen toekennen.
9.2 Tekstfilters gaan naar de eigen params van com_config
Het tabblad Tekstfilters is ook bijzonder. De waarden worden opgeslagen in de params van de component com_config zelf, onder een sleutel filters:
SELECT params
FROM jos_extensions
WHERE element = 'com_config' AND type = 'component';
Zo is com_config een van de weinige componenten die instellingen over het gedrag van andere gebruikers in zijn eigen rij opslaat. Wanneer Joomla beslist of een redacteur een bepaalde tag mag opslaan, leest het deze filters-data.
9.3 Waarom dit ontwerp
De splitsing bestaat omdat machtigingen en filters niet echt "site-configuratie" zijn - het zijn toegangsregels. Joomla houdt ze in het ACL-systeem, zodat dezelfde regel-engine globale standaarden en overschrijvingen per item op precies dezelfde manier afhandelt. Globale configuratie is gewoon de prettigste plek om de standaarden op het hoogste niveau te bewerken.
Naar boven10. De frontend-com_config
10.1 Bewerken zonder de backend
De site-helft van com_config (public_html/components/com_config/) drijft een paar frontend-bewerkschermen aan. De controllers zijn klein en gericht:
components/com_config/src/Controller/
+-- ModulesController.php (frontend-modulebewerking)
+-- TemplatesController.php (template-stijl-opties)
+-- ConfigController.php (gebruikersaccount / config-formulier)
Dit is de machinerie achter frontend-bewerking: wanneer een ingelogde gebruiker met het juiste recht een module rechtstreeks vanaf de website bewerkt (in plaats van vanuit de backend), rendert en bewaart com_config op de site dat formulier.
10.2 De frontend-bewerklink voor modules
Wanneer frontend-bewerking is ingeschakeld (een optie in Globale configuratie, frontediting), zien gemachtigde gebruikers bewerk-handvatten op modules. De link verwijst terug naar de site-com_config:
/index.php?option=com_config&view=modules&id=64
Dezelfde beveiligingsregels gelden als in de backend: de gebruiker moet het recht hebben om die module te bewerken, anders wordt het verzoek geweigerd.
Naar boven11. Webservices en headless-toegang
11.1 Standaard geen openbare REST-route
Veel Joomla-componenten bieden een Webservices-route onder /api/index.php/v1/. com_config stelt Globale configuratie bewust niet beschikbaar via REST. Site-brede instellingen, database-inloggegevens en de secret-sleutel zijn precies de data die je niet bereikbaar wilt maken via een openbare API, zelfs niet met een token.
Er is dus geen eindpunt /api/index.php/v1/config om je sitenaam op afstand te wijzigen. Dit is een veilige standaard, geen ontbrekende functie.
11.2 Instellingen lezen en wijzigen in automatisering
Wanneer je instellingen vanuit een script wilt lezen of wijzigen, doe dat dan binnen de eigen applicatiecontext van Joomla, waar de ACL en validatie nog gelden:
// Binnen een Joomla CLI-applicatie of plugin
use Joomla\CMS\Factory;
use Joomla\CMS\Component\ComponentHelper;
$app = Factory::getApplication();
echo $app->get('sitename'); // globale instelling
$show = ComponentHelper::getParams('com_content')
->get('show_title'); // component-optie
Voor component-opties kun je ook de JSON in #__extensions.params bijwerken via de database in een gecontroleerde migratie, en daarna de cache leegmaken. Bewerk Globale configuratie bij voorkeur via de backend, zodat het bestand correct wordt herschreven en wachtwoordvelden behouden blijven.
12. SEO en metadata
Enkele van de meest bezochte instellingen in com_config zijn de SEO- en metadata-opties op het tabblad Site. Ze verdienen een nadere blik, omdat kleine wijzigingen hier elke URL op de site raken.
12.1 De drie SEF-instellingen
| Instelling | Veld | Effect |
|---|---|---|
| Zoekmachinevriendelijke URL's | sef |
Verandert index.php?option=... in leesbare paden. |
| URL-herschrijven | sef_rewrite |
Verwijdert index.php uit het pad (vereist server-herschrijfregels). |
| Achtervoegsel toevoegen aan URL | sef_suffix |
Voegt .html toe aan gegenereerde URL's. |
Het inschakelen van URL-herschrijven zonder een werkende .htaccess (Apache) of herschrijfregel (NGINX) geeft op elke pagina "404 Not Found". Hernoem eerst htaccess.txt naar .htaccess en schakel daarna de instelling in.
12.2 Paginatitels en metadata
- Sitenaam opnemen in paginatitels - voegt je sitenaam voor of na elke paginatitel toe.
- Meta-omschrijving van de site - de standaardomschrijving die wordt gebruikt wanneer een pagina geen eigen omschrijving instelt.
- Robots - de globale standaard voor de
robots-metatag (bijvoorbeeldindex, follow). Wees voorzichtig: dit opnoindexzetten verbergt de hele site voor zoekmachines.
Dit zijn standaarden. Menu-items, categorieen en artikelen kunnen de omschrijving en robots-waarde voor afzonderlijke pagina's overschrijven.
Naar boven13. Veelgemaakte fouten en valkuilen
13.1 De site is plotseling offline
Symptoom: Bezoekers zien een onderhoudsbericht en kunnen de site niet bereiken.
Oplossing: Open Systeem → Globale configuratie → Site en zet Site offline op Nee. Als je ook buitengesloten bent uit de backend, bewerk dan configuration.php en zet public $offline = '0';
13.2 Elke pagina geeft 404 na het inschakelen van URL-herschrijven
Symptoom: De homepage werkt, maar elke andere link geeft een 404.
Oplossing: Je schakelde URL-herschrijven in zonder de serverregels. Hernoem htaccess.txt naar .htaccess, of voeg de overeenkomstige NGINX-regel toe, en probeer het opnieuw. Als je het niet snel kunt oplossen, zet dan public $sef_rewrite = '0'; in configuration.php.
13.3 Globale configuratie opslaan mislukt
Symptoom: Klikken op Opslaan toont een fout dat het configuratiebestand niet schrijfbaar is.
Oplossing: configuration.php is alleen-lezen (vaak 444 als hardening-stap). Maak het tijdelijk schrijfbaar (644), sla je wijzigingen op, en zet het daarna terug op alleen-lezen.
13.4 De hele site verdwijnt uit Google
Symptoom: De zoekposities dalen en pagina's worden niet meer geindexeerd.
Oplossing: Controleer de globale instelling Robots op het tabblad Site. Als die op noindex, nofollow staat (soms overgebleven van een staging-site), gehoorzamen zoekmachines hieraan. Zet het terug op index, follow.
13.5 Redacteuren verliezen hun HTML bij het opslaan
Symptoom: Een redacteur slaat een artikel op en zijn iframe, script of opmaak wordt verwijderd.
Oplossing: Dat is het tabblad Tekstfilters dat zijn werk doet. Pas het filter voor die gebruikersgroep aan (zet bijvoorbeeld een Witte lijst die de tags toestaat die je vertrouwt) - maar zet nooit "Geen filtering" voor groepen die je niet volledig vertrouwt.
13.6 Verouderde inhoud na wijzigingen
Symptoom: Je hebt iets gewijzigd, maar de site blijft de oude versie tonen.
Oplossing: De cache staat aan. Verlaag de Cache-tijd, maak de cache leeg via Systeem → Cache legen, of schakel de cache uit terwijl je debugt.
14. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Weet hoe instellingen opgeslagen worden: de meeste instellingen gaan naar
configuration.php, Machtigingen naar de root van#__assets, Tekstfilters naar de eigen params vancom_config. - Maak een back-up van
configuration.phpvoor elke handmatige bewerking. Het is een bestand, en eenvoudig te herstellen. - Houd
configuration.phpalleen-lezen op productie, en versoepel dat alleen kort wanneer je opslaat. - Geef je
$secret-waarde nooit bloot. Vervang hem als hij ooit lekt. - Wijzig SEF- en cache-instellingen eerst op een staging-kopie - ze raken elke pagina.
- Lees instellingen in code met de juiste API:
$app->get()voor globaal,ComponentHelper::getParams()voor component-opties. - Stel verstandige globale standaarden in op de tabbladen Machtigingen en Metadata, en overschrijf alleen per item waar nodig.
15. In het kort
OPEN GLOBALE CONFIG /administrator/index.php?option=com_config&view=application
OPEN COMPONENT-OPTIES /administrator/index.php?option=com_config&view=component&component=com_x
GLOBAAL FORM-BESTAND administrator/components/com_config/forms/application.xml
COMPONENT-FORMBESTAND administrator/components/com_x/config.xml
OPSLAG
Globale instellingen public_html/configuration.php (klasse JConfig)
Component-opties #__extensions.params (JSON)
Tabblad Machtigingen #__assets id=1 (root.1) (kolom rules, JSON)
Tabblad Tekstfilters #__extensions params van com_config (sleutel filters)
LEZEN IN CODE
Globaal Factory::getApplication()->get('sitename')
Component-optie ComponentHelper::getParams('com_content')->get('show_title')
BELANGRIJKE GLOBALE SLEUTELS sitename, offline, sef, sef_rewrite, caching, cachetime,
mailer, force_ssl, error_reporting, tmp_path, secret
Naar boven16. Samenvatting
De component com_config is klein maar centraal voor elke Joomla-site:
- Het rendert de schermen Globale configuratie en de Opties per component vanuit dezelfde code.
- Globale instellingen worden opgeslagen als een PHP-klasse in
configuration.php, niet in de database. - Component-opties worden opgeslagen als JSON in
#__extensions.params. - Het tabblad Machtigingen schrijft naar het ACL-root-asset, en Tekstfilters schrijven naar de eigen params van
com_config. - Je leest globale instellingen met
Factory::getApplication()->get()en component-opties metComponentHelper::getParams(). - Globale configuratie wordt bewust niet via de REST-API beschikbaar gesteld.
Zodra je weet waar elke instelling opgeslagen wordt, houdt Globale configuratie op hoeveelheid opties te zijn en wordt het overzichtelijker: deze waarde staat in een bestand, die in de database, en die andere twee zijn eigenlijk toegangsregels. Als je site zich gedraagt op een manier die je niet kunt verklaren - trage pagina's, kapotte URL's, ontbrekende HTML of een plotselinge daling in zoekverkeer - ligt de oorzaak heel vaak in een enkele instelling in com_config. Weten hoe het wordt opgeslagen en gelezen is de snelste manier om het te vinden, en het is een van de componenten die een Joomla-professional goed zou moeten kennen.


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


