Terug naar hoofdinhoud
Blauwdruk van de Joomla-architectuur
Op deze pagina

Blauwdruk van de Joomla-architectuur

21 juni 2026

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 boven

2. 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:

LaagAanbevolen
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 boven

3. 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 boven

4. 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 boven

5. 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 templateHoort 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 boven

6. 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 boven

7. 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 boven

8. 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 boven

9. 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:

MeetwaardeDoel
Largest Contentful Paint (LCP) < 2,5 seconden
Interaction to Next Paint (INP) < 200 milliseconden
Cumulative Layout Shift (CLS) < 0,1
Naar boven

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 boven

11. 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 boven

12. 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.
Naar boven

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 boven

14. 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 boven

15. 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 boven

16. 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 boven

17. 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 boven

18. 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.
Naar boven

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 boven

20. 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
Blauwdruk van de Joomla-architectuur
Peter Martin
Peter Martin
Joomla Specialist

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