
Artikelen in Joomla
Artikelen zijn het meest zichtbare onderdeel van een Joomla-website. Op het eerste gezicht lijken ze eenvoudig, maar ze raken bijna elk deel van het systeem: content, categorieën, tags, rechten, workflows, talen, templates en de REST API.
Dit artikel legt uit hoe Joomla-artikelen echt werken. Het behandelt de basis voor website-eigenaren en redacteuren, de dagelijkse inrichting voor beheerders en de technische details voor ontwikkelaars. Je leert hoe je artikelen maakt, hoe publiceren en plannen werkt, hoe toegangsbeheer daarin past en hoe Joomla 6 artikelen beschikbaar maakt via de Web Services API.
Artikelen zijn het kloppend hart van elke Joomla-site
Het doel is eenvoudig: je helpen Joomla-artikelen zo goed te begrijpen dat je ze met vertrouwen gebruikt.
1. De basis
1.1 Wat is een artikel?
Een artikel is één stuk content dat wordt beheerd door de corecomponent com_content. Je kunt een artikel zien als één tekstpagina in een tijdschrift.
Elk artikel in Joomla:
- Staat als één rij in de tabel
#__content. - Hoort bij precies één categorie.
- Heeft een titel, alias, introtekst, volledige tekst, auteur, datums en een status.
- Kan tags, aangepaste velden, afbeeldingen, links en metadata hebben.
Als Joomla een tijdschrift was, dan is een artikel één gedrukte pagina en is een categorie de rubriek waarin die pagina staat.
1.2 Waar vind ik artikelen?
In de Joomla 6-backend beheer je artikelen via het menu Content:
Content → Articles (de lijstweergave)
Content → Articles → New (een nieuw artikel maken)
Content → Featured Articles (de selectie voor de voorpagina)
Content → Categories (de containers)
Content → Fields (aangepaste velden voor artikelen)
Content → Workflows (fasen en overgangen)
De artikellijst is de plek waar redacteuren het grootste deel van hun tijd doorbrengen.
1.3 Anatomie van een artikel
Elk artikel bestaat uit een vaste set onderdelen:
| Onderdeel | Wat het opslaat |
|---|---|
| Titel | De kop, overal zichtbaar. |
| Alias | Een URL-veilige slug, automatisch gemaakt op basis van de titel. |
| Introtekst | Het deel boven de Lees meer-scheiding. |
| Volledige tekst | Alles na de Lees meer-scheiding. |
| Categorie | De enkele bovenliggende categorie, verplicht. |
| Status | Gepubliceerd, gedepubliceerd, gearchiveerd of naar prullenbak. |
| Featured | Of het artikel verschijnt bij Uitgelichte artikelen. |
| Toegang | Het toegangsniveau voor bekijken. |
| Taal | Een specifieke taaltag, of "Alle". |
1.4 De Lees meer-scheiding
De knop Lees meer in de editor voegt een klein stukje HTML in:
<hr id="system-readmore">
Joomla splitst het artikel op dat punt in twee delen:
- Alles voor de markering wordt
introtext. - Alles na de markering wordt
fulltext.
In een blog- of categorieweergave toont Joomla alleen de intro met een link "Lees meer". In de weergave van één artikel worden beide delen weer samengevoegd.
2. Artikelen maken en beheren
2.1 Een artikel maken
Ga naar deze plek om een nieuw artikel te maken:
Content → Articles → New
Twee velden zijn verplicht:
- Titel: de leesbare kop.
- Categorie: kies er één uit de boomstructuur. Het categorieveld mag niet leeg zijn.
Al het andere is optioneel, maar in de praktijk heb je minimaal een titel, categorie en inhoud nodig om iets zinvols te publiceren.
2.2 Het bewerkscherm van een artikel
Het bewerkscherm is verdeeld in tabbladen. Elk tabblad beheert een ander deel van het artikel:
| Tabblad | Wat het beheert |
|---|---|
| Content | Titel, alias, categorie, inhoud, intro-afbeelding, volledige artikelafbeelding. |
| Images and Links | Gestructureerde intro-/volledige afbeeldingen en de linkslots A/B/C. |
| Options | Weergave-instellingen per artikel, zoals titel, auteur, datums en hits tonen. |
| Publishing | Start- en einddatums, auteursalias en meta-informatie. |
| Permissions | ACL per gebruikersgroep voor dit ene artikel. |
| Fields | Aangepaste velden die aan de categorie of veldgroep zijn gekoppeld. |
| Configure Edit Screen | Velden verbergen of tonen voor redacteuren binnen deze categorie. |
2.3 Belangrijke velden uitgelegd
- Alias: gebruikt in de URL. De alias moet uniek zijn binnen de categorie.
- Status: gepubliceerd, gedepubliceerd, gearchiveerd of naar prullenbak.
- Featured: ja of nee. Schakelt een rij om in
#__content_frontpage. - Toegang: welk toegangsniveau het artikel mag zien.
- Taal:
*voor alle talen, of een specifieke tag zoalsnl-NL. - Notitie: een intern label, nooit zichtbaar voor bezoekers.
- Versienotitie: een kort bericht dat wordt opgeslagen in de versiegeschiedenis.
2.4 Opslaan-opties
De werkbalk biedt meerdere opslagacties:
- Save: opslaan en op het bewerkscherm blijven.
- Save & Close: opslaan en terug naar de lijst.
- Save & New: opslaan en een leeg artikel openen.
- Save as Copy: het artikel dupliceren met een nieuw id.
- Versions: de versiegeschiedenis openen.
- Close: niet-opgeslagen wijzigingen negeren.
3. Status, publiceren en plannen
3.1 De vier statussen
Elk artikel heeft één van vier statussen:
| Status | Zichtbaar? | Typisch gebruik |
|---|---|---|
| Gepubliceerd | Ja, als datums en toegang het toestaan | Live content. |
| Gedepubliceerd | Nee | Concepten en werk in uitvoering. |
| Gearchiveerd | Nee, behalve in de archiefweergave | Oude, bewaarde content. |
| Prullenbak | Nee | Inhoud die binnenkort definitief wordt verwijderd. |
Artikelen in de prullenbak bestaan nog steeds in de database. Ze worden pas verwijderd wanneer je op Prullenbak legen klikt.
3.2 Publicatiedatums
Het tabblad Publishing heeft twee datumvelden:
- Start Publishing: het artikel wordt op dat moment zichtbaar.
- Finish Publishing: het artikel wordt na dat moment onzichtbaar.
Beide velden zijn optioneel. In combinatie met de status Gepubliceerd kun je hiermee:
- Nieuws plannen om om 09:00 live te gaan.
- Acties automatisch laten verlopen.
- Een persbericht vooraf klaarzetten.
Joomla vergelijkt deze datums met de servertijd en de tijdzone van de site.
3.3 Uitgelichte artikelen
Een artikel als Featured markeren doet twee dingen:
- Het voegt een rij toe aan
#__content_frontpage. - Het laat het artikel verschijnen in elk menu-item van het type "Featured Articles".
Het scherm Content → Featured Articles toont alleen uitgelichte artikelen en laat je de volgorde aanpassen. Zo werkt de klassieke Joomla-voorpaginablog.
4. Artikelen en categorieën
4.1 De één-op-veel-regel
Elk artikel hoort bij precies één categorie. Een categorie bevat meerdere artikelen.
In Joomla core bestaat geen optie voor meerdere categorieën per artikel. Als een artikel bij meerdere onderwerpen hoort, gebruik dan Tags.
4.2 Wat de categorie aan het artikel geeft
Een categorie kiezen is meer dan een label plakken. De categorie levert:
- Een plek in de informatiearchitectuur van de site.
- Geërfde toegangsregels, tenzij ze op artikelniveau worden overschreven.
- Een URL-segment, bijvoorbeeld
/news/joomla-6-released. - Een workflowkoppeling, sinds Joomla 4.
- Een standaardset aangepaste velden.
- Standaard weergaveopties, zoals layout, auteur tonen en datum tonen.
4.3 Artikelen verplaatsen tussen categorieën
Je kunt artikelen op twee manieren verplaatsen:
- Eén artikel bewerken en het veld Categorie wijzigen.
- Batchverwerking in de artikellijst: vink rijen aan en gebruik de toolbaractie Batch om te verplaatsen of kopiëren.
Met Batch kun je ook taal, toegangsniveau of tags wijzigen.
5. Artikelen op de frontend
5.1 Menu-itemtypes voor artikelen
Joomla biedt meerdere menu-itemtypes om artikelen te tonen:
| Menu-itemtype | Wat het toont |
|---|---|
| Single Article | Eén specifiek artikel. |
| Featured Articles | Alle als Featured gemarkeerde artikelen in bloglayout. |
| Category Blog | Artikelen in een categorie met hoofdartikelen, intro's en links. |
| Category List | Artikelen in een categorie als sorteerbare, gepagineerde tabel. |
| List All Categories | Een categorieboom onder een gekozen root. |
| Create Article | Een formulier om via de frontend artikelen in te dienen. |
| Archived Articles | De archiefindex. |
5.2 Layoutopties voor Category Blog
Category Blog is de meest flexibele layout. Je kunt configureren:
- Hoofdartikelen: bovenaan over de volledige breedte.
- Intro-artikelen: verdeeld over één tot zes kolommen.
- Links: alleen-titel-items na de intro's.
- Paginering: paginagrootte en paginalinks.
- Volgorde: op datum, hits, sorteerveld, alfabetisch of willekeurig.
Je kunt deze opties globaal, per categorie of per menu-item instellen. De meest specifieke instelling wint.
5.3 URL en routing
Met SEF URL's ingeschakeld bouwt Joomla nette URL's op uit de categorieboom en de artikelalias:
/news → categorie-root (menu-item)
/news/national → subcategorie
/news/national/election-2026 → artikel in de subcategorie
De router van Joomla 6 lost deze geneste paden automatisch op, zolang aliassen uniek zijn binnen hun bovenliggende categorie.
5.4 De link "Lees meer"
Wanneer de redacteur een Lees meer-scheiding invoegt:
- Tonen categorie- en Featured-weergaven alleen de introtekst.
- Voegt Joomla een Lees meer-link toe naar de artikelweergave.
- Kan de linktekst globaal of per menu-item worden aangepast.
Zonder Lees meer-scheiding tonen bloglayouts het volledige artikel. Dat wil je zelden op een homepage.
6. Editors, afbeeldingen en media
6.1 De standaardeditor
Joomla 6 gebruikt TinyMCE als standaard WYSIWYG-editor.
- Deze wordt geconfigureerd onder
Plugins → Editor - TinyMCE. - Je kunt drie sets configureren, 0, 1 en 2, en die aan verschillende gebruikersgroepen koppelen.
- Knoppenbalken, toegestane HTML-tags en content-CSS zijn allemaal instelbaar.
Elke gebruiker kan ook een andere editor kiezen in het profiel onder Basic Settings.
6.2 Editor-knoppen, XTD-plugins
Onder de editor toont Joomla extra knoppen die worden gerenderd door Editor Button-plugins. De nuttigste zijn:
- Article: een link naar een ander artikel invoegen.
- Image: een afbeelding kiezen of uploaden via Media.
- Page Break: een lang artikel splitsen in meerdere pagina's.
- Read More: de intro/volledige tekst-scheiding invoegen.
- Contact, Menu, Module: andere Joomla-content invoegen.
6.3 Gestructureerde afbeeldingen bij een artikel
Het tabblad Images and Links heeft twee gestructureerde afbeeldingsslots:
- Intro Image: getoond in blog- en categorieweergaven boven de introtekst.
- Full Article Image: getoond op de weergave van één artikel.
Je kunt afbeeldingen ook via de editor in de inhoud plaatsen. Gebruik de gestructureerde slots wanneer je een voorspelbare layout in lijsten wilt.
6.4 De Media Manager
De Media Manager staat op Content → Media.
- De standaard hoofdmap is
images/. - Je kunt submappen organiseren per jaar, per sectie of per redacteur.
- Ondersteunt drag-and-drop uploads, bijsnijden in de browser en alt-tekstbewerking.
- Rechten per gebruikersgroep bepalen wie bestanden mag uploaden of verwijderen.
Praktische tip: leg vanaf dag één een mapconventie vast. Later herstructureren breekt elke ingesloten afbeeldings-URL.
7. Aangepaste velden
7.1 Waarom aangepaste velden?
Soms is "titel plus inhoud" niet genoeg:
- Evenementen hebben een datum, locatie en prijs nodig.
- Recepten hebben bereidingstijd en aantal porties nodig.
- Medewerkersprofielen hebben een functie en telefoonnummer nodig.
Met aangepaste velden kunnen redacteuren gestructureerde extra gegevens invullen zonder een eigen component te bouwen.
7.2 Veldgroepen en velden
Je beheert ze onder Content → Fields → Field Groups en daarna Fields.
- Een Veldgroep wordt een tabblad op het bewerkscherm van een artikel.
- Een Veld hoort bij één groep en heeft een type, zoals tekst, lijst, kalender, media, gebruiker, SQL, subformulier en meer.
- Je wijst een veld toe aan één of meer categorieën. Artikelen buiten die categorieën zien het veld niet.
7.3 Veldtypes die je moet kennen
| Type | Gebruik het voor |
|---|---|
| Text / Textarea | Korte of lange vrije tekst. |
| List / Radio / Checkboxes | Kiezen uit een vaste set opties. |
| Calendar | Datums en tijden. |
| Media | Een afbeelding of video kiezen uit Media. |
| URL / Email / Integer | Gevalideerde invoer. |
| User | Een Joomla-gebruiker kiezen. |
| SQL | Kiezen uit een databasequery. |
| Subform | Herhalende groep velden, zoals FAQ's of galerijrijen. |
| Editor | Een volledige WYSIWYG-editor voor een aangepast lang tekstveld. |
7.4 Aangepaste velden tonen
Je hebt drie opties om aangepaste veldwaarden op de frontend te tonen:
- Automatisch: Joomla toont de velden boven of onder het artikel, afhankelijk van de groepsinstelling.
- Shortcode: gebruik
ofergens in de inhoud. - Template override: volledige controle in
templates/your_template/html/com_content/article/default.php.
8. Tags
8.1 Tags versus categorieën
Categorieën en tags lijken op elkaar, maar lossen verschillende problemen op:
| Gebruik een categorie wanneer... | Gebruik een tag wanneer... |
|---|---|
| Het artikel bij één plek hoort. | Het artikel met meerdere onderwerpen te maken heeft. |
| Hiërarchie belangrijk is. | Je alleen platte, doorsnijdende labels nodig hebt. |
| Je ACL of een workflow nodig hebt. | Je ontdekking en filtering wilt. |
| De URL de structuur moet weerspiegelen. | De URL niet kritisch is. |
Categorieën bepalen wat content is.
Tags beschrijven waar content over gaat.
8.2 Tags toewijzen
- Gebruik op het bewerkscherm van het artikel het veld Tags op het tabblad Content.
- Typ om een bestaande tag automatisch aan te vullen, of typ een nieuwe tag en druk op Enter.
- Je kunt tags ook batchgewijs toewijzen vanuit de artikellijst.
Tags staan in #__tags. De koppeling tussen artikelen en tags staat in #__contentitem_tag_map.
8.3 Tag-gestuurde menu-items
Joomla levert drie menu-itemtypes voor tags:
- Tagged Items: alle items, zoals artikelen en contacten, met één of meer tags.
- List of all Tags: de tagcloud of index.
- Compact list of tagged items: een compactere variant.
Deze menu-items zijn perfect voor blokken met "gerelateerde content" of onderwerp-landingspagina's.
9. Meertalige artikelen
9.1 Meertaligheid zit in de core
Joomla spreekt standaard veel talen. Je hebt geen betaalde extensie of aparte database nodig.
- Je maakt één artikel per taal. Elk artikel is een aparte rij in
#__content. - Associaties koppelen de vertalingen van "hetzelfde" artikel aan elkaar.
- Een Language Switcher-module laat bezoekers tussen talen wisselen.
- Menu's, modules, categorieën en artikelen hebben allemaal een veld
language.
Dit is één van de sterkste redenen om Joomla te kiezen boven WordPress voor een serieuze meertalige site.
9.2 De drie onderdelen die je nodig hebt
| Onderdeel | Waar je het instelt |
|---|---|
| Geïnstalleerde talen | System → Manage → Languages → Install |
| Content Languages | System → Manage → Languages → Content |
| Taalplugin | Plugins → System - Language Filter, inschakelen |
De Language Filter-plugin zorgt ervoor dat Joomla taal detecteert, wisselt en routeert.
9.3 Taal op artikelniveau
Op het tabblad Content van het artikel biedt het veld Language:
*: alle talen. Het artikel wordt getoond ongeacht de actieve taal.nl-NL,en-GB,de-DEenzovoort: gekoppeld aan die specifieke contenttaal.
Een Nederlandse bezoeker ziet nooit een artikel dat alleen Engels is wanneer de Language Filter actief is. Andersom geldt dezelfde regel.
9.4 Associaties
Met het veld Associations op het tabblad Content koppel je het equivalente artikel in elke andere contenttaal.
Bijvoorbeeld: "Joomla 6 Released" (en-GB) wordt gekoppeld aan "Joomla 6 Uitgebracht" (nl-NL). De Language Switcher brengt een bezoeker dan vanaf de ene vertaling naar de andere op dezelfde plek.
Hetzelfde mechanisme bestaat voor categorieën, menu-items en modules. Koppel ze allemaal voor een nette meertalige ervaring. Associaties staan in #__associations.
9.5 Meertalige valkuilen
- Een menu-item op "All Languages" routeert alleen naar artikelen met taal
*. Taalgebonden artikelen hebben taalgebonden menu-items nodig. - Vergeten een categorie te associëren stuurt de Language Switcher vaak naar de homepage in plaats van naar de overeenkomstige pagina.
- Een Nederlands artikel in een Engelstalige menustructuur is onzichtbaar. Controleer de taal van het menu, niet alleen die van het artikel.
- Search en Smart Search indexeren per taal. Indexeer opnieuw na het inschakelen van een nieuwe taal.
10. Workflows en versiegeschiedenis
10.1 Wat is een workflow?
Een workflow verandert de eenvoudige Gepubliceerd/Gedepubliceerd-schakelaar in een redactioneel proces met meerdere stappen. Bijvoorbeeld:
Draft → Review → Approved → Published
Draft → Legal Review → Published
Draft → Translation → Review → Published
Elke stap is een fase en elke pijl is een overgang.
10.2 Waar workflows staan
Workflows worden beheerd onder Content → Workflows:
- Definieer één of meer Workflows, dus benoemde processen.
- Definieer Stages binnen elke workflow.
- Definieer Transitions tussen fasen, met ACL-regels.
- Koppel een workflow aan een Categorie via de categorie-opties.
10.3 Redactionele praktijk
- Redacteuren zien alleen de overgangen die ze mogen uitvoeren.
- De "Stage" van het artikel vervangt de simpele statuspil in de lijstweergave.
- Combineer workflows met meldingen zodat beoordelaars een e-mail krijgen wanneer iets in hun wachtrij komt.
- Workflows zijn per categorie, dus verschillende secties kunnen verschillende redactionele processen gebruiken.
10.4 Elke keer opslaan is een versie
Standaard maakt elke opslag van een artikel een rij aan in #__history.
- Elke versie is een JSON-snapshot van het artikel.
- De optionele Version Note wordt erbij opgeslagen.
- Je opent versies via de knop Versions in de werkbalk.
10.5 Wat je met versies kunt doen
- Elke oude versie voorvertonen, naast elkaar.
- Twee versies veld voor veld vergelijken.
- Een oude versie herstellen. Dat maakt een nieuwe huidige versie aan.
- Een versie bewaren, zodat die beschermd is tegen automatische opschoning.
- Oude versies handmatig verwijderen.
10.6 Hoeveel versies worden bewaard?
De instelling staat in System → Global Configuration → Articles → Integration → Maximum Versions.
- De standaardwaarde is
10. - Zet de waarde op
0voor onbeperkte versies. - Versies die als "Keep" zijn gemarkeerd, worden nooit automatisch verwijderd.
Stel dit getal zorgvuldig in. Een waarde van 0 plus een druk redactieteam kan de tabel #__history heel snel laten groeien.
11. Toegangsbeheer, ACL, op artikelen
11.1 Twee verschillende concepten
Mensen halen in Joomla vaak twee ACL-concepten door elkaar:
| Concept | Vraag die het beantwoordt |
|---|---|
| Toegang, Viewing Access Level | Wie mag dit artikel zien? |
| Rechten, Actions | Wie mag wat doen met dit artikel? |
Het model is hetzelfde als bij categorieën. Artikelen zitten alleen één niveau dieper.
11.2 Viewing Access Level
Je stelt het toegangsniveau in op het tabblad Content van het artikel. Joomla levert vijf ingebouwde niveaus:
- Public
- Guest
- Registered
- Special
- Super Users
Een artikel dat alleen voor Registered is, verschijnt voor gasten nooit in menu's, zoekresultaten, feeds of modules. Je kunt ook aangepaste toegangsniveaus maken voor betaalde leden of interne omgevingen.
11.3 Rechten per gebruikersgroep
Het tabblad Permissions van één artikel beheert deze acties:
| Actie | Betekenis |
|---|---|
| Delete | Dit artikel verwijderen. |
| Edit | Dit artikel bewerken. |
| Edit State | Publiceren, depubliceren, archiveren of naar de prullenbak verplaatsen. |
| Edit Own | Alleen bewerken als de gebruiker de auteur is. |
| Edit Custom Field Value | Aangepaste veldwaarden wijzigen. |
11.4 De overervingsketen
Rechten lopen van boven naar beneden:
Global Configuration
└── Component (com_content)
└── Category
└── Article
Op elk niveau kun je een recht instellen op:
- Inherit: neem de waarde over van de ouder.
- Allowed: geef het recht.
- Denied: harde blokkade. Dit kun je lager in de keten niet overschrijven.
Praktische regel: weiger zo hoog mogelijk; sta toe zo laag als nodig.
11.5 Frontend bewerken
Er zijn twee manieren om gebruikers artikelen op de frontend te laten bewerken:
- Het inline bewerkpotlood naast de titel voor gebruikers met Edit of Edit Own.
- Een menu-item Create Article met het volledige bewerkformulier voor auteurs met Create op de gekozen categorie.
Combineer frontend bewerken met een workflow, zodat inzendingen als Draft binnenkomen voor beoordeling door medewerkers.
12. Modules rond een artikel
12.1 Artikelgerelateerde modules
Joomla 6 levert meerdere modules die met artikelen werken:
| Module | Wat deze doet |
|---|---|
| Articles - Latest | De N meest recente artikelen, optioneel gefilterd op categorie. |
| Articles - Newsflash | Een willekeurige of vaste selectie intro's. |
| Articles - Popular | De meest bekeken artikelen, gebaseerd op hits. |
| Articles - Related | Gerelateerde items op basis van metadata-keywords. |
| Articles - Categories | Een lijst met subcategorieën onder een bovenliggende categorie. |
| Articles - Category | Een lijst met artikelen in een gekozen categorie. |
| Articles - Archive | Het klassieke maand/jaar-archief. |
12.2 Modules toewijzen aan artikelpagina's
Modules worden gekoppeld aan menu-items, niet rechtstreeks aan artikelen. Om een module op één specifiek artikel te tonen:
- Maak een verborgen menu-item van het type Single Article voor dat artikel.
- Wijs de module toe aan dat menu-item.
- Of gebruik een externe Advanced Module Manager om regels toe te passen zoals "toon op artikel X".
12.3 Modules laden binnen een artikel
Met de plugin Content - Load Module ingeschakeld kun je modules direct in de artikelinhoud invoegen:
Dit is krachtig, maar ook makkelijk te misbruiken. Gebruik het spaarzaam en documenteer waar je het inzet.
13. Onder de motorkap, ontwikkelaarsweergave
13.1 Belangrijke databasetabellen
Artikelen raken veel tabellen. De belangrijkste zijn:
#__content — de artikelen zelf
#__content_frontpage — markeringen voor uitgelichte artikelen
#__content_rating — stemmen en beoordelingen
#__history — versiesnapshots
#__contentitem_tag_map — artikel-naar-tag-koppeling
#__fields, #__fields_values — aangepaste velden
#__categories — de categorieboom
#__assets — één ACL-regelrij per artikel
#__associations — meertalige koppelingen tussen rijen
#__workflow_associations — huidige workflowfase per item
13.2 Hoe de tabellen verbinden
#__categories
▲
│ catid
│
#__users ◀─created_by─ #__content ─asset_id─▶ #__assets
│
┌──────────────┬───────────────┐
│ │ │
▼ ▼ ▼
#__history #__content_ #__contentitem_
(versions) frontpage tag_map
(featured) │
▼
#__tags
#__fields ──defines──▶ #__fields_values ──refers to──▶ #__content
#__associations ──links translations of──▶ #__content
De kolom asset_id in #__content koppelt elk artikel aan zijn rij in #__assets. Die rij bewaart de ACL-regels voor het artikel.
13.3 Belangrijke velden in #__content
id
asset_id
title, alias
introtext, fulltext
state (1 published, 0 unpublished, 2 archived, -2 trashed)
catid
created, created_by, created_by_alias
modified, modified_by
publish_up, publish_down
featured
access
language
metadesc, metakey, metadata
attribs (JSON: weergaveopties per artikel)
images (JSON: intro- en volledige afbeeldingsslots)
urls (JSON: A/B/C-linkslots)
version, hits
De kolommen attribs, images en urls zijn JSON-blobs. Lees ze met json_decode().
13.4 Articles API in PHP, moderne manier
De moderne manier om een artikel te laden gebruikt de MVC factory:
use Joomla\CMS\Factory;
$app = Factory::getApplication();
$factory = $app->bootComponent('com_content')->getMVCFactory();
$model = $factory->createModel('Article', 'Administrator', ['ignore_request' => true]);
$article = $model->getItem(42);
echo $article->title;
echo $article->introtext;
Het Administrator-model geeft de ruwe record terug. Het Site-model past routing- en toegangscontroles toe.
13.5 Articles API in PHP, snelle read
Voor een simpele read op de frontend kun je direct de query builder gebruiken:
use Joomla\CMS\Factory;
$db = Factory::getContainer()->get('DatabaseDriver');
$query = $db->getQuery(true)
->select(['id', 'title', 'alias', 'introtext'])
->from($db->quoteName('#__content'))
->where($db->quoteName('state') . ' = 1')
->order('created DESC');
$db->setQuery($query, 0, 10);
$rows = $db->loadObjectList();
Gebruik de API of het model wanneer je ACL, routing of events nodig hebt. Gebruik de query builder wanneer je alleen rijen nodig hebt.
13.6 Events waarop je kunt inhaken
Plugins kunnen reageren op meerdere content-events:
| Event | Wanneer het afgaat |
|---|---|
onContentBeforeSave |
Vlak voor insert of update, context com_content.article. |
onContentAfterSave |
Direct na succesvol opslaan. |
onContentBeforeDisplay |
Voordat het artikel wordt gerenderd. |
onContentPrepare |
Laat plugins introtext en fulltext transformeren. |
onContentAfterDisplay |
Nadat de artikelinhoud is gerenderd. |
onContentChangeState |
Publiceren, depubliceren, archiveren of naar prullenbak. |
onContentBeforeDelete / onContentAfterDelete |
Rondom verwijderen. |
Zo haken core contentplugins zoals Load Module, Page Break, Vote en Email Cloaking zichzelf in.
13.7 Template overrides
Override de artikel- en categorieweergaven in je template:
templates/your_template/html/com_content/article/
default.php → één artikel
templates/your_template/html/com_content/category/
blog.php → category blog
blog_item.php → één item in de blog
blog_links.php → link-items
default.php → categorielijst
default_articles.php → de artikelrijen
templates/your_template/html/com_content/featured/
default.php
templates/your_template/html/com_content/archive/
default.php
Override alleen wat nodig is. Kopieer eerst het corebestand en pas het daarna aan.
13.8 Performance en caching
Een drukke artikelsite staat of valt met caching. Joomla biedt meerdere lagen:
| Laag | Waar | Wat wordt gecachet |
|---|---|---|
| System cache, Conservative | Plugin: System - Cache | Volledig gerenderde pagina's, per URL en gebruikersgroep. |
| Page cache, Progressive | Dezelfde plugin, andere modus | Pagina's per gebruiker. Fijnmaziger, lagere hitrate. |
| View cache | Global Configuration → System → Cache: ON | De output van componentweergaven. |
| Module cache | Per module → Advanced → Caching | Gerenderde module-HTML. |
| Browser cache | .htaccess / Apache headers | Statische assets, zoals afbeeldingen, CSS en JS. |
Database-tuning telt ook mee op schaal:
- Gebruik indexen op
#__contentvoorstate,catid,accessenlanguage. Joomla levert verstandige standaardwaarden, maar controleer ze na migraties. - Gebruik een echte opcode cache, OPcache, voor PHP. Op productie is dat geen optie maar basiswerk.
- Gebruik een Redis- of Memcached-sessie- en cachehandler voor clustersites.
- Houd Maximum Versions verstandig, zodat
#__historyniet groter wordt dan#__content.
Vuistregel: schakel System Cache, Conservative, en Module Cache standaard in. Schakel pas over naar Progressive wanneer de site vooral door uitgelogde bezoekers wordt gebruikt.
14. De Web Services API en headless Joomla
14.1 Wat de Web Services API is
Joomla 4 introduceerde een ingebouwde REST API voor corecontent. Joomla 6 zet dit voort en verbetert het.
- De API staat onder
/api/index.php/v1/.... - De API spreekt JSON in en JSON uit, in JSON-API-stijl.
- Dezelfde MVC-modellen als in de backend vormen de basis. ACL en events gelden dus ook.
- Artikelen, categorieën, tags, gebruikers, menu's en meer zijn standaard beschikbaar.
Dit maakt Joomla in 2026 een geloofwaardig headless of hybride CMS.
14.2 De API inschakelen
De API draait in een eigen applicatie:
- Schakel de plugin Web Services - Content in, plus de andere Web Services-plugins die je nodig hebt.
- Controleer
System → Global Configuration → Site → Default Public Access Level for API. Dit beheert anonieme leesrechten. - Authenticatie gebruikt de API Authentication-plugins:
- Web Services - Token: een Joomla-token per gebruiker, ingesteld in het gebruikersprofiel.
- Basic Auth: gebruikersnaam en wachtwoord. Prima voor server-to-server over TLS.
Een eenvoudige call ziet er zo uit:
curl -H "X-Joomla-Token: <token>" \
https://example.test/api/index.php/v1/content/articles
14.3 Veelgebruikte artikel-endpoints
| Methode en pad | Wat het doet |
|---|---|
GET /v1/content/articles |
Artikelen weergeven, met filters, paginering en velden. |
GET /v1/content/articles/{id} |
Eén artikel lezen. |
POST /v1/content/articles |
Een artikel maken. |
PATCH /v1/content/articles/{id} |
Velden bijwerken. |
DELETE /v1/content/articles/{id} |
Een artikel naar de prullenbak verplaatsen. |
GET /v1/content/categories |
Categorieën weergeven. |
GET /v1/content/articles?filter[category]=8 |
Filteren op categorie. |
GET /v1/fields/content/articles |
Definities van aangepaste velden. |
Responses volgen JSON-API-conventies: data, attributes, links, meta en included.
14.4 Headless usecases
Zodra artikelen via HTTP en JSON bereikbaar zijn, kan Joomla dienen als bron voor:
- Een Next.js-, Astro- of Nuxt-frontend, met Joomla als redactiebackend.
- Een mobiele app die dezelfde artikelen ophaalt als de website.
- Digital signage of een kiosk die periodiek koppen ophaalt.
- Een microsite op een eigen domein, redactioneel beheerd vanuit de hoofdsite.
- Een AI- of LLM-pipeline die verse content via de API verwerkt.
Redacteuren houden de vertrouwde Joomla-backend. Frontends worden vervangbaar.
14.5 CLI en automatisering
Joomla levert een CLI en een Console-applicatie:
php cli/joomla.php extension:list
php cli/joomla.php user:add
In combinatie met de REST API kun je scripts maken voor:
- Bulkimports van artikelen uit een ander CMS.
- Nachtelijke publiceer- of depubliceertaken.
- Health checks en contentaudits.
- Cache legen na een deploy.
14.6 API-valkuilen
- De API staat standaard uit met een reden. Open laten zonder rate limiting nodigt misbruik uit.
- De instelling "Default Public Access Level for API" is globaal. Controleer die voordat je Web Services inschakelt.
- API-tokens zijn per gebruiker. Roteer ze en koppel API-gebruikers aan een aparte gebruikersgroep met minimale rechten.
- Aangepaste velden worden via een apart endpoint beschikbaar gemaakt. Verwacht ze niet standaard in de hoofdpayload van een artikel.
- Zet de API alleen achter HTTPS. Altijd.
15. SEO en metadata
15.1 SEO per artikel
Het tabblad Publishing bevat de SEO-velden van het artikel:
- Meta Description: gebruikt in
<meta name="description">. - Meta Keywords: wordt nog weggeschreven, maar grotendeels genegeerd door zoekmachines.
- Author en Rights: mappen naar
<meta name="author">en<meta name="rights">. - Robots: bepaalt crawling met waarden zoals
index, followofnoindex, nofollow. - External Reference: een vrij tekst-id voor integraties.
De alias van het artikel bepaalt de URL-slug.
15.2 Hygiëne voor featured snippets
- Houd titels uniek en betekenisvol. Ze worden de
<h1>en de paginatitel. - Schrijf een echte introparagraaf. Zoekmachines citeren die vaak.
- Gebruik gestructureerde koppen, zoals
<h2>en<h3>, in de inhoud. - Voeg alt-tekst toe aan elke afbeelding.
- Gebruik canonical URL's. Het menu-item dat het dichtst bij het artikel staat, moet winnen.
15.3 Sitemap en zoekfunctie
- Joomla heeft Smart Search,
com_finder, ingebouwd. Schakel de plugins in en draai de index één keer. - Gebruik een sitemap-extensie zoals OSMap of JLSitemap om artikelen aan Google beschikbaar te maken.
- Combineer sitemaps met een tag-gestuurde landingspagina-strategie om onderwerpen te clusteren.
16. Veelgemaakte fouten en valkuilen
16.1 De Lees meer-scheiding vergeten
Symptoom: de homepage toont tien artikelen van 2.000 woorden volledig.
Oplossing: voeg in elk lang artikel een Lees meer-scheiding toe, of stel een afkapoptie in op het menu-item.
16.2 Aliasconflicten
Twee artikelen met dezelfde alias binnen dezelfde categorie veroorzaken routingproblemen. Joomla voegt bij opslaan -2 of -3 toe, maar copy-paste-imports slaan die beveiliging vaak over.
Zorg altijd dat de alias uniek is binnen de categorie, niet alleen globaal.
16.3 Status versus toegang versus workflow
Een artikel kan om veel redenen onzichtbaar zijn:
stateis niet1, gepubliceerd.publish_upligt in de toekomst, ofpublish_downligt in het verleden.accessis hoger dan het Viewing Level van de bezoeker.- Een workflowfase verwijst naar "Gedepubliceerd".
- De bovenliggende categorie is gedepubliceerd of beperkt.
- De
languagekomt niet overeen met de actieve sitetaal.
Controleer alle zes voordat je de template de schuld geeft.
16.4 Workflows zonder training
Een workflow die niemand begrijpt is slechter dan geen workflow.
- Documenteer de fasen en overgangen.
- Train redacteuren in wat "Submit for Review" echt doet.
- Begin simpel: twee fasen en één overgang. Breid daarna uit.
16.5 De versiegeschiedenis die schijfruimte opeet
Onbeperkte versies, grote intro-afbeeldingen en vaak opslaan kunnen #__history tot gigabytes laten groeien. Stel een verstandige waarde voor Maximum Versions in bij Global Configuration en ruim bestaande geschiedenis op.
16.6 Ingesloten media-URL's
Inline image-tags zoals <img src="/images/2024/photo.jpg"> breken wanneer je de Media-map later herstructureert. Gebruik de gestructureerde intro- en volledige slots, en template overrides wanneer layout belangrijk is. Houd redacteuren weg van inline stylingbeslissingen.
17. Best practices en snelle referentie
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Kies de categorie voordat je begint met schrijven. Die bepaalt ACL, URL en workflow.
- Voeg altijd een Lees meer-scheiding toe in lange artikelen.
- Gebruik tags voor onderwerpen en categorieën voor structuur.
- Stel een verstandige Maximum Versions-waarde in, zodat
#__historyniet explodeert. - Schakel System Cache en Module Cache standaard in. Gebruik OPcache op productie.
- Zet de Web Services API achter HTTPS, tokens en een gebruikersgroep met minimale rechten.
- Gebruik de gestructureerde intro- en volledige afbeeldingsslots, niet inline HTML, wanneer layout telt.
Cheatsheet
MAKEN Content → Articles → New
CATEGORIE Verplicht — elk artikel heeft er één nodig
LEES MEER Editor → Read More-knop (system-readmore <hr>)
FEATURED Featured schakelen in de lijst of tijdens bewerken
PLANNEN Publishing-tab → Start / Finish Publishing
WORKFLOW Koppelen op het tabblad Category Options
VERSIES Toolbar → Versions (maximum instellen in Global Config)
TAGS Content-tab → Tags-veld
VELDEN Content → Fields → Field Groups, toewijzen per categorie
TOEGANG Content-tab → Access (Viewing Level)
RECHTEN Permissions-tab (per groep, per artikel)
LAYOUT templates/{tpl}/html/com_content/article/ of /category/
ROUTING SEF inschakelen, unieke aliassen binnen een categorie gebruiken
EVENTS onContentPrepare, onContentBeforeSave, onContentAfterSave
MEERTALIG System → Languages + Plugin: System - Language Filter
ASSOCIATIES Content-tab → Associations (vertalingen koppelen)
REST API /api/index.php/v1/content/articles (+ token plugin)
CLI php cli/joomla.php <command>
CACHE System - Cache-plugin + OPcache + Redis op schaal
18. Samenvatting
In Joomla is een artikel niet zomaar "een pagina tekst". Het staat midden in bijna elke Joomla-functie:
- Content: titel, inhoud, intro, volledige tekst, afbeeldingen.
- Structuur: precies één categorie, optionele tags.
- Levenscyclus: concepten, versies, workflows en planning.
- Rechten: wie het ziet, wie het bewerkt, wie het publiceert.
- Talen: volwaardige meertaligheid via associaties.
- SEO: alias, metadata, routing en gestructureerde koppen.
- Performance: caching in meerdere lagen, OPcache en optioneel Redis.
- Integratie: events, PHP API, REST API, CLI, aangepaste velden en modules.
- Gebruikerservaring: voor redacteuren die het schrijven en bezoekers die het lezen.
Een goed beheerd artikelsysteem bespaart tijd, voorkomt bugs en maakt een Joomla-website jarenlang makkelijker te onderhouden. Een verwaarloosd systeem veroorzaakt problemen die meegroeien met de website.
Als je een nieuwe Joomla-site plant, migreert vanaf een oudere versie, of vermoedt dat je huidige artikelinrichting problemen veroorzaakt, loont het om artikelen, categorieën en workflows samen te bekijken. Ze vormen de stille fundering onder bijna alles wat Joomla doet.


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


