Kruimelpad in Joomla
Het kruimelpad ("breadcrumbs") lijkt op het eerste gezicht het eenvoudigste onderdeel van een Joomla-pagina: een klein spoor van links bovenaan met de tekst Home / Nieuws / Joomla 6 uitgebracht. Toch is dat kleine spoor opgebouwd uit de menustructuur, het actieve menu-item en soms de component die je op dat moment bekijkt. Als je eenmaal begrijpt hoe Joomla dit samenstelt, kun je een defect kruimelpad repareren, ze correct opmaken en er echte SEO-waarde uit halen.
In dit artikel wordt uitgelegd hoe het kruimelpad ("breadcrumbs") in Joomla precies werkt. Het behandelt de basisprincipes voor website eigenaren en redacteuren, de praktische instellingen voor beheerders en de technische details voor ontwikkelaars. Je leert wat het ‘Pathway’ is, hoe de Breadcrumbs-module dit omzet in een zichtbaar spoor, hoe componenten hun eigen stappen toevoegen, hoe het spoor wordt omgezet in gestructureerde gegevens voor zoekmachines en hoe je veelgemaakte fouten kunt vermijden.
Breadcrumbs zijn geen instelling die je invoert. Ze geven in realtime weer waar de huidige pagina zich in je menustructuur bevindt.
Het doel is simpel: je helpen breadcrumbs goed genoeg te begrijpen om ze met vertrouwen te kunnen gebruiken.
1. De basis
1.1 Wat is een breadcrumb-spoor?
Een breadcrumb-spoor is een rij links die het pad toont van de homepage tot aan de pagina die een bezoeker bekijkt. Het ziet er meestal zo uit:
Home → Producten → Laptops → ThinkPad X1
Elke stap behalve de laatste is een link. De laatste stap is de huidige pagina en is daarom normaal gesproken platte tekst. De naam komt uit het sprookje: een spoor van kruimels dat de weg terug wijst.
1.2 Waarom breadcrumbs belangrijk zijn
Breadcrumbs doen drie nuttige dingen tegelijk:
- Orientatie: bezoekers zien waar ze zich in de sitestructuur bevinden.
- Navigatie: bezoekers kunnen met een klik terug naar elk bovenliggend niveau.
- SEO: zoekmachines lezen het spoor, tonen het in de resultaten en begrijpen je sitehierarchie.
1.3 Waar komen breadcrumbs in Joomla vandaan?
Dit is het deel dat nieuwkomers missen. In Joomla schrijf je het spoor niet met de hand. Joomla houdt een intern object bij dat het Pathway heet. Het Pathway wordt automatisch gevuld:
- Het actieve menu-item en de bovenliggende menu-items vormen de basis van het spoor.
- De component die je bekijkt (bijvoorbeeld een artikel) kan meer stappen toevoegen, zoals de categorie en de artikeltitel.
Een aparte module, mod_breadcrumbs, leest het Pathway en toont het als een zichtbaar spoor. Geen module betekent geen zichtbare breadcrumbs, ook al bestaat het Pathway nog steeds.
Het Pathway is de data. De Breadcrumbs-module is de weergave.
1.4 De anatomie van een breadcrumb-spoor
Een weergegeven spoor in Joomla 6 heeft deze onderdelen:
| Onderdeel | Wat het is |
|---|---|
| Label "Je bent hier:" | Een optioneel voorvoegsel voor het spoor. |
| Home-kruimel | Een optionele eerste link naar de homepage van de site. |
| Tussenliggende kruimels | Een link per bovenliggend menu-item of categorie, elk klikbaar. |
| Laatste kruimel | De huidige pagina, getoond als platte tekst (optioneel). |
2. Breadcrumbs op je site tonen
2.1 Publiceer de Breadcrumbs-module
Breadcrumbs verschijnen pas als je de Breadcrumbs-module publiceert. Om hem toe te voegen ga je naar:
Systeem → Sitemodules → Nieuw → Breadcrumbs
Stel daarna drie dingen in:
- Titel: bijvoorbeeld "Breadcrumbs". Je kunt de titel op de frontend verbergen.
- Positie: kies een templatepositie boven de inhoud, zoals
breadcrumbsin het standaard Cassiopeia-template. - Status: zet deze op Gepubliceerd.
2.2 Kies waar hij verschijnt
Net als elke module heeft de Breadcrumbs-module een tabblad Menutoewijzing. Daar bepaal je waar het spoor verschijnt:
- Op alle pagina's (de gebruikelijke keuze).
- Op alle pagina's behalve de homepage (heel gebruikelijk, want een spoor op de homepage heeft geen zin).
- Alleen op geselecteerde pagina's.
Een nette standaard is "Op alle pagina's" gecombineerd met het verbergen van de Home-kruimel, of "Alle pagina's behalve Home".
2.3 Controleer of de templatepositie bestaat
Als je de module publiceert maar niets ziet, bestaat de gekozen positie misschien niet in je template. Je kunt posities bekijken door Modulepositie voorbeeld in te schakelen bij de Templates opties en daarna ?tp=1 aan een frontend-URL toe te voegen (spoiler: je kunt er alles achter typen behalve 0, ?tp=peter werkt ook!). Het Cassiopeia-template heeft een speciale breadcrumbs-positie voor precies dit doel.
3. De module-opties uitgelegd
De Breadcrumbs-module heeft een kleine maar belangrijke set opties. Elke optie verwijst rechtstreeks naar een parameter in de moduleconfiguratie.
3.1 Basisopties
| Optie | Parameter | Wat het doet |
|---|---|---|
| "Je bent hier" | showHere |
Toont het label "Je bent hier:" voor het spoor. Als dit uit staat, toont Joomla in plaats daarvan een klein locatie-icoon. |
| Home | showHome |
Voegt de Home-link toe als eerste kruimel. |
| Tekst voor Home-item | homeText |
Overschrijft het woord "Home". Laat het leeg om de standaard uit het taalbestand te gebruiken. |
| Laatste | showLast |
Toont de huidige pagina als laatste kruimel. Zet het uit om het spoor bij de bovenliggende pagina te laten eindigen. |
3.2 Geavanceerde opties
| Optie | Parameter | Wat het doet |
|---|---|---|
| Alternatieve layout | layout |
Kiest een layoutbestand, inclusief een uit een template-override. |
| Module class suffix | moduleclass_sfx |
Voegt een CSS-class toe zodat je deze instantie kunt stylen. |
| Caching | cache |
Globale caching gebruiken of geen. |
| Cachetijd | cache_time |
Hoe lang, in minuten, de gecachte uitvoer bewaard blijft. |
Er is ook een verborgen parameter, cachemode, vast ingesteld op itemid. Hierdoor cachet Joomla een aparte versie van het spoor per menu-item, wat het juiste gedrag is omdat het spoor per pagina verschilt.
3.3 De "Laatste tonen"-truc
Veel ontwerpers zetten showLast uit. De huidige pagina heeft al een <h1>-kop, dus het herhalen van de titel in het spoor kan overbodig aanvoelen. Uitzetten laat het spoor bij de laatste bovenliggende pagina eindigen. Het is een kwestie van smaak, maar het houdt het spoor korter.
4. Hoe het spoor wordt opgebouwd: het Pathway
4.1 Het Pathway-object
Achter elke frontend-pagina houdt Joomla een Pathway-object bij. Het is een eenvoudige lijst. Elk item heeft twee velden:
name -- het zichtbare label van de kruimel
link -- de URL waar de kruimel naar verwijst (leeg voor de huidige pagina)
De class staat in Joomla\CMS\Pathway\Pathway, en de frontend gebruikt de subklasse SitePathway. Je bereikt de actieve instantie vanuit de applicatie:
$pathway = $app->getPathway();
4.2 De menustructuur vult de basis
Wanneer een pagina laadt, kijkt Joomla naar het actieve menu-item. Elk menu-item kent zijn voorouders via een tree-eigenschap: de keten van bovenliggende items van boven tot aan zichzelf. SitePathway loopt door die boom en voegt een kruimel per bovenliggend menu-item toe.
Een belangrijk detail: als het actieve item de homepage is, voegt Joomla niets toe. De homepage maakt nooit deel uit van het spoor zelf, omdat de optionele Home-kruimel dat al dekt.
4.3 Bijzondere menu-itemtypen
Niet elk menu-item wordt een klikbare kruimel. SitePathway behandelt sommige typen anders:
| Menu-itemtype | Gedrag van de kruimel |
|---|---|
| Scheidingsteken | Getoond als label, geen link. |
| Kop | Getoond als label, geen link. |
| URL | Gelinkt. Joomla voegt de Itemid toe voor interne links. |
| Alias | Gelinkt naar het gealiaste item via de parameter aliasoptions. |
| Component | Gelinkt, met de Itemid erachter. |
Daarom verschijnt een Kop die als dropdown-ouder wordt gebruikt in het spoor als platte tekst: hij heeft geen echte pagina om naar te linken.
Naar boven5. Hoe componenten het spoor uitbreiden
5.1 De menustructuur is slechts het begin
De menustructuur geeft het basisspoor, maar stopt bij het menu-item. Een menu-item van het type Enkel artikel weet bijvoorbeeld niet welk artikel je opende vanuit een categorieblog. Daarom voegen componenten tijdens de uitvoering hun eigen kruimels toe.
5.2 Artikelen voegen categorie- en titelkruimels toe
Wanneer je een artikel opent dat niet rechtstreeks aan een eigen menu-item is gekoppeld, bouwt de Artikelen-component (com_content) de ontbrekende stappen op. Hij begint bij het artikel, loopt omhoog door de categorieboom tot de categorie van het menu-item en voegt elk niveau toe. In code doet de Artikel-view dit:
$pathway = $app->getPathway();
$path = [['title' => $this->item->title, 'link' => '']];
$category = Categories::getInstance('Content')->get($this->item->catid);
while ($category !== null && $category->id != $id) {
$path[] = ['title' => $category->title, 'link' => RouteHelper::getCategoryRoute($category->id)];
$category = $category->getParent();
}
$path = array_reverse($path);
foreach ($path as $item) {
$pathway->addItem($item['title'], $item['link']);
}
Het resultaat is een spoor als Home → Nieuws → Producten → Laptops, ook al was alleen "Nieuws" een echt menu-item.
5.3 Waarom dit belangrijk is voor je inhoud
Omdat componenten het gat opvullen van het menu-item tot aan de inhoud, hangt de kwaliteit van je spoor van twee dingen af:
- Een nette categorieboom, want artikel-breadcrumbs volgen de bovenliggende categorieen.
- Een juiste Itemid, want het beginpunt (het menu-item) bepaalt waar het componentspoor begint.
Als Joomla de verkeerde Itemid raadt, kan het spoor in de verkeerde tak beginnen. Dit is veruit de meest voorkomende oorzaak van "rare breadcrumbs".
6. Breadcrumbs en de Itemid
6.1 De Itemid bepaalt het beginpunt
Elke frontend-pagina is via de parameter Itemid aan een menu-item gekoppeld. Het Pathway gebruikt het actieve menu-item om zijn basis op te bouwen, dus de Itemid bepaalt rechtstreeks:
- Welke bovenliggende menu-items als kruimels verschijnen.
- Waar het componentspoor aanhaakt.
- Of de Home-kruimel wordt onderdrukt (op het home-item zelf).
6.2 Wat er misgaat zonder een duidelijke Itemid
Als een link naar een artikel geen Itemid heeft, raadt de router van Joomla er een. Een verkeerde gok geeft:
- Een spoor dat in de verkeerde menutak begint.
- Ontbrekende of dubbele kruimels.
- Een ander spoor voor hetzelfde artikel, bereikt vanaf twee plekken.
6.3 Hoe je het inspecteert
Voordat SEF-herschrijving hem verbergt, is de Itemid het laatste getal in de query string:
index.php?option=com_content&view=article&id=42&Itemid=123
Als een breadcrumb-spoor er verkeerd uitziet, controleer dan eerst de Itemid. De oplossing is meestal om naar de inhoud te linken via het juiste menu-item, of om een eigen menu-item voor die pagina te maken.
7. Van URL naar breadcrumb: de volledige pijplijn
7.1 De aanvraag stap voor stap
Een breadcrumb-spoor is de laatste stap van een langer proces. Wanneer een bezoeker een pagina opent, doorloopt Joomla ongeveer deze stappen:
- De SiteRouter ontvangt de aangevraagde URL, bijvoorbeeld
/nieuws/producten/laptops. - De router ontleedt de URL en bepaalt de
Itemid, die het actieve menu-item instelt. SitePathwaybouwt het basisspoor door detreevan bovenliggende items van het actieve menu-item te doorlopen, waarbij het home-item wordt overgeslagen.- De bijbehorende component draait. Indien nodig roept hij
addItem()aan om diepere kruimels toe te voegen, zoals de categorieketen en de artikeltitel. - mod_breadcrumbs vraagt zijn helper om de voltooide lijst en plaatst, indien ingeschakeld, de Home-kruimel ervoor.
- De layout rendert het spoor als een geordende lijst en geeft de schema.org gestructureerde data uit.
Daarom hangen breadcrumbs zo sterk af van routing en menuconfiguratie. De module zelf doet bijna niets: tegen de tijd dat hij draait, ligt het spoor al vast.
7.2 De volgorde in een oogopslag
Dezelfde stroom als diagram, van de browseraanvraag tot aan de HTML:
Browseraanvraag
↓
SiteRouter bepaalt de Itemid en het actieve menu-item
↓
SitePathway voegt de bovenliggende menu-items als kruimels toe
↓
Component addItem() voor categorie- en artikelkruimels
↓
mod_breadcrumbs leest het Pathway, plaatst de Home-kruimel ervoor
↓
Layout (default) rendert de lijst en de schema.org JSON-LD
↓
HTML in de pagina
7.3 Waarom de volgorde belangrijk is
Elke stap kan alleen werken met wat de eerdere stappen hebben opgeleverd. Een verkeerde Itemid in stap 2 stuurt de rest van de keten de verkeerde tak in. Een component die in stap 4 vergeet addItem() aan te roepen, laat de diepe kruimels weg. Begin bij het oplossen van problemen bovenaan deze lijst en werk omlaag: eerst de router, als laatste de module.
8. Onder de motorkap (ontwikkelaarsweergave)
8.1 De Pathway-API
Het Pathway biedt een kleine, stabiele API. Je kunt het spoor lezen of wijzigen vanuit een plugin of een eigen component:
use Joomla\CMS\Factory;
$app = Factory::getApplication();
$pathway = $app->getPathway();
// Lezen
$items = $pathway->getPathway(); // array van objecten met name + link
$names = $pathway->getPathwayNames(); // array met alleen de namen
// Schrijven
$pathway->addItem('Downloads', 'index.php?option=com_downloads&view=list&Itemid=55');
$pathway->setItemName(2, 'Hernoemde kruimel');
$pathway->setPathway($newArrayOfItems); // vervang het hele spoor
Elk item is een eenvoudige stdClass met een name en een link. Een lege link betekent dat de kruimel als tekst wordt weergegeven, niet als hyperlink.
8.2 Waar SitePathway de basis opbouwt
De frontend-subklasse Joomla\CMS\Pathway\SitePathway bouwt het basisspoor op in zijn constructor. Hij leest het actieve menu-item, slaat het home-item over en doorloopt de tree-eigenschap, waarbij hij per itemtype een link kiest (scheidingsteken, kop, url, alias of component). Alles daarna wordt door componenten toegevoegd via addItem().
8.3 Een pluginvoorbeeld
Een Systeem-plugin kan het spoor laat in de aanvraag aanpassen, bijvoorbeeld op het event onAfterDispatch of onAfterRoute:
public function onAfterRoute(): void
{
$app = $this->getApplication();
if ($app->isClient('site')) {
$pathway = $app->getPathway();
$pathway->addItem('Speciale aanbieding', '');
}
}
Zo voegen extensies van derden hun eigen kruimels toe zonder kernbestanden aan te raken.
8.4 Er is geen breadcrumbs-tabel
Het spoor wordt nooit opgeslagen. Het wordt bij elke aanvraag opnieuw opgebouwd uit de live menustructuur en de huidige inhoud. Breadcrumbs hebben daarom geen eigen databasetabel. In plaats daarvan leunt de module op een handvol kerntabellen. De volgende paragrafen noemen de tabellen die ertoe doen.
8.5 De tabel #__menu
Dit is de belangrijkste tabel, want hier staat de menuboom die de basis van elk spoor vormt. De relevante kolommen zijn:
id -- menu-item-id, gebruikt als de Itemid
parent_id -- het bovenliggende menu-item
level -- diepte in de boom
lft, rgt -- grenzen van het Nested Set Model
path -- volledig SEF-pad (ouder/kind/kleinkind)
alias -- het URL-segment
type -- component | url | alias | separator | heading
component_id -- de gekoppelde component
link -- de onderliggende index.php?option=...-query
De kolommen lft en rgt implementeren het Nested Set Model. Het bereik van een ouder omvat altijd zijn kinderen, zodat Joomla een hele tak voorouders in een query kan ophalen, zonder recursie. Dat maakt het opbouwen van het spoor uit de menuboom snel.
8.6 De tabellen #__modules en #__modules_menu
De Breadcrumbs-module zelf is een gewone module, dus zijn configuratie staat in #__modules:
| Kolom | Wat het bevat |
|---|---|
title |
De moduletitel. |
position |
De templatepositie waarin hij rendert. |
params |
Een JSON-blob met de opties (showHome, showLast, enzovoort). |
published, access, language |
Status, toegangsniveau en taal. |
De bijbehorende tabel #__modules_menu koppelt elke module aan de menu-items waarop hij verschijnt. Voor breadcrumbs is dit wat je keuze bij Menutoewijzing wegschrijft:
moduleid -- welke module
menuid -- welk menu-item (Itemid)
positief = "toon op dit item"
negatief = "toon op alle behalve deze items"
0 = "alle pagina's"
Dus "Alle pagina's behalve Home" wordt hier opgeslagen als een negatieve rij voor het home-menu-item.
8.7 Ondersteunende tabellen
#__extensions: registreertmod_breadcrumbsals een geinstalleerde extensie, met zijn ingeschakelde status en standaardparameters.#__assets: bevat de ACL-records (de toegangsregels) die overal in Joomla worden gebruikt, inclusief het toegangsniveau van de module.
Geen van deze slaat het spoor zelf op. Samen beschrijven ze de menustructuur, de module en wie hem mag zien, en Joomla bouwt de breadcrumbs er bij elke aanvraag uit op.
Naar boven9. De module-helper en het renderen
9.1 Van Pathway naar HTML
De Breadcrumbs-module zet het Pathway om in HTML in drie stappen:
- De module-Dispatcher vraagt de helper om de lijst met kruimels.
- De BreadcrumbsHelper leest het Pathway en plaatst, als
showHomeaan staat, de Home-kruimel ervoor. - Het layoutbestand (
tmpl/default.php) rendert de lijst als een geordende lijst met links.
9.2 De moderne helper-aanroep
In Joomla 6 is de helper een normale service, geen statische aanroep. De moderne manier om de kruimels op te halen is:
$crumbs = Factory::getApplication()
->bootModule('mod_breadcrumbs', 'site')
->getHelper('BreadcrumbsHelper')
->getBreadcrumbs($params, Factory::getApplication());
De oude statische methoden BreadcrumbsHelper::getList() en getHome() bestaan nog, maar zijn sinds 4.4.0 afgekeurd en worden in Joomla 7.0 verwijderd. Nieuwe code moet de instantiemethoden getBreadcrumbs() en getHomeItem() gebruiken.
9.3 De logica van de Home-kruimel
De helper bouwt de Home-kruimel uit het standaard menu-item voor de huidige taal:
$home = $menu->getDefault(); // of getDefault($langTag) bij meertaligheid
$item->name = $params->get('homeText', 'Home');
$item->link = $home->link . '&Itemid=' . $home->id;
Als showHome uit staat, berekent de helper toch een terugval-Home-item, dat de layout alleen voor de gestructureerde data gebruikt (zie de SEO-sectie). Zo kan het spoor de Home-link visueel verbergen en hem toch in de machineleesbare data houden.
10. Template-overrides en styling
10.1 De standaard-markup
De standaardlayout van Joomla 6 geeft semantische, toegankelijke markup uit op basis van Bootstrap-classes:
<nav class="mod-breadcrumbs__wrapper" aria-label="Breadcrumbs">
<ol class="mod-breadcrumbs breadcrumb px-3 py-2">
<li class="mod-breadcrumbs__item breadcrumb-item">
<a class="pathway" href="/"><span>Home</span></a>
</li>
<li class="mod-breadcrumbs__item breadcrumb-item active">
<span>Huidige pagina</span>
</li>
</ol>
</nav>
De <nav>-wrapper met een aria-label vertelt schermlezers dat dit een navigatielandmark is. De laatste kruimel krijgt de class active. Wil je een nog sterker toegankelijkheidssignaal, dan kan een override aria-current="page" aan de laatste kruimel toevoegen.
10.2 Een override maken
Bewerk om de markup te wijzigen nooit de module. Maak in plaats daarvan een template override. Voor het Cassiopeia-template:
templates/cassiopeia/html/mod_breadcrumbs/default.php
Kopieer het origineel modules/mod_breadcrumbs/tmpl/default.php naar dat pad en bewerk daarna je kopie. Joomla laadt de override automatisch. De Templates-beheerder heeft een ingebouwde editor die deze override voor je maakt:
Systeem → Sitetemplates → [jouw template] → Overrides maken → mod_breadcrumbs
10.3 Stylen zonder een override
Voor eenvoudige visuele wijzigingen heb je helemaal geen override nodig. Gebruik de Module class suffix en richt je in je template-CSS op de standaardclasses:
.mod-breadcrumbs { font-size: 0.9rem; }
.mod-breadcrumbs__item.active span { color: #666; }
.breadcrumb-item + .breadcrumb-item::before { content: "→"; }
Naar boven11. Gestructureerde data en SEO
11.1 Breadcrumbs helpen zoekmachines
Breadcrumbs zijn een van de goedkoopste manieren om je SEO in Joomla te verbeteren. Ze geven zoekmachines een duidelijke kaart van je sitehierarchie, en Google toont vaak het spoor in plaats van de kale URL in de zoekresultaten.
11.2 Ingebouwde gestructureerde data
De Breadcrumbs-module van Joomla 6 geeft automatisch schema.org BreadcrumbList gestructureerde data uit. Hij voegt een JSON-LD-blok toe aan de paginakop, zonder dat configuratie nodig is:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1,
"item": { "@id": "https://example.test/", "name": "Home" } },
{ "@type": "ListItem", "position": 2,
"item": { "@id": "https://example.test/nieuws", "name": "Nieuws" } },
{ "@type": "ListItem", "position": 3,
"item": { "name": "Joomla 6 uitgebracht" } }
]
}
Merk op dat het laatste item een name heeft maar geen @id. Google accepteert een item zonder URL alleen voor de huidige pagina, en Joomla volgt die regel.
11.3 De Home-kruimel zit altijd in de data
Zelfs als je de Home-link visueel verbergt (showHome uit), houdt Joomla de homepage als positie 1 in de gestructureerde data via een terugval-Home-kruimel. Zo krijg je tegelijk een net zichtbaar spoor en complete machineleesbare data.
11.4 Test je markup
Valideer na publicatie de uitvoer met Google's Rich Results Test of de Schema Markup Validator. Een geldige BreadcrumbList kan de breadcrumb-weergave in de zoekresultaten opleveren.
12. Meertalige breadcrumbs
12.1 De Home-kruimel per taal
Op een meertalige website heeft elke taal zijn eigen standaard- (home-)menu-item. De Breadcrumbs-module vraagt naar het standaarditem van de huidige taal:
$home = $menu->getDefault($app->getLanguage()->getTag());
Zo linkt een Nederlandse pagina de Home-kruimel naar de Nederlandse home, en een Engelse pagina naar de Engelse home. Dit werkt alleen als elke actieve taal zijn eigen standaard menu-item heeft, ingesteld met de gele ster.
12.2 Dubbele Home-items voorkomen
Op meertalige sites kan het home-menu-item twee keer verschijnen: een keer uit de Home-kruimel en een keer uit de menustructuur. De standaardlayout detecteert dit en verwijdert het dubbele tweede item, zodat het spoor netjes blijft.
12.3 Vertaalde labels
Elke kruimelnaam komt uit de menu-itemtitel of de inhoudstitel in die taal, dus het spoor wordt automatisch vertaald wanneer je inhoud en menu's correct zijn gekoppeld. Het woord "Home" komt uit het taalbestand of uit de optie homeText, die je per modulekopie kunt instellen en per taal kunt toewijzen.
13. Caching
13.1 Caching per Itemid
Breadcrumbs veranderen op elke pagina, dus het cachen ervan vereist zorg. De module gebruikt de cachemodus itemid, die een apart gecacht spoor per menu-item opslaat. Dit is ingesteld als een verborgen, vaste parameter en is de juiste modus voor deze module.
13.2 Wanneer modulecaching gebruiken
- Laat caching voor een normale site op Globaal gebruiken staan en laat Joomla het beheren.
- Als je dynamische kruimels invoegt vanuit een plugin op basis van de ingelogde gebruiker, zet caching dan op Geen caching zodat het spoor altijd vers is.
- Onthoud dat door componenten toegevoegde kruimels (zoals artikeltitels) afhangen van de volledige URL, niet alleen de
Itemid, dus zware caching van een enkele pagina die veel artikelen serveert kan een verouderd spoor tonen. Het standaardgedrag per Itemid behandelt de gangbare gevallen correct.
14. Veelvoorkomende fouten en valkuilen
14.1 Er verschijnen geen breadcrumbs
Symptoom: er is nergens op de site een spoor.
Oplossing: publiceer de Breadcrumbs-module, zet hem op een echte templatepositie (zoals breadcrumbs in Cassiopeia) en wijs hem toe aan de juiste pagina's.
14.2 Het spoor begint in de verkeerde tak
Symptoom: een artikel toont Home → Verkeerde sectie → Artikel.
Oplossing: de verkeerde Itemid is actief. Link naar de inhoud via het juiste menu-item, of geef de pagina een eigen menu-item. Controleer ook de categorieboom, want artikelkruimels volgen de bovenliggende categorieen.
14.3 Dubbele Home op meertalige sites
Symptoom: het spoor toont Home → Home → ....
Oplossing: dit gebeurt wanneer het home-item zowel in de Home-kruimel als in de menustructuur voorkomt. Modern Joomla verwijdert het dubbele item automatisch; gebruik je een eigen override, zorg dan dat die de ontdubbel-logica uit de standaardlayout behoudt.
14.4 Een kop-kruimel heeft geen link
Symptoom: een tussenliggende kruimel is platte tekst, geen link.
Oplossing: dit is correct gedrag. Menu-items van het type Kop of Scheidingsteken hebben geen pagina, dus Joomla geeft ze als tekst weer. Heb je daar een link nodig, gebruik dan een echt menu-itemtype.
14.5 De laatste kruimel herhaalt de paginatitel
Symptoom: het spoor eindigt met dezelfde tekst als de paginakop, wat overbodig aanvoelt.
Oplossing: zet de optie Laatste (showLast) uit om het spoor bij de bovenliggende pagina te laten eindigen.
14.6 De module bewerkt in plaats van een override
Symptoom: aangepaste breadcrumb-markup verdwijnt na een Joomla-update.
Oplossing: bewerk nooit bestanden in modules/mod_breadcrumbs/. Zet je wijzigingen in een template-override op templates/[template]/html/mod_breadcrumbs/default.php.
15. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Publiceer een Breadcrumbs-module en wijs hem toe aan alle pagina's behalve de homepage.
- Houd een nette, ondiepe categorieboom aan, want artikelkruimels volgen de bovenliggende categorieen.
- Link altijd naar inhoud via een juist menu-item zodat de
Itemidstabiel is. - Beslis een keer of je de laatste kruimel toont en houd dat consistent over de hele site.
- Style en herstructureer breadcrumbs met een template-override, nooit door de module te bewerken.
- Vertrouw op de ingebouwde schema.org-uitvoer en valideer die met Google's Rich Results Test.
- Stel op meertalige sites een standaard menu-item per taal in zodat de Home-kruimel correct wordt bepaald.
16. In het kort
BREADCRUMBS TONEN Publiceer mod_breadcrumbs in een templatepositie
VERBERG OP HOME Menutoewijzing → Alle pagina's behalve Home
"JE BENT HIER" Optie showHere
HOME-KRUIMEL Optie showHome (homeText overschrijft het woord)
LAATSTE KRUIMEL Optie showLast (uit = eindig bij de ouder)
DATABRON $app->getPathway() (Pathway-object, geen tabel)
BASIS VAN SPOOR Actief menu-item + zijn bovenliggende boom
EXTRA KRUIMELS Componenten roepen $pathway->addItem(name, link)
KRUIMEL TOEVOEGEN $app->getPathway()->addItem('Label', 'index.php?...')
PIJPLIJN Router → Menu → Component → Pathway → Module → Template
DB-TABELLEN #__menu (boom), #__modules, #__modules_menu
MARKUP OVERRIDEN templates/[tpl]/html/mod_breadcrumbs/default.php
GESTRUCT. DATA schema.org BreadcrumbList JSON-LD, automatisch
CACHING Modus itemid, een gecacht spoor per menu-item
AFGEKEURDE API BreadcrumbsHelper::getList()/getHome() (gebruik instanties)
Naar boven17. Samenvatting
Joomla-breadcrumbs zijn aan de oppervlakte eenvoudig en onderhuids slim:
- Pathway: de interne lijst met kruimels, bij elke aanvraag opnieuw opgebouwd.
- Menustructuur: het actieve menu-item en zijn ouders vormen de basis van het spoor.
- Componenten: voegen diepere kruimels toe zoals categorie- en artikeltitels via
addItem(). - Pijplijn: router → menu → component → Pathway → module → template.
- Module:
mod_breadcrumbsleest het Pathway en rendert het zichtbare spoor. - SEO: de module geeft automatisch schema.org gestructureerde data uit.
- Itemid: de menu-itemcontext die bepaalt waar het spoor begint.
Zodra je begrijpt dat het spoor je menu- en categoriestructuur weerspiegelt, zijn kapotte breadcrumbs geen mysterie meer. Ze zijn bijna altijd een symptoom van een verkeerde Itemid, een rommelige categorieboom of een ontbrekend menu-item.
Als je breadcrumbs er verkeerd uitzien, je navigatie verwarrend aanvoelt, of je wilt nette gestructureerde data voor betere zoekresultaten, dan loont het om je menustructuur en routing vroeg te bekijken. Krijg de menuboom goed, en breadcrumbs regelen zichzelf.
Naar boven

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.
Veelgestelde vragen
Joomla breadcrumbs ("kruimelpad") zijn een navigatiehulpmiddel die gebruikers het pad laten zien dat ze hebben afgelegd, waardoor de gebruiksvriendelijkheid van de website en de SEO worden verbeterd.
Breadcrumbs verbeteren de interne linkstructuur, helpen zoekmachines de structuur van de website te begrijpen en verschijnen in de zoekresultaten, wat zorgt voor een betere zichtbaarheid.
Ja, je kunt de stijl, de positie en de labels van de breadcrumbs ("kruimelpad") aanpassen aan het ontwerp van je site en de behoeften van je gebruikers.
Ja, de breadcrumbs van Joomla passen zich aan responsieve lay-outs aan, waardoor een soepele gebruikerservaring op alle apparaten wordt gegarandeerd.
Breadcrumbs kunnen worden ingeschakeld via de modulebeheerder, waar u de instellingen kunt aanpassen aan de structuur van uw site.
Nee, breadcrumbs zijn licht qua laadtijd en hebben geen negatieve invloed op de prestaties van de website.


