Terug naar hoofdinhoud
Artikelen in Joomla

Artikelen in Joomla

26 mei 2026

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:

OnderdeelWat 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:

TabbladWat 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 zoals nl-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:

StatusZichtbaar?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-itemtypeWat 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

TypeGebruik 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 of ergens 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

OnderdeelWaar 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-DE enzovoort: 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 0 voor 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:

ConceptVraag 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:

ActieBetekenis
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:

ModuleWat 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:

EventWanneer 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:

LaagWaarWat 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 #__content voor state, catid, access en language. 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 #__history niet 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 padWat 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, follow of noindex, 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:

  • state is niet 1, gepubliceerd.
  • publish_up ligt in de toekomst, of publish_down ligt in het verleden.
  • access is hoger dan het Viewing Level van de bezoeker.
  • Een workflowfase verwijst naar "Gedepubliceerd".
  • De bovenliggende categorie is gedepubliceerd of beperkt.
  • De language komt 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 #__history niet 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.

Artikelen in Joomla
Peter Martin

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

© Peter Martin / db8 Website Support. All rights reserved.