
Blauwdruk van de Joomla-architectuur
Twee Joomla-sites kunnen dezelfde functies bieden en toch werelden van elkaar verschillen. De ene is jarenlang een plezier om te onderhouden en overleeft elke upgrade; de andere wordt een broze kluwen waar niemand aan wil komen. Het verschil is architectuur: de beslissingen die voor en tijdens de bouw worden genomen over hoe content, code en beheer samenkomen.
Dit artikel is een referentiearchitectuur voor professionele Joomla 6-websites. Het is bedoeld voor ontwikkelaars, architecten en bureaus die sites bouwen die lang mee moeten. Het behandelt de omgeving en de stack, hoe je content modelleert, toegangsbeheer, templates, moderne ontwikkelstandaarden, Git en uitrol, prestaties, toegankelijkheid, SEO, meertaligheid, beveiliging, back-ups, beheer en upgradegereedheid, en het eindigt met de anti-patronen die je moet vermijden.
De beste architectuur is de eenvoudigste die het probleem oplost en over vijf jaar nog steeds logisch is.
Het doel is eenvoudig: je een blauwdruk geven voor Joomla 6-sites die onderhoudbaar, veilig en snel blijven, en klaar zijn voor de volgende grote versie.
1. Kernprincipes
1.1 De fundamenten
Elke aanbeveling in dit artikel rust op een korte lijst principes. Houd ze in gedachten en de meeste architecturale beslissingen worden vanzelf duidelijk:
- Gebruik eerst de Joomla-core en beperk de afhankelijkheid van extensies.
- Structureer content; codeer hem niet hard.
- Gebruik Git voor alles, en ontwikkel nooit direct op productie.
- Bouw voor onderhoudbaarheid, en ontwerp vanaf dag één voor toegankelijkheid.
- Optimaliseer voor Core Web Vitals, automatiseer uitrol waar mogelijk, en documenteer elke aanpassing.
1.2 Het beslissingsfilter
Voordat je een functie, extensie of overschrijving toevoegt, haal je hem door één filter:
Verbetert dit de onderhoudbaarheid, beveiliging, toegankelijkheid, prestaties of gebruikerservaring? Als het geen ervan verbetert, hoort het waarschijnlijk niet in het project.
Een tweede vraag houdt technische schuld laag: is dit over vijf jaar en na meerdere Joomla-upgrades nog steeds onderhoudbaar? Als het eerlijke antwoord nee is, heroverweeg de aanpak.
Naar boven2. Omgevingen en stack
2.1 Drie geïsoleerde omgevingen
Productie is geen plek om te testen. Elk professioneel project gebruikt een helder pad van wijziging naar release, met elke omgeving geïsoleerd en reproduceerbaar:
Development
↓
Staging
↓
Production
Je schrijft en experimenteert in development, valideert op staging (een nauwe kopie van productie), en pas daarna breng je het uit naar productie.
2.2 Een aanbevolen stack
De exacte stack varieert, maar een moderne, goed ondersteunde basis ziet er zo uit:
| Laag | Aanbevolen |
|---|---|
| PHP | 8.3 of nieuwer, op een ondersteunde branch. |
| Database | MariaDB (of MySQL). |
| Webserver | Nginx of LiteSpeed voor snelheid. |
| Cache | Redis, optioneel, voor sessies en datacaching op schaal. |
| Gereedschap | Composer voor afhankelijkheden, Git voor versiebeheer. |
Reproduceerbare omgevingen betekenen dat een nieuwe ontwikkelaar snel dezelfde opzet kan opbouwen, en dat staging zich als productie gedraagt in plaats van "bijna als" productie.
Naar boven3. Contentarchitectuur: modelleer met aangepaste velden
3.1 Eerst content, dan ontwerp
Veel sites beginnen met een ontwerp en persen daar daarna content in. Draai de volgorde om. Definieer je contenttypes, hun relaties en hun metadata voordat je enige lay-out bouwt. Vraag je af wat voor soort dingen de site beschrijft: producten, evenementen, teamleden, case studies, documentatie.
3.2 Sla structuur op als structuur
Begraaf gestructureerde informatie niet in één groot WYSIWYG-artikel. Modelleer hem in plaats daarvan:
Producten
├─ Productnaam
├─ Producttype
├─ Kenmerken
├─ Downloads
└─ Gerelateerde producten
Bewaar de variabele onderdelen in de juiste Joomla-gereedschappen:
- Aangepaste velden en herhaalbare velden voor attributen zoals prijs, type of specificaties.
- Categorieën en tags om content voor gebruikers te classificeren, niet voor de lay-out.
- Associaties om gerelateerde items en taalvarianten te koppelen.
3.3 Waarom het loont
Gestructureerde content is makkelijker te onderhouden, te filteren, te vertalen en via de Web Services API beschikbaar te maken. Gebruik aangepaste velden voor producten, teamleden, evenementen, case studies en documentatie. Het resultaat is content die je in elke lay-out opnieuw kunt tonen zonder hem opnieuw te typen, wat een toekomstig herontwerp een lay-outklus maakt in plaats van een migratie.
Naar boven4. Architectuur van toegangsbeheer
4.1 Definieer rollen helder
De ACL van Joomla is gebouwd op gebruikersgroepen en toegangsniveaus. Breng je echte rollen onder in een heldere ladder in plaats van ad hoc groepen te verzinnen:
Public → Registered → Author → Editor → Publisher → Administrator → Super User
4.2 Standaard minimale rechten
Geef elke groep alleen de rechten die hij nodig heeft. Houd Super User-toegang voor de zeer weinige mensen die het echt nodig hebben; elke extra Super User is extra risico. Geef elke persoon een eigen account, nooit een gedeelde login, zodat acties herleidbaar zijn en de gebruikersactielogboeken iets betekenen.
Naar boven5. Templatearchitectuur
5.1 Wat een template wel en niet hoort te bevatten
Een template is voor presentatie en lay-outlogica. Het is niet de plek voor bedrijfslogica, hardcoded content of complexe applicatiecode.
| Hoort in een template | Hoort niet in een template |
|---|---|
| Markup en lay-out | Bedrijfslogica |
| Presentatie-overschrijvingen | Hardcoded content (een telefoonnummer, een adres) |
| Positiedefinities | Databasequeries en applicatielogica |
5.2 Behandel overschrijvingen als schuld
Template-overschrijvingen zijn krachtig, en juist daarom zijn ze in grote hoeveelheden gevaarlijk. Elke overschrijving is een kopie die kan afwijken van de core en de volgende upgrade kan bemoeilijken. Overschrijf alleen wanneer nodig, houd de wijziging minimaal, en documenteer elke overschrijving zodat de volgende ontwikkelaar weet waarom hij bestaat.
Naar boven6. Raamwerk voor extensiekeuze
6.1 De core-eerst-vraag
Voordat je iets installeert, vraag je: "Kan de Joomla-core dit al?" Joomla 6 wordt geleverd met aangepaste velden, ACL, workflows, tags, contacten, meertaligheid en versiebeheer. De beste extensie is vaak geen extensie.
6.2 Beoordeel voordat je installeert
Als een extensie echt nodig is, toets hem dan aan een vast raamwerk:
- Actief onderhoud en een recente release.
- Bevestigde Joomla 6-compatibiliteit.
- Een schone beveiligingsgeschiedenis.
- Goede documentatie en een geloofwaardige leverancier.
6.3 Vermijd overlap
Draai nooit twee extensies die hetzelfde werk doen, zoals drie SEO-tools of twee cachinglagen. Overlap leidt tot conflicten, complexiteit en een zwaardere onderhoudslast. Kies één goed gereedschap per klus en verwijder de rest.
Naar boven7. Moderne ontwikkelstandaarden
7.1 Bouw op de container
Joomla 6 is gebouwd rond een Dependency Injection Container en service providers. Registreer je componentservices in services/provider.php en laat de container ze aan elkaar knopen, in plaats van naar statische aanroepen te grijpen:
// administrator/components/com_example/services/provider.php
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
return new class () implements ServiceProviderInterface {
public function register(Container $container): void
{
// registreer hier de services van je component
}
};
Injecteer afhankelijkheden via de constructor in plaats van ze statisch op te halen. Het resultaat is schonere, beter testbare code:
public function __construct(DatabaseInterface $db)
{
$this->db = $db;
}
7.2 Breid uit via events, niet via core-hacks
Bewerk nooit core-bestanden; updates overschrijven ze en upgrades mislukken. Reageer op wat Joomla doet met de Event Dispatcher in een plugin, wijzig uitvoer met overschrijvingen, en voeg functies toe met componenten en modules. Gebruik Joomla's modellen en database-API in plaats van rauwe SQL door de code te verspreiden.
7.3 Laad assets op de juiste manier
Plaats CSS- en JavaScript-tags niet hardcoded. Registreer en laad ze via de Web Asset Manager, die afhankelijkheden en versionering afhandelt:
$wa = $this->getDocument()->getWebAssetManager();
$wa->useStyle('com_example.site')
->useScript('com_example.admin');
7.4 Volg standaarden en gebruik Composer
Schrijf volgens de PSR-codeerstandaarden (PSR-4 autoloading en PSR-12 stijl) en beheer bibliotheken van derden met Composer zodat builds reproduceerbaar zijn en updates eenvoudig. Vermijd verouderde patronen, statische service-aanroepen en directe omzeilingen van het framework; ze werken vandaag en breken bij de volgende grote versie.
Naar boven8. Git-werkwijze en uitrol
8.1 Een eenvoudig branch-model
Zonder Git is er geen terugrol, geen geschiedenis en geen veilige samenwerking. Gebruik een helder, klein branch-model:
main productieklare code
staging wat als volgende wordt gevalideerd
feature/* één branch per wijziging
Het werk stroomt in één richting: een feature-branch wordt samengevoegd naar staging, gevalideerd, en daarna uitgebracht naar productie. Elke uitrol zou herleidbaar moeten zijn tot een commit.
8.2 Automatiseer de pijplijn
Waar de omvang van het project het rechtvaardigt, automatiseer je het pad van commit naar release met CI/CD:
Git → CI/CD → Staging → Production
Automatiseer het testen, het buildproces en de uitrol. Automatisering haalt de handmatige fouten weg die de meeste mislukte releases veroorzaken.
Naar boven9. Prestatiearchitectuur
9.1 Stel een prestatiebudget op
Behandel snelheid als een ontwerpvoorwaarde, geen bijzaak. Een eenvoudig budget dekt het grootste deel: snelle hosting, geoptimaliseerde afbeeldingen, minimale JavaScript en efficiënte caching (Joomla-caching, browsercaching en Redis op schaal).
9.2 Meet de Core Web Vitals
Googles Core Web Vitals maken van gebruikerservaring meetbare doelen. Houd ze continu in de gaten:
| Meetwaarde | Doel |
|---|---|
| Largest Contentful Paint (LCP) | < 2,5 seconden |
| Interaction to Next Paint (INP) | < 200 milliseconden |
| Cumulative Layout Shift (CLS) | < 0,1 |
10. Toegankelijkheidsarchitectuur
Toegankelijkheid is geen laatste QA-taak die je vlak voor de lancering erop plakt. Late reparaties zijn duur en vaak structureel. Bouw toegankelijkheid vanaf dag één in het ontwerp, de ontwikkeling, de contentcreatie en het testen, en streef naar WCAG 2.2 AA.
In de praktijk betekent dat een logische kophiërarchie, betekenisvolle alt-tekst die het doel beschrijft, volledige toetsenbordbediening, voldoende kleurcontrast en gelabelde formuliervelden. Test met een echte schermlezer, want geautomatiseerde controles missen de problemen die het meest tellen.
Naar boven11. SEO-architectuur
SEO is architectuur, geen plugin die je op het eind installeert. Het begint met een schone structuur, goede content, prestaties en toegankelijkheid. Bovenop die basis implementeer je de technische signalen:
- SEF-URL's en URL-herschrijving voor schone, leesbare paden.
- Gestructureerde data (Schema.org) voor rijke resultaten.
- Interne links om onderwerpautoriteit op te bouwen.
- Canonieke URL's zodat dubbele paden de ranking niet opsplitsen.
- XML-sitemaps zodat zoekmachines elke belangrijke pagina vinden.
Organiseer content rond onderwerpclusters, en laat de structuur het meeste SEO-gewicht dragen.
Naar boven12. Meertalige architectuur
Joomla 6 heeft sterke meertaligheid ingebouwd in de core, dus je hebt er zelden een extensie voor nodig. Plan het vanaf het begin, want talen later inbouwen is pijnlijk.
- Gebruik taalassociaties om de versies van elk artikel, elke categorie en elk menu-item te koppelen.
- Geef elke taal eigen metadata, geen machinaal vertaalde kopie.
- Houd een consistente URL-structuur over alle talen aan.
- Laat vertalingen door een mens nakijken; alleen geautomatiseerde uitvoer schaadt kwaliteit en vertrouwen.
13. Beveiligingsarchitectuur
Beveiliging is een set lagen, elk afzonderlijk goedkoop en samen sterk. Schakel de essentie in en houd ze aan:
- Multifactorauthenticatie voor elke beheerder.
- HTTPS overal, sitebreed geforceerd.
- Het principe van minimale rechten in alle groepen.
- Regelmatige updates van Joomla, extensies en PHP.
Beoordeel daarna de bewegende delen volgens een schema. Controleer elk kwartaal gebruikersaccounts, rechten en geïnstalleerde extensies, en bekijk de serverconfiguratie. De meeste inbraken misbruiken iets dat een kwartaalcontrole zou hebben gevangen.
Naar boven14. Back-up, herstel en monitoring
14.1 De 3-2-1-regel
Een back-up die niet kan worden teruggezet, bestaat niet. Volg de 3-2-1-regel en test hem:
3 kopieën van je data
2 verschillende soorten opslag
1 kopie buiten de locatie bewaard
Maak een back-up van bestanden, database en configuratie samen, en oefen een echt herstel zodat terugzetten routine is, geen paniek.
14.2 Houd de draaiende site in de gaten
Architectuur omvat ook weten wanneer er iets mis is. Voeg geautomatiseerde monitoring toe voor uptime, fouten, prestaties en beveiligingsgebeurtenissen, zodat je over een probleem hoort voordat je bezoekers dat doen.
14.3 Schrijf runbooks
Documenteer de operationele procedures: hoe je uitrolt, hoe je herstelt, hoe je updates toepast en naar wie je escaleert. Een runbook maakt van een incident om 2 uur 's nachts een checklist in plaats van een gok.
Naar boven15. Beheer en eigenaarschap
Ongedefinieerd eigenaarschap veroorzaakt problemen op de lange termijn. Elke site heeft een duidelijke eigenaar per gebied nodig, ook in een klein team waar één persoon meerdere petten draagt:
- Een technisch eigenaar voor infrastructuur, updates en uitrol.
- Een contenteigenaar voor wat er gepubliceerd en actueel gehouden wordt.
- Een beveiligingseigenaar voor accounts, rechten en incidentafhandeling.
Documenteer de dingen die onzichtbaar zijn totdat ze breken: hosting, DNS, SSL, integraties en uitrolprocedures. Het doel is dat iedereen die je vertrouwt het project zonder giswerk kan overnemen.
Naar boven16. Upgradegereedheid
Bouw vandaag alsof Joomla 7 eraan komt, want dat doet het. Een site die upgrade-gereed is, kost veel minder om mee te nemen naar de toekomst. Vermijd de dingen die je op een oude versie vastzetten:
- Verouderde API's en legacy-patronen.
- Niet-ondersteunde of verlaten extensies.
- Vendor lock-in en propriëtaire frameworks die je niet kunt vervangen.
Houd schone documentatie, door Composer beheerde afhankelijkheden en code die de huidige standaarden volgt. Als de volgende grote versie arriveert, is gereedheid het verschil tussen een soepele update en een herbouw.
Naar boven17. Veelgemaakte fouten en anti-patronen
17.1 Naar extensies grijpen vóór de core
Symptoom: een extensie wordt geïnstalleerd voor iets wat aangepaste velden, ACL of workflows al doen.
Oplossing: vraag altijd eerst "kan de core dit oplossen?". De beste extensie is vaak geen.
17.2 Gestructureerde data in artikel-bodys
Symptoom: product- of evenementdetails staan als losse tekst in één groot artikel.
Oplossing: modelleer ze met aangepaste velden, herhaalbare velden en associaties.
17.3 Categorieën gebruikt voor lay-out
Symptoom: categorieën met namen als "Homepage links" of "Footer-artikelen".
Oplossing: categorieën beschrijven content (Nieuws, Producten, Support). Bepaal de lay-out met menu's en modules.
17.4 Content hardcoden in templates
Symptoom: een telefoonnummer of adres staat in een PHP-templatebestand.
Oplossing: houd bewerkbare content in artikelen, modules en aangepaste velden, waar redacteuren hem kunnen wijzigen.
17.5 Core-hacks en statische aanroepen
Symptoom: core-bestanden worden bewerkt, of services worden opgehaald met statische aanroepen en rauwe SQL.
Oplossing: breid uit via plugins, events, overschrijvingen en de DI-container; gebruik modellen en de database-API.
17.6 Productie als testbank
Symptoom: wijzigingen worden direct op de live site gemaakt en getest, zonder Git en zonder staging.
Oplossing: gebruik Git en het pad development naar staging naar productie voor elke wijziging.
17.7 Bouwen voor de lancering, niet voor de lange termijn
Symptoom: het project is geoptimaliseerd voor de lanceerdag en wordt kort daarna lastig te onderhouden.
Oplossing: optimaliseer voor vijf jaar onderhoud, toekomstige upgrades en de volgende ontwikkelaar.
Naar boven18. Best practices
Als je maar een paar dingen uit deze blauwdruk onthoudt, onthoud dan deze:
- Gebruik eerst de core en beperk afhankelijkheden.
- Modelleer content met aangepaste velden voordat je pagina's ontwerpt.
- Houd templates voor presentatie; codeer nooit content of bedrijfslogica hard.
- Bouw op de DI-container, events, de Web Asset Manager, Composer en PSR-standaarden.
- Gebruik Git en een pijplijn van development naar staging naar productie voor elke wijziging.
- Behandel prestaties, toegankelijkheid en SEO als architectuur, geen bijzaken.
- Handhaaf minimale rechten, MFA, HTTPS en kwartaalbeveiligingscontroles.
- Back-up volgens de 3-2-1-regel, monitor de site, en houd runbooks bij.
- Wijs eigenaren toe, documenteer alles, en blijf klaar voor Joomla 7.
19. In het kort
OMGEVINGEN Development → Staging → Production (geïsoleerd)
STACK PHP 8.3+, MariaDB, Nginx/LiteSpeed, Redis, Composer, Git
CONTENT Aangepaste velden + associaties; niet in artikel-bodys
ACL Public..Super User; minimale rechten; eigen accounts
TEMPLATES Alleen presentatie; documenteer en beperk overschrijvingen
DEV DI + services/provider.php, Events, Web Asset Manager, PSR-4/12
GIT main / staging / feature/* → CI/CD
PRESTATIES Budget + caching; LCP < 2,5s, INP < 200ms, CLS < 0,1
TOEGANG WCAG 2.2 AA, vanaf dag één ingebouwd
SEO SEF, gestructureerde data, interne links, canonicals, sitemap
I18N Associaties, metadata per taal, menselijke review
BEVEILIGING MFA, HTTPS, updates, kwartaalaudits
BACK-UP 3-2-1, getest herstel, monitoring, runbooks
BEHEER Technisch / Content / Beveiligingseigenaren; documenteer alles
UPGRADE Vermijd verouderde API's en lock-in; bereid je voor op Joomla 7
Naar boven20. Samenvatting
Een professionele Joomla 6-architectuur is een set weloverwogen keuzes die allemaal dezelfde kant op wijzen: naar een site die makkelijk te onderhouden en veilig te wijzigen is. De thema's versterken elkaar:
- Structuur boven sluiproutes: modelleer content, gebruik de core, en houd code standaard.
- Discipline boven heldendaden: Git, staging, automatisering en documentatie.
- Kwaliteit als architectuur: prestaties, toegankelijkheid en SEO ingebouwd, niet toegevoegd.
- Beheer dat blijft: minimale rechten, geteste back-ups, monitoring, helder eigenaarschap en upgradegereedheid.
Niets hiervan gaat over meer code schrijven. De beste Joomla-teams schrijven de eenvoudigste onderhoudbare oplossing die het probleem oplost, met respect voor de Joomla-standaarden, toegankelijkheid, prestaties en de komende vijf jaar van eigenaarschap.
Plan je een serieuze Joomla 6-bouw, neem je een project over dat van deze principes is afgedwaald, of bereid je je voor op de overstap naar Joomla 7? Dan loont het om de architectuur goed te krijgen voordat de content en code zich opstapelen. Een degelijke blauwdruk vandaag is wat de site morgen goedkoop in bezit houdt.
Naar boven

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


