Terug naar hoofdinhoud
Tags in Joomla
Op deze pagina
# Topics

Tags in Joomla

06 juni 2026

Tags lijken de eenvoudigste functie van Joomla: je typt een woord, drukt op Enter en je bent klaar. Maar achter dat kleine invoerveld zit een van de krachtigste en meest verkeerd begrepen onderdelen van het systeem. Tags reiken tot in de database, de router, de zoekmachine en zelfs je eigen maatwerkextensies.

Dit artikel legt uit hoe Joomla-tags echt werken. Het behandelt de basis voor website-eigenaren en redacteuren, de praktische inrichting voor beheerders en de technische details voor ontwikkelaars. Je leert hoe je tags aanmaakt, hoe je elk type content van tags voorziet, hoe tagging onder water wordt opgeslagen en hoe je de meest voorkomende fouten voorkomt.

Categorieën zeggen wat je content is. Tags zeggen waar het over gaat.

Het doel is eenvoudig: je Joomla-tags goed genoeg laten begrijpen zodat je ze met vertrouwen kunt gebruiken.

1. De basis

1.1 Wat is een tag?

Een tag is een flexibel label dat je aan een stuk content koppelt. Waar een categorie een vaste map is waarin een item leeft, is een tag een onderwerp waar een item over gaat. Eén artikel kan meerdere tags tegelijk dragen.

Tags dienen twee groepen mensen:

  • Ze helpen redacteuren om gerelateerde content over de hele site met elkaar te verbinden.
  • Ze helpen bezoekers om meer over een onderwerp te ontdekken, ongeacht in welke categorie het staat.

1.2 Tags lopen dwars door alles heen

Een categorie beantwoordt de vraag “waar hoort dit thuis?”. Een tag beantwoordt “welke onderwerpen raakt dit?”. Een artikel over een Joomla-beveiligingsrelease kan in de ene categorie Nieuws staan en toch de tags security, joomla-6 en updates dragen. Diezelfde tags kunnen ook op een contactpersoon, een nieuwsfeed of een maatwerkitem verschijnen.

1.3 Tags werken over componenten heen

Tags zijn niet beperkt tot artikelen. De meeste core componenten ondersteunen tagging standaard:

  • Artikelen: com_content
  • Contactpersonen: com_contact
  • Nieuwsfeeds: com_newsfeeds
  • Categorieën zelf kunnen ook van tags worden voorzien.

Veel extensies van derden hergebruiken hetzelfde taggingsysteem. Zodra je tags begrijpt, begrijp je hoe een groot deel van Joomla content met elkaar verbindt.

1.4 Waar vind ik tags?

In de Joomla 6-backend beheer je alle tags op één centrale plek:

Componenten → Tags                 (beheer alle tags)
Componenten → Tags → Nieuw          (een tag aanmaken)

Tags toepassen doe je op een heel andere plek: op het bewerkscherm van het item zelf, in een veld Tags. We behandelen beide schermen hieronder.

Naar boven

2. Tags aanmaken en beheren

2.1 Een tag aanmaken

Om een losse tag aan te maken, ga je naar:

Componenten → Tags → Nieuw

Twee velden zijn het belangrijkst:

  • Titel: het leesbare label dat op de site en in lijsten wordt getoond.
  • Alias: de korte, URL-veilige naam. Joomla genereert deze uit de titel als je het veld leeg laat.

2.2 Tags on-the-fly aanmaken

Je hebt het scherm Nieuw zelden nodig. Wanneer je een artikel bewerkt, kun je in het veld Tags een nieuw woord typen en op Enter drukken. Joomla maakt de tag meteen aan en koppelt deze aan het item. Dit gaat snel, maar het is ook waar de meeste rommelige taglijsten beginnen (zie Veelgemaakte fouten).

2.3 Het tag-bewerkscherm

Het bewerkscherm is verdeeld in tabbladen, net als bij een categorie:

TabbladWat het beheert
Nieuwe tag Titel, alias, bovenliggende tag, status, toegang, taal, beschrijving.
Afbeeldingen en URL’s Een pictogramafbeelding, een afbeelding op volledig formaat en externe links voor de tagpagina.
Publiceren Aanmaak- en wijzigingsdatums, auteur, meta-informatie.
Opties en Metadata Weergaveopties voor de tagpagina en SEO-metadata.

2.4 Belangrijke velden uitgelegd

  • Bovenliggend: laat op de standaardwortel staan voor een platte tag, of kies een andere tag om hierin te nesten.
  • Status: Gepubliceerd, Gedepubliceerd, Gearchiveerd of Verplaatst naar prullenbak. Alleen gepubliceerde tags verschijnen op de site.
  • Toegang: Publiek, Geregistreerd, Speciaal of een aangepast niveau. Een tag die de bezoeker niet mag zien, blijft voor hem verborgen.
  • Taal: koppel de tag aan één sitetaal, of laat deze op “Alle” staan.
  • Beschrijving: wordt bovenaan de tagpagina in de frontend getoond.
Naar boven

3. Geneste tags

3.1 Tags kunnen een boomstructuur vormen

De meeste sites gebruiken een platte lijst met tags, maar Joomla laat je tags ook in andere tags nesten. Het resultaat is een boomstructuur, net als bij categorieën:

ROOT
├── joomla
│   ├── extensions
│   └── templates
└── linux

Achter de schermen slaat Joomla deze boom op met hetzelfde Nested Set Model dat het voor categorieën gebruikt. Elke tag heeft een lft-waarde (left) en een rgt-waarde (right), plus een level en een path.

3.2 Hoe lft en rgt werken

De regel is dezelfde als bij categorieën: een bovenliggend item omsluit altijd zijn onderliggende items. De lft van de ouder is kleiner dan de lft van elk kind, en de rgt is groter dan de rgt van elk kind. Zo kan Joomla een hele tak met tags ophalen met één snelle query, zonder recursie.

3.3 De knop Rebuild

Het tagoverzicht bevat een knop Rebuild in de toolbar. Deze herberekent lft, rgt, level en path. Gebruik hem na een migratie, na directe databasewijzigingen of wanneer de volgorde van de tags er verkeerd uitziet.

3.4 Moet je tags nesten?

Houd tags in de praktijk plat. Tags nesten is de extra complexiteit zelden waard, omdat tags bedoeld zijn als overstijgend en licht. Als je merkt dat je een diepe tagboom bouwt, hoort die structuur meestal thuis in je categorieën.

Naar boven

4. Je content van tags voorzien

4.1 Het veld Tags

Je voorziet een item van tags vanuit het eigen bewerkscherm van dat item. Open voor een artikel het artikel en zoek het veld Tags in de rechterkolom:

Inhoud → Artikelen → (open een artikel) → Tags

Begin met typen. Joomla stelt bestaande tags voor terwijl je typt. Kies er een, of typ een nieuw woord en druk op Enter om het in één stap aan te maken en te koppelen. Je kunt zoveel tags aan een item toevoegen als je wilt.

4.2 Overal hetzelfde veld

Het veld Tags ziet er hetzelfde uit en gedraagt zich hetzelfde op artikelen, contactpersonen, nieuwsfeeds en categorieën. Elke extensie die meedoet aan tagging toont exact dezelfde besturing. Die consistentie is een van de stille sterke punten van het systeem.

4.3 Tags in batch toekennen

In het artikeloverzicht kun je veel items tegelijk van tags voorzien. Selecteer meerdere artikelen, open het Batch-hulpmiddel onderaan de lijst, kies een tag en pas toe. Dit is de snelste manier om een onderwerpstag aan bestaande content toe te voegen zonder elk item te bewerken.

4.4 Wat er gebeurt als je opslaat

Wanneer je een item met tags opslaat, bewaart Joomla de tags niet in de rij van het artikel zelf. In plaats daarvan schrijft het één rij per tag naar een aparte koppeltabel die het item aan elke tag verbindt. We bekijken die tabel in het ontwikkelaarsgedeelte.

Naar boven

5. Tags in de frontend

5.1 Menu-itemtypes

Joomla levert drie menu-itemtypes voor tags. Maak ze aan via Menu’s → (je menu) → Nieuw en kies de groep Tags:

Menu-itemtypeWat het toont
Tagged Items Alle items die een of meer gekozen tags dragen, met volledige layoutopties.
Compact List of Tagged Items Een eenvoudige, compacte lijst met items voor de gekozen tags.
List All Tags Een pagina met alle gepubliceerde tags, zodat bezoekers door onderwerpen kunnen bladeren.

Het type “Tagged Items” kan meerdere tags combineren. Je kunt kiezen of een item aan alle geselecteerde tags moet voldoen of aan een willekeurige ervan.

5.2 De twee tag-modules

Twee coremodules tonen tags in je templateposities:

ModuleDoel
Popular Tags (mod_tags_popular) Toont de meest gebruikte tags, optioneel als tagwolk waarbij de grootte het gebruik weergeeft.
Similar Tags (mod_tags_similar) Toont op een detailpagina andere items die dezelfde tags delen.

Similar Tags is de eenvoudige manier om een blok “Gerelateerde content” toe te voegen. Het vereist geen handmatige koppelingen: het vindt simpelweg items die tags delen met de pagina waarop de bezoeker zich bevindt.

5.3 URL’s en routing

Met SEF-URL’s ingeschakeld krijgt een tagpagina een nette URL. Het mooiste resultaat krijg je met een menu-item dat naar de tag wijst:

/topics/joomla              → menu-item "Tagged Items" voor de tag joomla
/component/tags/tag/5-joomla → dezelfde tag zonder eigen menu-item

Zonder menu-item valt Joomla terug op de generieke route /component/tags/, die werkt maar minder netjes is. Geef tags waarmee je in zoekmachines wilt scoren een echt menu-item.

Naar boven

6. Tags versus categorieën

Tags en categorieën lijken in de backend op elkaar, maar lossen verschillende problemen op. De verkeerde kiezen is de meest gemaakte taggingfout.

Gebruik een categorie wanneer…Gebruik een tag wanneer…
Een item hoort op één plek thuis. Een item heeft met veel onderwerpen te maken.
Hiërarchie en structuur zijn belangrijk. Je wilt platte, overstijgende labels.
Je hebt ACL of een workflow nodig. Je wilt ontdekken en filteren.
De URL moet de structuur weerspiegelen. De URL is bijzaak.

Een korte manier om het verschil te onthouden:

Categorieën bepalen wat content is.
Tags beschrijven waar content over gaat.

De meeste content heeft precies één categorie en een handvol tags nodig. Als je veel categorieën per item nodig denkt te hebben, wilde je waarschijnlijk tags. Als je voor bijna elk artikel een gloednieuwe tag aanmaakt, wilde je waarschijnlijk een categorie.

Naar boven

7. Praktijkvoorbeelden van tags

De juiste set tags hangt af van het type website. Het doel is altijd hetzelfde: een kleine, herbruikbare woordenschat die beschrijft waar content over gaat, naast een nette categoriestructuur. Hier zijn vier veelvoorkomende patronen.

7.1 Kennisbank of supportsite

Artikelen staan in productcategorieën, terwijl tags beschrijven wat voor soort hulp ze bieden:

installation
configuration
security
performance
troubleshooting

Een bezoeker die een installatiehandleiding leest, kan dan meteen doorspringen naar elk ander artikel met de tag “installation”, zelfs bij verschillende producten.

7.2 Productdocumentatie

Categorieën volgen de productonderdelen; tags markeren het niveau van de lezer en het onderwerp:

beginner
advanced
api
migration

Zo kun je een pagina “Tagged Items” bouwen voor alles met de tag api, ongeacht in welk hoofdstuk van de handleiding het staat.

7.3 Nieuws- of communitysite

Categorieën splitsen de secties (Nieuws, Blog, Evenementen); tags dragen de doorlopende thema’s:

joomla-6
extensions
security
accessibility

De module Similar Tags maakt dan van elk artikel automatisch een klein knooppunt van gerelateerde verhalen.

7.4 Bedrijfswebsite of webshop

Op een bedrijfssite beschrijven tags communicatiethema’s; in een webshop lopen ze dwars door de productcategorieën heen:

Type siteVoorbeeldtags
Bedrijfssite press, events, sustainability, careers
Webshop sale, new-arrival, bestseller, clearance

De kerngedachte is in alle gevallen hetzelfde: de categorieboom weerspiegelt de sitestructuur, en een korte lijst met tags weerspiegelt de thema’s die daar dwars doorheen lopen. Houd de taglijst klein genoeg om hem uit je hoofd te kennen.

Naar boven

8. Onder de motorkap (ontwikkelaarsperspectief)

8.1 Twee kerntabellen

Tagging gebruikt twee tabellen. De eerste bewaart de tags zelf:

#__tags
 id, parent_id, lft, rgt, level, path
 title, alias, note, description
 published, access, language
 params, metadesc, metakey, metadata
 images, urls, hits, version
 publish_up, publish_down

Je ziet dat deze bijna identiek is aan #__categories: dezelfde nested-set-kolommen, dezelfde publicatie- en metadatavelden. Tags zijn in feite een tweede taxonomieboom.

8.2 De koppeltabel

De koppeling tussen een item en zijn tags staat in een aparte tabel:

#__contentitem_tag_map
 type_alias        bijv. com_content.article
 core_content_id   PK uit #__ucm_content
 content_item_id   PK uit de echte contenttabel (bijv. #__content)
 tag_id            PK uit #__tags
 tag_date          wanneer de koppeling is opgeslagen
 type_id           PK uit #__content_types

Elk item met tags levert één rij per tag op. Dit is een klassiek many-to-many-ontwerp: één item koppelt aan veel tags, en één tag koppelt aan veel items.

8.3 Tags opvragen met SQL

Zodra je de twee tabellen kent, zijn directe query’s kort. Toon elke gepubliceerde tag:

SELECT id, title
  FROM #__tags
 WHERE published = 1
 ORDER BY title;

Vind de tags die aan één artikel (id 101) hangen door de koppeltabel aan de tagtabel te joinen:

SELECT t.id, t.title
  FROM #__tags AS t
  INNER JOIN #__contentitem_tag_map AS m
     ON m.tag_id = t.id
 WHERE m.type_alias = 'com_content.article'
   AND m.content_item_id = 101;

Tel hoeveel items elke tag dragen, meest gebruikt eerst:

SELECT m.tag_id, COUNT(*) AS total
  FROM #__contentitem_tag_map AS m
 GROUP BY m.tag_id
 ORDER BY total DESC;

Filter altijd op type_alias én op content_item_id. Het id 101 is alleen uniek binnen een contenttype, dus een artikel en een contactpersoon kunnen hetzelfde numerieke id delen.

8.4 De UCM-laag

Tags steunen op Joomla’s Unified Content Model (UCM). Dit is de abstractie waardoor één taggingsysteem werkt voor artikelen, contactpersonen en maatwerkitems. Drie tabellen ondersteunen dit:

TabelRol
#__content_types Definieert elk taggbaar type en hoe de echte tabel ervan gelezen wordt.
#__ucm_content Een genormaliseerde kopie van kernvelden (titel, alias, status) voor elk item met tags.
#__ucm_base Een opzoektabel die UCM-id’s terugkoppelt aan hun contenttype en item.

Daarom heeft de koppeltabel zowel een core_content_id (UCM) als een content_item_id (de echte rij). UCM geeft Joomla één consistente manier om over “een item” te praten, ongeacht welke component de eigenaar is.

8.5 De Tags-API in PHP

Je raakt de tabellen zelden rechtstreeks aan. De klasse TagsHelper doet het werk:

use Joomla\CMS\Helper\TagsHelper;

$tagsHelper = new TagsHelper();

// Alle tag-id's van een bepaald artikel:
$tagIds = $tagsHelper->getTagIds(42, 'com_content.article');

// Volledige tag-objecten (titel, alias, enz.) voor een item:
$itemTags = $tagsHelper->getItemTags('com_content.article', 42);

// Alle items die een set tags dragen:
$items = $tagsHelper->getTagItemsQuery([5, 9]);

8.6 Een maatwerkcomponent taggbaar maken

Om tagging aan je eigen component toe te voegen, bouw je niets opnieuw. Je doet mee (opt-in):

  1. Registreer je type in #__content_types (alias, tabelkoppeling, routehelper).
  2. Laat je Table-klasse TaggableTableInterface implementeren en gebruik TaggableTableTrait.
  3. Voeg een veld tags van type="tag" toe aan je bewerkformulier.

De trait koppelt een observer in die de koppelrijen automatisch wegschrijft telkens wanneer je een item opslaat of verwijdert. Je component krijgt dan het veld Tags, tagpagina’s in de frontend en de modules gratis.

8.7 Events en observers

Tagging verloopt via een tabel-observer in plaats van via één specifiek event. Wanneer een taggbaar item wordt opgeslagen, treedt de observer in werking naast de normale contentevents. Plugins kunnen reageren met de standaard contentevents door een tagcontext te gebruiken:

EventWanneer het afgaat
onContentAfterSave (context com_tags.tag) Nadat een tag zelf is opgeslagen.
onContentBeforeDelete (context com_tags.tag) Voordat een tag wordt verwijderd.
Tabel-observer op een taggbaar item Schrijft of verwijdert rijen in #__contentitem_tag_map bij opslaan en verwijderen.
Naar boven

9. Web Services API

9.1 Tags reizen mee met hun items

Joomla 6 levert geen losstaand openbaar REST-endpoint dat alle tags opsomt. In plaats daarvan verschijnen tags binnen de responses van content die ze ondersteunt. Wanneer je een artikel via de API opvraagt, komen de tags mee in de relaties:

curl -H "X-Joomla-Token: <token>" \
  https://example.test/api/index.php/v1/content/articles/42

De JSON-response bevat een tags-relatie met de tag-id’s die aan dat artikel hangen.

9.2 Tags toekennen via de API

Om een item programmatisch van tags te voorzien, stuur je de tag-id’s mee bij het aanmaken of bijwerken. Voor een artikel:

curl -X PATCH \
  -H "X-Joomla-Token: <token>" \
  -H "Content-Type: application/json" \
  -d '{"tags": ["5", "9"]}' \
  https://example.test/api/index.php/v1/content/articles/42

Joomla werkt de koppeltabel zo bij dat deze exact overeenkomt met de id’s die je stuurt. Een lege array verwijdert alle tags van het item.

9.3 Wanneer je een tag-endpoint nodig hebt

Als je project echt tags via REST moet opsommen of beheren, ontsluit je ze via een kleine eigen web-services-plugin of een API-controller in een component. Omdat de data al in #__tags staat en TagsHelper de query’s afhandelt, is zo’n endpoint snel te schrijven.

Naar boven

10. SEO en metadata

10.1 Tagpagina’s zijn echte pagina’s

Elke gepubliceerde tag heeft een eigen frontendpagina met de items die hem dragen. Zoekmachines kunnen deze pagina’s indexeren, wat tags tot een echte SEO-troef maakt, of tot een echte SEO-last als je ze verwaarloost.

10.2 Geef belangrijke tags metadata

Op het tabblad Opties en Metadata van de tag kun je een metabeschrijving en een paginakop instellen. Een tagpagina met een duidelijke titel en beschrijving, plus een geschreven beschrijving bovenaan, kan scoren als onderwerpsknooppunt. Een lege tagpagina met alleen een lijst links doet dat zelden.

10.3 Vermijd dunne en dubbele tagpagina’s

Honderden tags die elk naar één of twee items wijzen, leveren veel dunne pagina’s op. Die kunnen je site verwateren in de zoekresultaten. Houd het aantal tags klein en zorg dat elke tag een betekenisvolle hoeveelheid content groepeert.

10.4 Stuur indexering aan

Als je niet wilt dat tagpagina’s worden geïndexeerd, zet je de metadatawaarde robots op noindex, follow op de tag, of regel je dit globaal in je template. Zo behoud je het ontdekkingsvoordeel voor bezoekers en houd je dunne pagina’s uit de index.

Naar boven

11. Veelgemaakte fouten en valkuilen

11.1 Wildgroei aan tags

Symptoom: honderden tags, veel maar één keer gebruikt, met bijna-duplicaten zoals seo, SEO en search-engine-optimization.

Oplossing: spreek een korte, vaste tagwoordenschat af voordat je begint. Beschouw het direct aanmaken van tags als gemak, niet als vrijbrief. Voeg duplicaten samen door items opnieuw te taggen met de overblijvende tag en de rest te verwijderen.

11.2 Tags gebruiken in plaats van categorieën

Symptoom: elk artikel heeft tien tags en staat in één generieke categorie. Navigatie en URL’s voelen vlak aan.

Oplossing: breng structurele indelingen onder in categorieën en houd tags voor echte overstijgende thema’s. Eén duidelijke categorie plus een paar tags is beter dan geen categorie en een wolk aan tags.

11.3 Het menu-item vergeten

Symptoom: tagpagina’s werken, maar gebruiken lelijke /component/tags/-URL’s en scoren slecht.

Oplossing: maak voor elke tag die ertoe doet een menu-item “Tagged Items” aan, zodat deze een nette, stabiele URL en goede paginametadata krijgt.

11.4 Verschil in hoofdletters en spelling

Symptoom: bezoekers komen op een tagpagina die minder items toont dan verwacht, omdat content over twee spellingen is verdeeld.

Oplossing: houd tags in kleine letters en consistent. Kies tussen enkelvoud of meervoud (bijvoorbeeld tutorial, niet een mix van tutorial en tutorials) en houd je daaraan.

11.5 Toegang op tags negeren

Symptoom: een tagpagina toont links naar items die de bezoeker niet kan openen.

Oplossing: onthoud dat de toegang van een tag en van een item los van elkaar staan. Stel de tagtoegang af op het publiek en vertrouw voor de uiteindelijke controle op de itemtoegang.

Naar boven

12. Best practices

Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:

  • Gebruik categorieën voor structuur en tags voor onderwerpen. Ze zijn niet uitwisselbaar.
  • Bepaal vooraf een kleine, vaste tagwoordenschat en hergebruik die.
  • Houd tags plat, in kleine letters en consistent gespeld.
  • Geef belangrijke tags een echt menu-item, een beschrijving en metadata.
  • Gebruik de module Similar Tags voor directe “gerelateerde content” zonder handmatig te koppelen.
  • Ruim eenmalige tags op zodat je geen dunne pagina’s met weinig waarde maakt.
  • Doe in maatwerkextensies mee via TaggableTableInterface in plaats van tagging opnieuw uit te vinden.
Naar boven

13. In het kort

TAG MAKEN    Componenten → Tags → Nieuw
ITEM TAGGEN  Open het item → veld Tags → typ & Enter
BATCH-TAG    Artikellijst → selecteer → Batch → kies tag
NESTEN       Stel het veld "Bovenliggend" in (spaarzaam gebruiken)
REBUILD      Componenten → Tags → Rebuild (na migratie/DB-edits)
FRONTPAGINA  Menu-itemtype "Tagged Items"
ALLE TAGS    Menu-itemtype "List All Tags"
GERELATEERD  Module: Similar Tags (mod_tags_similar)
WOLK         Module: Popular Tags (mod_tags_popular)
TABELLEN     #__tags  +  #__contentitem_tag_map  (+ UCM)
SQL-JOIN     map.tag_id = tags.id, filter op type_alias
API (PHP)    TagsHelper->getItemTags('com_content.article', $id)
API (REST)   tags komen mee in /v1/content/articles-responses
SEO          Voeg metadata + nette menu-URL toe aan kerntags
Naar boven

14. Samenvatting

Tags zijn veel meer dan een tekstveld. Ze vormen een tweede taxonomie die content over de hele site met elkaar verbindt:

  • Ontdekking: bezoekers volgen onderwerpen dwars door categorieën heen.
  • Verbanden: de module Similar Tags bouwt automatisch blokken met gerelateerde content.
  • Flexibiliteit: één item kan meerdere onderwerpen tegelijk dragen.
  • Bereik: hetzelfde systeem werkt voor artikelen, contactpersonen, nieuwsfeeds en maatwerkextensies.
  • SEO: goed beheerde tagpagina’s worden onderwerpsknooppunten; verwaarloosde worden dunne pagina’s.
  • Ontwikkelaarsintegratie: een gedeelde API en een eenvoudige opt-in-interface.

Met discipline gebruikt maken tags een Joomla-site makkelijker te verkennen en makkelijker te laten groeien. Slordig gebruikt leveren ze wildgroei, dunne pagina’s en verwarring op. Het verschil zit bijna altijd in een kleine, consistente woordenschat en een paar duidelijke menu-items.

Of je nu een nieuwe Joomla-site plant, een uit de hand gelopen taglijst opschoont of tagging aan een maatwerkextensie toevoegt: het loont om de taxonomie vroeg goed te krijgen. Tags zijn het stille web van verbindingen dat je content bijeenhoudt.

Naar boven
Tags in Joomla
Peter Martin

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